USER-DPD: whitespace and indentation fixes
This commit is contained in:
@ -34,10 +34,10 @@ FixDPDenergy::FixDPDenergy(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
|
|
||||||
pairDPDE = NULL;
|
pairDPDE = NULL;
|
||||||
pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy",1);
|
pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy",1);
|
||||||
|
|
||||||
if(pairDPDE == NULL)
|
if (pairDPDE == NULL)
|
||||||
error->all(FLERR,"Must use pair_style dpd/fdt/energy with fix dpd/energy");
|
error->all(FLERR,"Must use pair_style dpd/fdt/energy with fix dpd/energy");
|
||||||
if(!(atom->dpd_flag))
|
if (!(atom->dpd_flag))
|
||||||
error->all(FLERR,"Must use atom_style dpd/fdt/energy with fix dpd/energy");
|
error->all(FLERR,"Must use atom_style dpd/fdt/energy with fix dpd/energy");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -93,129 +93,130 @@ void PairDPDfdt::compute(int eflag, int vflag)
|
|||||||
|
|
||||||
// loop over neighbors of my atoms
|
// loop over neighbors of my atoms
|
||||||
|
|
||||||
if(splitFDT_flag){
|
if (splitFDT_flag) {
|
||||||
for (ii = 0; ii < inum; ii++) {
|
for (ii = 0; ii < inum; ii++) {
|
||||||
i = ilist[ii];
|
i = ilist[ii];
|
||||||
xtmp = x[i][0];
|
xtmp = x[i][0];
|
||||||
ytmp = x[i][1];
|
ytmp = x[i][1];
|
||||||
ztmp = x[i][2];
|
ztmp = x[i][2];
|
||||||
itype = type[i];
|
itype = type[i];
|
||||||
jlist = firstneigh[i];
|
jlist = firstneigh[i];
|
||||||
jnum = numneigh[i];
|
jnum = numneigh[i];
|
||||||
|
|
||||||
for (jj = 0; jj < jnum; jj++) {
|
for (jj = 0; jj < jnum; jj++) {
|
||||||
j = jlist[jj];
|
j = jlist[jj];
|
||||||
factor_dpd = special_lj[sbmask(j)];
|
factor_dpd = special_lj[sbmask(j)];
|
||||||
j &= NEIGHMASK;
|
j &= NEIGHMASK;
|
||||||
|
|
||||||
delx = xtmp - x[j][0];
|
delx = xtmp - x[j][0];
|
||||||
dely = ytmp - x[j][1];
|
dely = ytmp - x[j][1];
|
||||||
delz = ztmp - x[j][2];
|
delz = ztmp - x[j][2];
|
||||||
rsq = delx*delx + dely*dely + delz*delz;
|
rsq = delx*delx + dely*dely + delz*delz;
|
||||||
jtype = type[j];
|
jtype = type[j];
|
||||||
|
|
||||||
if (rsq < cutsq[itype][jtype]) {
|
if (rsq < cutsq[itype][jtype]) {
|
||||||
r = sqrt(rsq);
|
r = sqrt(rsq);
|
||||||
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
||||||
rinv = 1.0/r;
|
rinv = 1.0/r;
|
||||||
wr = 1.0 - r/cut[itype][jtype];
|
wr = 1.0 - r/cut[itype][jtype];
|
||||||
wd = wr*wr;
|
wd = wr*wr;
|
||||||
|
|
||||||
// conservative force = a0 * wr
|
// conservative force = a0 * wr
|
||||||
fpair = a0[itype][jtype]*wr;
|
fpair = a0[itype][jtype]*wr;
|
||||||
fpair *= factor_dpd*rinv;
|
fpair *= factor_dpd*rinv;
|
||||||
|
|
||||||
f[i][0] += delx*fpair;
|
f[i][0] += delx*fpair;
|
||||||
f[i][1] += dely*fpair;
|
f[i][1] += dely*fpair;
|
||||||
f[i][2] += delz*fpair;
|
f[i][2] += delz*fpair;
|
||||||
if (newton_pair || j < nlocal) {
|
if (newton_pair || j < nlocal) {
|
||||||
f[j][0] -= delx*fpair;
|
f[j][0] -= delx*fpair;
|
||||||
f[j][1] -= dely*fpair;
|
f[j][1] -= dely*fpair;
|
||||||
f[j][2] -= delz*fpair;
|
f[j][2] -= delz*fpair;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eflag) {
|
||||||
|
// unshifted eng of conservative term:
|
||||||
|
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
||||||
|
// eng shifted to 0.0 at cutoff
|
||||||
|
evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
|
||||||
|
evdwl *= factor_dpd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (evflag) ev_tally(i,j,nlocal,newton_pair,
|
||||||
|
evdwl,0.0,fpair,delx,dely,delz);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eflag) {
|
|
||||||
// unshifted eng of conservative term:
|
|
||||||
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
|
||||||
// eng shifted to 0.0 at cutoff
|
|
||||||
evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
|
|
||||||
evdwl *= factor_dpd;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (evflag) ev_tally(i,j,nlocal,newton_pair,
|
|
||||||
evdwl,0.0,fpair,delx,dely,delz);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
for (ii = 0; ii < inum; ii++) {
|
for (ii = 0; ii < inum; ii++) {
|
||||||
i = ilist[ii];
|
i = ilist[ii];
|
||||||
xtmp = x[i][0];
|
xtmp = x[i][0];
|
||||||
ytmp = x[i][1];
|
ytmp = x[i][1];
|
||||||
ztmp = x[i][2];
|
ztmp = x[i][2];
|
||||||
vxtmp = v[i][0];
|
vxtmp = v[i][0];
|
||||||
vytmp = v[i][1];
|
vytmp = v[i][1];
|
||||||
vztmp = v[i][2];
|
vztmp = v[i][2];
|
||||||
itype = type[i];
|
itype = type[i];
|
||||||
jlist = firstneigh[i];
|
jlist = firstneigh[i];
|
||||||
jnum = numneigh[i];
|
jnum = numneigh[i];
|
||||||
|
|
||||||
for (jj = 0; jj < jnum; jj++) {
|
for (jj = 0; jj < jnum; jj++) {
|
||||||
j = jlist[jj];
|
j = jlist[jj];
|
||||||
factor_dpd = special_lj[sbmask(j)];
|
factor_dpd = special_lj[sbmask(j)];
|
||||||
j &= NEIGHMASK;
|
j &= NEIGHMASK;
|
||||||
|
|
||||||
delx = xtmp - x[j][0];
|
delx = xtmp - x[j][0];
|
||||||
dely = ytmp - x[j][1];
|
dely = ytmp - x[j][1];
|
||||||
delz = ztmp - x[j][2];
|
delz = ztmp - x[j][2];
|
||||||
rsq = delx*delx + dely*dely + delz*delz;
|
rsq = delx*delx + dely*dely + delz*delz;
|
||||||
jtype = type[j];
|
jtype = type[j];
|
||||||
|
|
||||||
if (rsq < cutsq[itype][jtype]) {
|
if (rsq < cutsq[itype][jtype]) {
|
||||||
r = sqrt(rsq);
|
r = sqrt(rsq);
|
||||||
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
||||||
rinv = 1.0/r;
|
rinv = 1.0/r;
|
||||||
delvx = vxtmp - v[j][0];
|
delvx = vxtmp - v[j][0];
|
||||||
delvy = vytmp - v[j][1];
|
delvy = vytmp - v[j][1];
|
||||||
delvz = vztmp - v[j][2];
|
delvz = vztmp - v[j][2];
|
||||||
dot = delx*delvx + dely*delvy + delz*delvz;
|
dot = delx*delvx + dely*delvy + delz*delvz;
|
||||||
wr = 1.0 - r/cut[itype][jtype];
|
wr = 1.0 - r/cut[itype][jtype];
|
||||||
wd = wr*wr;
|
wd = wr*wr;
|
||||||
randnum = random->gaussian();
|
randnum = random->gaussian();
|
||||||
gamma_ij = sigma[itype][jtype]*sigma[itype][jtype]/(2.0*force->boltz*temperature);
|
gamma_ij = sigma[itype][jtype]*sigma[itype][jtype]
|
||||||
|
/ (2.0*force->boltz*temperature);
|
||||||
|
|
||||||
// conservative force = a0 * wd
|
// conservative force = a0 * wd
|
||||||
// drag force = -gamma * wd^2 * (delx dot delv) / r
|
// drag force = -gamma * wd^2 * (delx dot delv) / r
|
||||||
// random force = sigma * wd * rnd * dtinvsqrt;
|
// random force = sigma * wd * rnd * dtinvsqrt;
|
||||||
|
|
||||||
fpair = a0[itype][jtype]*wr;
|
fpair = a0[itype][jtype]*wr;
|
||||||
fpair -= gamma_ij*wd*dot*rinv;
|
fpair -= gamma_ij*wd*dot*rinv;
|
||||||
fpair += sigma[itype][jtype]*wr*randnum*dtinvsqrt;
|
fpair += sigma[itype][jtype]*wr*randnum*dtinvsqrt;
|
||||||
fpair *= factor_dpd*rinv;
|
fpair *= factor_dpd*rinv;
|
||||||
|
|
||||||
f[i][0] += delx*fpair;
|
f[i][0] += delx*fpair;
|
||||||
f[i][1] += dely*fpair;
|
f[i][1] += dely*fpair;
|
||||||
f[i][2] += delz*fpair;
|
f[i][2] += delz*fpair;
|
||||||
if (newton_pair || j < nlocal) {
|
if (newton_pair || j < nlocal) {
|
||||||
f[j][0] -= delx*fpair;
|
f[j][0] -= delx*fpair;
|
||||||
f[j][1] -= dely*fpair;
|
f[j][1] -= dely*fpair;
|
||||||
f[j][2] -= delz*fpair;
|
f[j][2] -= delz*fpair;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eflag) {
|
||||||
|
// unshifted eng of conservative term:
|
||||||
|
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
||||||
|
// eng shifted to 0.0 at cutoff
|
||||||
|
evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
|
||||||
|
evdwl *= factor_dpd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (evflag) ev_tally(i,j,nlocal,newton_pair,
|
||||||
|
evdwl,0.0,fpair,delx,dely,delz);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eflag) {
|
|
||||||
// unshifted eng of conservative term:
|
|
||||||
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
|
||||||
// eng shifted to 0.0 at cutoff
|
|
||||||
evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
|
|
||||||
evdwl *= factor_dpd;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (evflag) ev_tally(i,j,nlocal,newton_pair,
|
|
||||||
evdwl,0.0,fpair,delx,dely,delz);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (vflag_fdotr) virial_fdotr_compute();
|
if (vflag_fdotr) virial_fdotr_compute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -59,7 +59,7 @@ PairDPDfdtEnergy::~PairDPDfdtEnergy()
|
|||||||
memory->destroy(a0);
|
memory->destroy(a0);
|
||||||
memory->destroy(sigma);
|
memory->destroy(sigma);
|
||||||
memory->destroy(kappa);
|
memory->destroy(kappa);
|
||||||
if(!splitFDT_flag){
|
if (!splitFDT_flag) {
|
||||||
memory->destroy(duCond);
|
memory->destroy(duCond);
|
||||||
memory->destroy(duMech);
|
memory->destroy(duMech);
|
||||||
}
|
}
|
||||||
@ -108,187 +108,189 @@ void PairDPDfdtEnergy::compute(int eflag, int vflag)
|
|||||||
|
|
||||||
// loop over neighbors of my atoms
|
// loop over neighbors of my atoms
|
||||||
|
|
||||||
if(splitFDT_flag){
|
if (splitFDT_flag) {
|
||||||
for (ii = 0; ii < inum; ii++) {
|
for (ii = 0; ii < inum; ii++) {
|
||||||
i = ilist[ii];
|
i = ilist[ii];
|
||||||
xtmp = x[i][0];
|
xtmp = x[i][0];
|
||||||
ytmp = x[i][1];
|
ytmp = x[i][1];
|
||||||
ztmp = x[i][2];
|
ztmp = x[i][2];
|
||||||
itype = type[i];
|
itype = type[i];
|
||||||
jlist = firstneigh[i];
|
jlist = firstneigh[i];
|
||||||
jnum = numneigh[i];
|
jnum = numneigh[i];
|
||||||
|
|
||||||
for (jj = 0; jj < jnum; jj++) {
|
for (jj = 0; jj < jnum; jj++) {
|
||||||
j = jlist[jj];
|
j = jlist[jj];
|
||||||
factor_dpd = special_lj[sbmask(j)];
|
factor_dpd = special_lj[sbmask(j)];
|
||||||
j &= NEIGHMASK;
|
j &= NEIGHMASK;
|
||||||
|
|
||||||
delx = xtmp - x[j][0];
|
delx = xtmp - x[j][0];
|
||||||
dely = ytmp - x[j][1];
|
dely = ytmp - x[j][1];
|
||||||
delz = ztmp - x[j][2];
|
delz = ztmp - x[j][2];
|
||||||
rsq = delx*delx + dely*dely + delz*delz;
|
rsq = delx*delx + dely*dely + delz*delz;
|
||||||
jtype = type[j];
|
jtype = type[j];
|
||||||
|
|
||||||
if (rsq < cutsq[itype][jtype]) {
|
if (rsq < cutsq[itype][jtype]) {
|
||||||
r = sqrt(rsq);
|
r = sqrt(rsq);
|
||||||
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
||||||
rinv = 1.0/r;
|
rinv = 1.0/r;
|
||||||
wr = 1.0 - r/cut[itype][jtype];
|
wr = 1.0 - r/cut[itype][jtype];
|
||||||
wd = wr*wr;
|
wd = wr*wr;
|
||||||
|
|
||||||
// conservative force = a0 * wr
|
// conservative force = a0 * wr
|
||||||
fpair = a0[itype][jtype]*wr;
|
fpair = a0[itype][jtype]*wr;
|
||||||
fpair *= factor_dpd*rinv;
|
fpair *= factor_dpd*rinv;
|
||||||
|
|
||||||
f[i][0] += delx*fpair;
|
f[i][0] += delx*fpair;
|
||||||
f[i][1] += dely*fpair;
|
f[i][1] += dely*fpair;
|
||||||
f[i][2] += delz*fpair;
|
f[i][2] += delz*fpair;
|
||||||
if (newton_pair || j < nlocal) {
|
if (newton_pair || j < nlocal) {
|
||||||
f[j][0] -= delx*fpair;
|
f[j][0] -= delx*fpair;
|
||||||
f[j][1] -= dely*fpair;
|
f[j][1] -= dely*fpair;
|
||||||
f[j][2] -= delz*fpair;
|
f[j][2] -= delz*fpair;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eflag) {
|
||||||
|
// unshifted eng of conservative term:
|
||||||
|
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
||||||
|
// eng shifted to 0.0 at cutoff
|
||||||
|
evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
|
||||||
|
evdwl *= factor_dpd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (evflag) ev_tally(i,j,nlocal,newton_pair,
|
||||||
|
evdwl,0.0,fpair,delx,dely,delz);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eflag) {
|
|
||||||
// unshifted eng of conservative term:
|
|
||||||
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
|
||||||
// eng shifted to 0.0 at cutoff
|
|
||||||
evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
|
|
||||||
evdwl *= factor_dpd;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (evflag) ev_tally(i,j,nlocal,newton_pair,
|
|
||||||
evdwl,0.0,fpair,delx,dely,delz);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Allocate memory for duCond and duMech
|
// Allocate memory for duCond and duMech
|
||||||
if (allocated) {
|
if (allocated) {
|
||||||
memory->destroy(duCond);
|
memory->destroy(duCond);
|
||||||
memory->destroy(duMech);
|
memory->destroy(duMech);
|
||||||
}
|
}
|
||||||
memory->create(duCond,nlocal+nghost,"pair:duCond");
|
memory->create(duCond,nlocal+nghost,"pair:duCond");
|
||||||
memory->create(duMech,nlocal+nghost,"pair:duMech");
|
memory->create(duMech,nlocal+nghost,"pair:duMech");
|
||||||
for (int ii = 0; ii < nlocal+nghost; ii++) {
|
for (int ii = 0; ii < nlocal+nghost; ii++) {
|
||||||
duCond[ii] = double(0.0);
|
duCond[ii] = 0.0;
|
||||||
duMech[ii] = double(0.0);
|
duMech[ii] = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// loop over neighbors of my atoms
|
// loop over neighbors of my atoms
|
||||||
for (int ii = 0; ii < inum; ii++) {
|
for (int ii = 0; ii < inum; ii++) {
|
||||||
i = ilist[ii];
|
i = ilist[ii];
|
||||||
xtmp = x[i][0];
|
xtmp = x[i][0];
|
||||||
ytmp = x[i][1];
|
ytmp = x[i][1];
|
||||||
ztmp = x[i][2];
|
ztmp = x[i][2];
|
||||||
vxtmp = v[i][0];
|
vxtmp = v[i][0];
|
||||||
vytmp = v[i][1];
|
vytmp = v[i][1];
|
||||||
vztmp = v[i][2];
|
vztmp = v[i][2];
|
||||||
itype = type[i];
|
itype = type[i];
|
||||||
jlist = firstneigh[i];
|
jlist = firstneigh[i];
|
||||||
jnum = numneigh[i];
|
jnum = numneigh[i];
|
||||||
|
|
||||||
for (jj = 0; jj < jnum; jj++) {
|
for (jj = 0; jj < jnum; jj++) {
|
||||||
j = jlist[jj];
|
j = jlist[jj];
|
||||||
factor_dpd = special_lj[sbmask(j)];
|
factor_dpd = special_lj[sbmask(j)];
|
||||||
j &= NEIGHMASK;
|
j &= NEIGHMASK;
|
||||||
|
|
||||||
delx = xtmp - x[j][0];
|
delx = xtmp - x[j][0];
|
||||||
dely = ytmp - x[j][1];
|
dely = ytmp - x[j][1];
|
||||||
delz = ztmp - x[j][2];
|
delz = ztmp - x[j][2];
|
||||||
rsq = delx*delx + dely*dely + delz*delz;
|
rsq = delx*delx + dely*dely + delz*delz;
|
||||||
jtype = type[j];
|
jtype = type[j];
|
||||||
|
|
||||||
if (rsq < cutsq[itype][jtype]) {
|
if (rsq < cutsq[itype][jtype]) {
|
||||||
r = sqrt(rsq);
|
r = sqrt(rsq);
|
||||||
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
if (r < EPSILON) continue; // r can be 0.0 in DPD systems
|
||||||
rinv = 1.0/r;
|
rinv = 1.0/r;
|
||||||
wr = 1.0 - r/cut[itype][jtype];
|
wr = 1.0 - r/cut[itype][jtype];
|
||||||
wd = wr*wr;
|
wd = wr*wr;
|
||||||
|
|
||||||
delvx = vxtmp - v[j][0];
|
delvx = vxtmp - v[j][0];
|
||||||
delvy = vytmp - v[j][1];
|
delvy = vytmp - v[j][1];
|
||||||
delvz = vztmp - v[j][2];
|
delvz = vztmp - v[j][2];
|
||||||
dot = delx*delvx + dely*delvy + delz*delvz;
|
dot = delx*delvx + dely*delvy + delz*delvz;
|
||||||
randnum = random->gaussian();
|
randnum = random->gaussian();
|
||||||
|
|
||||||
// Compute the current temperature
|
// Compute the current temperature
|
||||||
theta_ij = double(0.5)*(double(1.0)/dpdTheta[i] + double(1.0)/dpdTheta[j]);
|
theta_ij = 0.5*(1.0/dpdTheta[i] + 1.0/dpdTheta[j]);
|
||||||
theta_ij = double(1.0)/theta_ij;
|
theta_ij = 1.0/theta_ij;
|
||||||
|
|
||||||
gamma_ij = sigma[itype][jtype]*sigma[itype][jtype]/(2.0*force->boltz*theta_ij);
|
gamma_ij = sigma[itype][jtype]*sigma[itype][jtype]
|
||||||
|
/ (2.0*force->boltz*theta_ij);
|
||||||
|
|
||||||
// conservative force = a0 * wr
|
// conservative force = a0 * wr
|
||||||
// drag force = -gamma * wr^2 * (delx dot delv) / r
|
// drag force = -gamma * wr^2 * (delx dot delv) / r
|
||||||
// random force = sigma * wr * rnd * dtinvsqrt;
|
// random force = sigma * wr * rnd * dtinvsqrt;
|
||||||
|
|
||||||
fpair = a0[itype][jtype]*wr;
|
fpair = a0[itype][jtype]*wr;
|
||||||
fpair -= gamma_ij*wd*dot*rinv;
|
fpair -= gamma_ij*wd*dot*rinv;
|
||||||
fpair += sigma[itype][jtype]*wr*randnum*dtinvsqrt;
|
fpair += sigma[itype][jtype]*wr*randnum*dtinvsqrt;
|
||||||
fpair *= factor_dpd*rinv;
|
fpair *= factor_dpd*rinv;
|
||||||
|
|
||||||
f[i][0] += delx*fpair;
|
f[i][0] += delx*fpair;
|
||||||
f[i][1] += dely*fpair;
|
f[i][1] += dely*fpair;
|
||||||
f[i][2] += delz*fpair;
|
f[i][2] += delz*fpair;
|
||||||
if (newton_pair || j < nlocal) {
|
if (newton_pair || j < nlocal) {
|
||||||
f[j][0] -= delx*fpair;
|
f[j][0] -= delx*fpair;
|
||||||
f[j][1] -= dely*fpair;
|
f[j][1] -= dely*fpair;
|
||||||
f[j][2] -= delz*fpair;
|
f[j][2] -= delz*fpair;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rmass) {
|
||||||
|
mass_i = rmass[i];
|
||||||
|
mass_j = rmass[j];
|
||||||
|
} else {
|
||||||
|
mass_i = mass[itype];
|
||||||
|
mass_j = mass[jtype];
|
||||||
|
}
|
||||||
|
massinv_i = 1.0 / mass_i;
|
||||||
|
massinv_j = 1.0 / mass_j;
|
||||||
|
|
||||||
|
// Compute the mechanical and conductive energy, uMech and uCond
|
||||||
|
mu_ij = massinv_i + massinv_j;
|
||||||
|
mu_ij *= force->ftm2v;
|
||||||
|
|
||||||
|
uTmp = gamma_ij*wd*rinv*rinv*dot*dot
|
||||||
|
- 0.5*sigma[itype][jtype]*sigma[itype][jtype]*mu_ij*wd;
|
||||||
|
uTmp -= sigma[itype][jtype]*wr*rinv*dot*randnum*dtinvsqrt;
|
||||||
|
uTmp *= 0.5;
|
||||||
|
|
||||||
|
duMech[i] += uTmp;
|
||||||
|
if (newton_pair || j < nlocal) {
|
||||||
|
duMech[j] += uTmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compute uCond
|
||||||
|
randnum = random->gaussian();
|
||||||
|
kappa_ij = kappa[itype][jtype];
|
||||||
|
alpha_ij = sqrt(2.0*force->boltz*kappa_ij);
|
||||||
|
randPair = alpha_ij*wr*randnum*dtinvsqrt;
|
||||||
|
|
||||||
|
uTmp = kappa_ij*(1.0/dpdTheta[i] - 1.0/dpdTheta[j])*wd;
|
||||||
|
uTmp += randPair;
|
||||||
|
|
||||||
|
duCond[i] += uTmp;
|
||||||
|
if (newton_pair || j < nlocal) {
|
||||||
|
duCond[j] -= uTmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eflag) {
|
||||||
|
// unshifted eng of conservative term:
|
||||||
|
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
||||||
|
// eng shifted to 0.0 at cutoff
|
||||||
|
evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
|
||||||
|
evdwl *= factor_dpd;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (evflag) ev_tally(i,j,nlocal,newton_pair,
|
||||||
|
evdwl,0.0,fpair,delx,dely,delz);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rmass) {
|
|
||||||
mass_i = rmass[i];
|
|
||||||
mass_j = rmass[j];
|
|
||||||
} else {
|
|
||||||
mass_i = mass[itype];
|
|
||||||
mass_j = mass[jtype];
|
|
||||||
}
|
|
||||||
massinv_i = double(1.0) / mass_i;
|
|
||||||
massinv_j = double(1.0) / mass_j;
|
|
||||||
|
|
||||||
// Compute the mechanical and conductive energy, uMech and uCond
|
|
||||||
mu_ij = massinv_i + massinv_j;
|
|
||||||
mu_ij *= force->ftm2v;
|
|
||||||
|
|
||||||
uTmp = gamma_ij*wd*rinv*rinv*dot*dot - double(0.5)*sigma[itype][jtype]*sigma[itype][jtype]*mu_ij*wd;
|
|
||||||
uTmp -= sigma[itype][jtype]*wr*rinv*dot*randnum*dtinvsqrt;
|
|
||||||
uTmp *= double(0.5);
|
|
||||||
|
|
||||||
duMech[i] += uTmp;
|
|
||||||
if (newton_pair || j < nlocal) {
|
|
||||||
duMech[j] += uTmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compute uCond
|
|
||||||
randnum = random->gaussian();
|
|
||||||
kappa_ij = kappa[itype][jtype];
|
|
||||||
alpha_ij = sqrt(2.0*force->boltz*kappa_ij);
|
|
||||||
randPair = alpha_ij*wr*randnum*dtinvsqrt;
|
|
||||||
|
|
||||||
uTmp = kappa_ij*(double(1.0)/dpdTheta[i] - double(1.0)/dpdTheta[j])*wd;
|
|
||||||
uTmp += randPair;
|
|
||||||
|
|
||||||
duCond[i] += uTmp;
|
|
||||||
if (newton_pair || j < nlocal) {
|
|
||||||
duCond[j] -= uTmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (eflag) {
|
|
||||||
// unshifted eng of conservative term:
|
|
||||||
// evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/cut[itype][jtype]);
|
|
||||||
// eng shifted to 0.0 at cutoff
|
|
||||||
evdwl = 0.5*a0[itype][jtype]*cut[itype][jtype] * wd;
|
|
||||||
evdwl *= factor_dpd;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (evflag) ev_tally(i,j,nlocal,newton_pair,
|
|
||||||
evdwl,0.0,fpair,delx,dely,delz);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
// Communicate the ghost delta energies to the locally owned atoms
|
||||||
// Communicate the ghost delta energies to the locally owned atoms
|
comm->reverse_comm_pair(this);
|
||||||
comm->reverse_comm_pair(this);
|
|
||||||
}
|
}
|
||||||
if (vflag_fdotr) virial_fdotr_compute();
|
if (vflag_fdotr) virial_fdotr_compute();
|
||||||
|
|
||||||
@ -316,7 +318,7 @@ void PairDPDfdtEnergy::allocate()
|
|||||||
memory->create(a0,n+1,n+1,"pair:a0");
|
memory->create(a0,n+1,n+1,"pair:a0");
|
||||||
memory->create(sigma,n+1,n+1,"pair:sigma");
|
memory->create(sigma,n+1,n+1,"pair:sigma");
|
||||||
memory->create(kappa,n+1,n+1,"pair:kappa");
|
memory->create(kappa,n+1,n+1,"pair:kappa");
|
||||||
if(!splitFDT_flag){
|
if (!splitFDT_flag) {
|
||||||
memory->create(duCond,nlocal+nghost+1,"pair:duCond");
|
memory->create(duCond,nlocal+nghost+1,"pair:duCond");
|
||||||
memory->create(duMech,nlocal+nghost+1,"pair:duMech");
|
memory->create(duMech,nlocal+nghost+1,"pair:duMech");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user