git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@9875 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -226,22 +226,36 @@ void FixSMD::smd_tether()
|
|||||||
int *mask = atom->mask;
|
int *mask = atom->mask;
|
||||||
int *type = atom->type;
|
int *type = atom->type;
|
||||||
double *mass = atom->mass;
|
double *mass = atom->mass;
|
||||||
|
double *rmass = atom->rmass;
|
||||||
|
double massfrac;
|
||||||
int nlocal = atom->nlocal;
|
int nlocal = atom->nlocal;
|
||||||
|
|
||||||
ftotal[0] = ftotal[1] = ftotal[2] = 0.0;
|
ftotal[0] = ftotal[1] = ftotal[2] = 0.0;
|
||||||
force_flag = 0;
|
force_flag = 0;
|
||||||
|
|
||||||
double massfrac;
|
if (rmass) {
|
||||||
for (int i = 0; i < nlocal; i++)
|
for (int i = 0; i < nlocal; i++)
|
||||||
if (mask[i] & groupbit) {
|
if (mask[i] & groupbit) {
|
||||||
massfrac = mass[type[i]]/masstotal;
|
massfrac = rmass[i]/masstotal;
|
||||||
f[i][0] -= fx*massfrac;
|
f[i][0] -= fx*massfrac;
|
||||||
f[i][1] -= fy*massfrac;
|
f[i][1] -= fy*massfrac;
|
||||||
f[i][2] -= fz*massfrac;
|
f[i][2] -= fz*massfrac;
|
||||||
ftotal[0] -= fx*massfrac;
|
ftotal[0] -= fx*massfrac;
|
||||||
ftotal[1] -= fy*massfrac;
|
ftotal[1] -= fy*massfrac;
|
||||||
ftotal[2] -= fz*massfrac;
|
ftotal[2] -= fz*massfrac;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
for (int i = 0; i < nlocal; i++)
|
||||||
|
if (mask[i] & groupbit) {
|
||||||
|
massfrac = mass[type[i]]/masstotal;
|
||||||
|
f[i][0] -= fx*massfrac;
|
||||||
|
f[i][1] -= fy*massfrac;
|
||||||
|
f[i][2] -= fz*massfrac;
|
||||||
|
ftotal[0] -= fx*massfrac;
|
||||||
|
ftotal[1] -= fy*massfrac;
|
||||||
|
ftotal[2] -= fz*massfrac;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
@ -314,27 +328,48 @@ void FixSMD::smd_couple()
|
|||||||
int *mask = atom->mask;
|
int *mask = atom->mask;
|
||||||
int *type = atom->type;
|
int *type = atom->type;
|
||||||
double *mass = atom->mass;
|
double *mass = atom->mass;
|
||||||
|
double *rmass = atom->rmass;
|
||||||
int nlocal = atom->nlocal;
|
int nlocal = atom->nlocal;
|
||||||
|
|
||||||
ftotal[0] = ftotal[1] = ftotal[2] = 0.0;
|
ftotal[0] = ftotal[1] = ftotal[2] = 0.0;
|
||||||
force_flag = 0;
|
force_flag = 0;
|
||||||
|
|
||||||
double massfrac;
|
double massfrac;
|
||||||
for (int i = 0; i < nlocal; i++) {
|
if (rmass) {
|
||||||
if (mask[i] & groupbit) {
|
for (int i = 0; i < nlocal; i++) {
|
||||||
massfrac = mass[type[i]]/masstotal;
|
if (mask[i] & groupbit) {
|
||||||
f[i][0] += fx*massfrac;
|
massfrac = rmass[i]/masstotal;
|
||||||
f[i][1] += fy*massfrac;
|
f[i][0] += fx*massfrac;
|
||||||
f[i][2] += fz*massfrac;
|
f[i][1] += fy*massfrac;
|
||||||
ftotal[0] += fx*massfrac;
|
f[i][2] += fz*massfrac;
|
||||||
ftotal[1] += fy*massfrac;
|
ftotal[0] += fx*massfrac;
|
||||||
ftotal[2] += fz*massfrac;
|
ftotal[1] += fy*massfrac;
|
||||||
|
ftotal[2] += fz*massfrac;
|
||||||
|
}
|
||||||
|
if (mask[i] & group2bit) {
|
||||||
|
massfrac = rmass[i]/masstotal2;
|
||||||
|
f[i][0] -= fx*massfrac;
|
||||||
|
f[i][1] -= fy*massfrac;
|
||||||
|
f[i][2] -= fz*massfrac;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (mask[i] & group2bit) {
|
} else {
|
||||||
massfrac = mass[type[i]]/masstotal2;
|
for (int i = 0; i < nlocal; i++) {
|
||||||
f[i][0] -= fx*massfrac;
|
if (mask[i] & groupbit) {
|
||||||
f[i][1] -= fy*massfrac;
|
massfrac = mass[type[i]]/masstotal;
|
||||||
f[i][2] -= fz*massfrac;
|
f[i][0] += fx*massfrac;
|
||||||
|
f[i][1] += fy*massfrac;
|
||||||
|
f[i][2] += fz*massfrac;
|
||||||
|
ftotal[0] += fx*massfrac;
|
||||||
|
ftotal[1] += fy*massfrac;
|
||||||
|
ftotal[2] += fz*massfrac;
|
||||||
|
}
|
||||||
|
if (mask[i] & group2bit) {
|
||||||
|
massfrac = mass[type[i]]/masstotal2;
|
||||||
|
f[i][0] -= fx*massfrac;
|
||||||
|
f[i][1] -= fy*massfrac;
|
||||||
|
f[i][2] -= fz*massfrac;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user