60
61
if (strcmp(arg[argoffs],"cvel") == 0) {
61
62
if (narg < argoffs+3) error->all(FLERR,"Illegal fix smd command");
62
63
styleflag |= SMD_CVEL;
63
k_smd = atof(arg[argoffs+1]);
64
v_smd = atof(arg[argoffs+2]); // to be multiplied by update->dt when used.
64
k_smd = force->numeric(FLERR,arg[argoffs+1]);
65
v_smd = force->numeric(FLERR,arg[argoffs+2]); // to be multiplied by update->dt when used.
66
67
} else if (strcmp(arg[argoffs],"cfor") == 0) {
67
68
if (narg < argoffs+2) error->all(FLERR,"Illegal fix smd command");
68
69
styleflag |= SMD_CFOR;
69
f_smd = atof(arg[argoffs+1]);
70
f_smd = force->numeric(FLERR,arg[argoffs+1]);
71
72
} else error->all(FLERR,"Illegal fix smd command");
74
75
if (narg < argoffs+5) error->all(FLERR,"Illegal fix smd command");
75
76
styleflag |= SMD_TETHER;
76
77
if (strcmp(arg[argoffs+1],"NULL") == 0) xflag = 0;
77
else xc = atof(arg[argoffs+1]);
78
else xc = force->numeric(FLERR,arg[argoffs+1]);
78
79
if (strcmp(arg[argoffs+2],"NULL") == 0) yflag = 0;
79
else yc = atof(arg[argoffs+2]);
80
else yc = force->numeric(FLERR,arg[argoffs+2]);
80
81
if (strcmp(arg[argoffs+3],"NULL") == 0) zflag = 0;
81
else zc = atof(arg[argoffs+3]);
82
r0 = atof(arg[argoffs+4]);
82
else zc = force->numeric(FLERR,arg[argoffs+3]);
83
r0 = force->numeric(FLERR,arg[argoffs+4]);
83
84
if (r0 < 0) error->all(FLERR,"R0 < 0 for fix smd command");
85
86
} else if (strcmp(arg[argoffs],"couple") == 0) {
95
96
if (strcmp(arg[argoffs+2],"NULL") == 0) xflag = 0;
96
97
else if (strcmp(arg[argoffs+2],"auto") == 0) styleflag |= SMD_AUTOX;
97
else xc = atof(arg[argoffs+2]);
98
else xc = force->numeric(FLERR,arg[argoffs+2]);
98
99
if (strcmp(arg[argoffs+3],"NULL") == 0) yflag = 0;
99
100
else if (strcmp(arg[argoffs+3],"auto") == 0) styleflag |= SMD_AUTOY;
100
else yc = atof(arg[argoffs+3]);
101
else yc = force->numeric(FLERR,arg[argoffs+3]);
101
102
if (strcmp(arg[argoffs+4],"NULL") == 0) zflag = 0;
102
103
else if (strcmp(arg[argoffs+4],"auto") == 0) styleflag |= SMD_AUTOZ;
103
else zc = atof(arg[argoffs+4]);
104
else zc = force->numeric(FLERR,arg[argoffs+4]);
105
r0 = atof(arg[argoffs+5]);
106
r0 = force->numeric(FLERR,arg[argoffs+5]);
106
107
if (r0 < 0) error->all(FLERR,"R0 < 0 for fix smd command");
108
109
} else error->all(FLERR,"Illegal fix smd command");
226
227
int *mask = atom->mask;
227
228
int *type = atom->type;
228
229
double *mass = atom->mass;
230
double *rmass = atom->rmass;
229
232
int nlocal = atom->nlocal;
231
234
ftotal[0] = ftotal[1] = ftotal[2] = 0.0;
235
for (int i = 0; i < nlocal; i++)
236
if (mask[i] & groupbit) {
237
massfrac = mass[type[i]]/masstotal;
238
f[i][0] -= fx*massfrac;
239
f[i][1] -= fy*massfrac;
240
f[i][2] -= fz*massfrac;
241
ftotal[0] -= fx*massfrac;
242
ftotal[1] -= fy*massfrac;
243
ftotal[2] -= fz*massfrac;
238
for (int i = 0; i < nlocal; i++)
239
if (mask[i] & groupbit) {
240
massfrac = rmass[i]/masstotal;
241
f[i][0] -= fx*massfrac;
242
f[i][1] -= fy*massfrac;
243
f[i][2] -= fz*massfrac;
244
ftotal[0] -= fx*massfrac;
245
ftotal[1] -= fy*massfrac;
246
ftotal[2] -= fz*massfrac;
249
for (int i = 0; i < nlocal; i++)
250
if (mask[i] & groupbit) {
251
massfrac = mass[type[i]]/masstotal;
252
f[i][0] -= fx*massfrac;
253
f[i][1] -= fy*massfrac;
254
f[i][2] -= fz*massfrac;
255
ftotal[0] -= fx*massfrac;
256
ftotal[1] -= fy*massfrac;
257
ftotal[2] -= fz*massfrac;
247
262
/* ---------------------------------------------------------------------- */
314
329
int *mask = atom->mask;
315
330
int *type = atom->type;
316
331
double *mass = atom->mass;
332
double *rmass = atom->rmass;
317
333
int nlocal = atom->nlocal;
319
335
ftotal[0] = ftotal[1] = ftotal[2] = 0.0;
323
for (int i = 0; i < nlocal; i++) {
324
if (mask[i] & groupbit) {
325
massfrac = mass[type[i]]/masstotal;
326
f[i][0] += fx*massfrac;
327
f[i][1] += fy*massfrac;
328
f[i][2] += fz*massfrac;
329
ftotal[0] += fx*massfrac;
330
ftotal[1] += fy*massfrac;
331
ftotal[2] += fz*massfrac;
340
for (int i = 0; i < nlocal; i++) {
341
if (mask[i] & groupbit) {
342
massfrac = rmass[i]/masstotal;
343
f[i][0] += fx*massfrac;
344
f[i][1] += fy*massfrac;
345
f[i][2] += fz*massfrac;
346
ftotal[0] += fx*massfrac;
347
ftotal[1] += fy*massfrac;
348
ftotal[2] += fz*massfrac;
350
if (mask[i] & group2bit) {
351
massfrac = rmass[i]/masstotal2;
352
f[i][0] -= fx*massfrac;
353
f[i][1] -= fy*massfrac;
354
f[i][2] -= fz*massfrac;
333
if (mask[i] & group2bit) {
334
massfrac = mass[type[i]]/masstotal2;
335
f[i][0] -= fx*massfrac;
336
f[i][1] -= fy*massfrac;
337
f[i][2] -= fz*massfrac;
358
for (int i = 0; i < nlocal; i++) {
359
if (mask[i] & groupbit) {
360
massfrac = mass[type[i]]/masstotal;
361
f[i][0] += fx*massfrac;
362
f[i][1] += fy*massfrac;
363
f[i][2] += fz*massfrac;
364
ftotal[0] += fx*massfrac;
365
ftotal[1] += fy*massfrac;
366
ftotal[2] += fz*massfrac;
368
if (mask[i] & group2bit) {
369
massfrac = mass[type[i]]/masstotal2;
370
f[i][0] -= fx*massfrac;
371
f[i][1] -= fy*massfrac;
372
f[i][2] -= fz*massfrac;