23   BigReal U, F, dU, switchmul, switchmul2;
    50     const BigReal Rmin2 = (B <= 0.0 ? 0.0 : powf(2.0*A/B, 1.f/3));
    51     if (myRepLambda < 1.0) {
    55       const BigReal WCAshift = Rmin2*(1 - myRepLambda)*(1 - myRepLambda);
    56       if (r2 <= Rmin2 - WCAshift) {
    57         const BigReal epsilon = B*B/(4.0*A);
    59         *alch_vdw_energy = U + epsilon;
    61         *alch_vdw_dUdl = Rmin2*(1 - myRepLambda)*F;
    63         *alch_vdw_energy = 0.0;
    64         *alch_vdw_force = 0.0;
    68       if (vdwForceSwitching) {
    72           const BigReal epsilon = B*B/(4.0*A); 
    75           *alch_vdw_energy = U + (1 - myVdwLambda)*epsilon + myVdwLambda*dU;
    77           *alch_vdw_dUdl = dU - epsilon;
    78         } 
else if (r2 <= switchdist2) {
    82           *alch_vdw_energy = myVdwLambda*(U + dU);
    83           *alch_vdw_force = myVdwLambda*F;
    84           *alch_vdw_dUdl = U + dU;
    88           *alch_vdw_energy = myVdwLambda*U;
    89           *alch_vdw_force = myVdwLambda*F;
    96           const BigReal epsilon = B*B/(4.0*A);
    98           *alch_vdw_energy = U + (1 - myVdwLambda)*epsilon;
   100           *alch_vdw_dUdl = -epsilon;
   103           vdw_switch(r2, switchdist2, cutoff2, switchfactor, &switchmul, \
   106           *alch_vdw_energy = myVdwLambda*switchmul*U;
   107           *alch_vdw_force = myVdwLambda*(switchmul*F + switchmul2*U);
   108           *alch_vdw_dUdl = switchmul*U;
   113     if (vdwForceSwitching) {
   115       if (r2 <= switchdist2) {
   119         *alch_vdw_energy = myVdwLambda*(U + dU);
   120         *alch_vdw_force = myVdwLambda*F;
   121         *alch_vdw_dUdl = U + 0.5*myVdwLambda*alchVdwShiftCoeff*F + dU;
   124             switchdist2 + myVdwShift, cutoff2, &U, &F);
   125         *alch_vdw_energy = myVdwLambda*U;
   126         *alch_vdw_force = myVdwLambda*F;
   127         *alch_vdw_dUdl = U + 0.5*myVdwLambda*alchVdwShiftCoeff*F;
   131       vdw_switch(r2, switchdist2, cutoff2, switchfactor, &switchmul, \
   134       *alch_vdw_energy = myVdwLambda*switchmul*U;
   135       *alch_vdw_force = myVdwLambda*(switchmul*F + switchmul2*U);
   136       *alch_vdw_dUdl = switchmul*(U + 0.5*myVdwLambda*alchVdwShiftCoeff*F);
   146 #define NBTYPE NBPAIR   159 #define NBTYPE NBSELF   174 #define NBTYPE NBPAIR   187 #define NBTYPE NBSELF void vdw_forceandenergy(const BigReal A, const BigReal B, const BigReal r2, BigReal *U, BigReal *F)
 
void vdw_switch(const BigReal r2, const BigReal switchdist2, const BigReal cutoff2, const BigReal switchfactor, BigReal *switchmul, BigReal *switchmul2)
 
void vdw_fswitch_forceandenergy(const BigReal A, const BigReal B, const BigReal r2, const BigReal switchdist2, const BigReal cutoff2, BigReal *U, BigReal *F)
 
void ti_vdw_force_energy_dUdl(BigReal A, BigReal B, BigReal r2, BigReal myVdwShift, BigReal switchdist2, BigReal cutoff2, BigReal switchfactor, Bool vdwForceSwitching, BigReal myVdwLambda, BigReal alchVdwShiftCoeff, Bool alchWCAOn, BigReal myRepLambda, BigReal *alch_vdw_energy, BigReal *alch_vdw_force, BigReal *alch_vdw_dUdl)
 
void vdw_fswitch_shift(const BigReal A, const BigReal B, const BigReal switchdist2, const BigReal cutoff2, BigReal *dU)