17 #define CALCULATE_ANISO 28 #ifdef MEM_OPT_VERSION 29 NAMD_die(
"Should not be called in AnisoElem::getMoleculePointers in memory optimized version!");
32 *byatom = mol->anisosByAtom;
33 *structarray = mol->anisos;
58 for (
int ituple=0; ituple<ntuple; ++ituple ) {
71 #ifdef CALCULATE_ANISO 91 Vector u1 = r_il * r_il_invlen;
92 Vector u2 = r_mn * r_mn_invlen;
104 eaniso = 0.5*kpar0*dpar*dpar + 0.5*kperp0*dperp*dperp + 0.5*kiso0*(dr*dr);
111 fj -= kpar0 * dpar * u1;
112 fj -= kperp0 * dperp * u2;
115 Vector fl = kpar0 * dpar * r_il_invlen * dr;
116 fl -= kpar0 * dpar * dpar * r_il_invlen * u1;
119 Vector fm = kperp0 * dperp * dperp * r_mn_invlen * u2;
120 fm -= kperp0 * dperp * r_mn_invlen * dr;
129 eaniso *= bond_lambda_1;
137 eaniso *= bond_lambda_2;
157 reduction[virialIndex_XX] += fj.
x * dr.x - fl.
x * r_il.
x + fm.
x * r_mn.
x;
158 reduction[virialIndex_XY] += fj.x * dr.y - fl.
x * r_il.
y + fm.
x * r_mn.
y;
159 reduction[virialIndex_XZ] += fj.x * dr.z - fl.
x * r_il.
z + fm.
x * r_mn.
z;
160 reduction[virialIndex_YX] += fj.y * dr.x - fl.
y * r_il.
x + fm.
y * r_mn.
x;
161 reduction[virialIndex_YY] += fj.y * dr.y - fl.
y * r_il.
y + fm.
y * r_mn.
y;
162 reduction[virialIndex_YZ] += fj.y * dr.z - fl.
y * r_il.
z + fm.
y * r_mn.
z;
163 reduction[virialIndex_ZX] += fj.z * dr.x - fl.
z * r_il.
x + fm.
z * r_mn.
x;
164 reduction[virialIndex_ZY] += fj.z * dr.y - fl.
z * r_il.
y + fm.
z * r_mn.
y;
165 reduction[virialIndex_ZZ] += fj.z * dr.z - fl.
z * r_il.
z + fm.
z * r_mn.
z;
168 if (pressureProfileData) {
191 pj, pi, pt, fj.x * dr.x, fj.y * dr.y, fj.z * dr.z,
192 pressureProfileData);
194 pi, pl, pt, -fl.
x * r_il.
x, -fl.
y * r_il.
y, -fl.
z * r_il.
z,
195 pressureProfileData);
197 pm, pn, pt, fm.
x * r_mn.
x, fm.
y * r_mn.
y, fm.
z * r_mn.
z,
198 pressureProfileData);
212 ADD_TENSOR(reduction,REDUCTION_VIRIAL_NORMAL,data,virialIndex);
#define ADD_TENSOR(R, RL, D, DL)
int numAnisos
Number of anisotropic terms.
void pp_reduction(int nslabs, int n1, int n2, int atype1, int atype2, int numtypes, BigReal vxx, BigReal vyy, BigReal vzz, BigReal *reduction)
static BigReal pressureProfileMin
SimParameters * simParameters
static int pressureProfileSlabs
Molecule stores the structural information for the system.
static void computeForce(AnisoElem *, int, BigReal *, BigReal *)
static BigReal pressureProfileThickness
void pp_clamp(int &n, int nslabs)
int get_fep_bonded_type(const int *atomID, unsigned int order) const
void NAMD_die(const char *err_msg)
static int pressureProfileAtomTypes
static void submitReductionData(BigReal *, SubmitReduction *)
NAMD_HOST_DEVICE BigReal rlength(void) const
static void getMoleculePointers(Molecule *, int *, int32 ***, Aniso **)
NAMD_HOST_DEVICE Vector delta(const Position &pos1, const Position &pos2) const
static void getParameterPointers(Parameters *, const AnisoValue **)