do not add langevin thermostat forces and torques if disabled, e.g. in 2d system.
Note that fix rigid/small does not support the force or torque options and thus the zeroing has to be done directly when computing the langevin data.
This commit is contained in:
@ -1098,12 +1098,12 @@ void FixRigid::compute_forces_and_torques()
|
||||
// include Langevin thermostat forces
|
||||
|
||||
for (ibody = 0; ibody < nbody; ibody++) {
|
||||
fcm[ibody][0] = all[ibody][0] + langextra[ibody][0];
|
||||
fcm[ibody][1] = all[ibody][1] + langextra[ibody][1];
|
||||
fcm[ibody][2] = all[ibody][2] + langextra[ibody][2];
|
||||
torque[ibody][0] = all[ibody][3] + langextra[ibody][3];
|
||||
torque[ibody][1] = all[ibody][4] + langextra[ibody][4];
|
||||
torque[ibody][2] = all[ibody][5] + langextra[ibody][5];
|
||||
fcm[ibody][0] = all[ibody][0] + fflag[ibody][0]*langextra[ibody][0];
|
||||
fcm[ibody][1] = all[ibody][1] + fflag[ibody][1]*langextra[ibody][1];
|
||||
fcm[ibody][2] = all[ibody][2] + fflag[ibody][2]*langextra[ibody][2];
|
||||
torque[ibody][0] = all[ibody][3] + tflag[ibody][0]*langextra[ibody][3];
|
||||
torque[ibody][1] = all[ibody][4] + tflag[ibody][1]*langextra[ibody][4];
|
||||
torque[ibody][2] = all[ibody][5] + tflag[ibody][2]*langextra[ibody][5];
|
||||
}
|
||||
|
||||
// add gravity force to COM of each body
|
||||
|
||||
@ -875,6 +875,11 @@ void FixRigidSmall::apply_langevin_thermostat()
|
||||
// convert langevin torques from body frame back to space frame
|
||||
|
||||
MathExtra::matvec(ex_space,ey_space,ez_space,tbody,&langextra[ibody][3]);
|
||||
|
||||
// enforce 2d motion
|
||||
|
||||
if (domain->dimension == 2)
|
||||
langextra[ibody][2] = langextra[ibody][3] = langextra[ibody][4] = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user