27 #ifdef MEM_OPT_VERSION 28 NAMD_die(
"Should not be called in BondElem::getMoleculePointers in memory optimized version!");
31 *byatom = mol->bondsByAtom;
32 *structarray = mol->bonds;
57 for (
int ituple=0; ituple<ntuple; ++ituple ) {
58 const BondElem &tup = tuples[ituple];
66 #if defined(DEBUG_PROTOCELL) 77 CkPrintf(
"%11d %11d k=%g r0=%g\n", i, j, k, r0);
85 if (0. ==
value->
k)
continue;
111 if ( drudeBondConst > 0 && r2 > drudeBondLen*drudeBondLen ) {
114 BigReal diff = r - drudeBondLen;
117 scal += -4*drudeBondConst * diff2 * diff / r;
118 energy += drudeBondConst * diff2 * diff2;
129 diff = (r > x1 ? r - x1 : (r > x0 ? 0 : diff));
133 energy = k*diff*diff;
149 energy *= bond_lambda_1;
150 scal *= bond_lambda_1;
155 energy *= bond_lambda_2;
156 scal *= bond_lambda_2;
161 const Force f12 = scal * r12;
168 DebugM(3,
"::computeForce() -- ending with delta energy " << energy << std::endl);
170 reduction[virialIndex_XX] += f12.
x * r12.x;
171 reduction[virialIndex_XY] += f12.
x * r12.y;
172 reduction[virialIndex_XZ] += f12.
x * r12.z;
173 reduction[virialIndex_YX] += f12.
y * r12.x;
174 reduction[virialIndex_YY] += f12.
y * r12.y;
175 reduction[virialIndex_YZ] += f12.
y * r12.z;
176 reduction[virialIndex_ZX] += f12.
z * r12.x;
177 reduction[virialIndex_ZY] += f12.
z * r12.y;
178 reduction[virialIndex_ZZ] += f12.
z * r12.z;
180 if (pressureProfileData) {
193 f12.
x * r12.x, f12.
y * r12.y, f12.
z * r12.z,
194 pressureProfileData);
206 ADD_TENSOR(reduction,REDUCTION_VIRIAL_NORMAL,data,virialIndex);
static void getParameterPointers(Parameters *, const BondValue **)
#define ADD_TENSOR(R, RL, D, DL)
void pp_reduction(int nslabs, int n1, int n2, int atype1, int atype2, int numtypes, BigReal vxx, BigReal vyy, BigReal vzz, BigReal *reduction)
static void getMoleculePointers(Molecule *, int *, int32 ***, Bond **)
static void computeForce(BondElem *, int, BigReal *, BigReal *)
SimParameters * simParameters
static int pressureProfileAtomTypes
Molecule stores the structural information for the system.
static BigReal pressureProfileMin
static BigReal pressureProfileThickness
void pp_clamp(int &n, int nslabs)
NAMD_HOST_DEVICE BigReal length(void) const
NAMD_HOST_DEVICE BigReal length2(void) const
int get_fep_bonded_type(const int *atomID, unsigned int order) const
void NAMD_die(const char *err_msg)
static void submitReductionData(BigReal *, SubmitReduction *)
static int pressureProfileSlabs
NAMD_HOST_DEVICE Vector delta(const Position &pos1, const Position &pos2) const