23   BigReal U, F, U_2, dU, dU_2, switchmul, switchmul2;
    34     const BigReal Rmin2 = (B <= 0.0 ? 0.0 : powf(2.0*A/B, 1.f/3));
    35     if (myRepLambda < 1.0) {
    39       const BigReal WCAshift = Rmin2*(1 - myRepLambda)*(1 - myRepLambda);
    40       if (r2 <= Rmin2 - WCAshift) {
    41         const BigReal epsilon = B*B/(4.0*A);
    43         *alch_vdw_energy = U + epsilon;
    46         *alch_vdw_energy = 0.0;
    47         *alch_vdw_force = 0.0;
    50       if (vdwForceSwitching) {
    54           const BigReal epsilon = B*B/(4.0*A);
    57           *alch_vdw_energy = U + (1 - myVdwLambda)*epsilon + myVdwLambda*dU;
    59         } 
else if (r2 <= switchdist2) {
    63           *alch_vdw_energy = myVdwLambda*(U + dU);
    64           *alch_vdw_force = myVdwLambda*F;
    68           *alch_vdw_energy = myVdwLambda*U;
    69           *alch_vdw_force = myVdwLambda*F;
    75           const BigReal epsilon = B*B/(4.0*A);
    77           *alch_vdw_energy = U + (1 - myVdwLambda)*epsilon;
    81           vdw_switch(r2, switchdist2, cutoff2, switchfactor, &switchmul, \
    84           *alch_vdw_energy = myVdwLambda*switchmul*U;
    85           *alch_vdw_force = myVdwLambda*(switchmul*F + switchmul2*U);
    89     if (myRepLambda2 < 1.0) {
    92       const BigReal WCAshift_2 = Rmin2*(1 - myRepLambda2)*(1 - myRepLambda2);
    93       if (r2 <= Rmin2 - WCAshift_2) {
    94         const BigReal epsilon = B*B/(4.0*A);
    96         *alch_vdw_energy_2 = U_2 + epsilon;
    98         *alch_vdw_energy_2 = 0.0;
   101       if (vdwForceSwitching) {
   105           const BigReal epsilon = B*B/(4.0*A);
   108           *alch_vdw_energy_2 = \
   109               U_2 + (1 - myVdwLambda2)*epsilon + myVdwLambda2*dU_2;
   110         } 
else if (r2 <= switchdist2) {
   114           *alch_vdw_energy_2 = myVdwLambda2*(U_2 + dU_2);
   117           *alch_vdw_energy_2 = myVdwLambda2*U_2;
   123           const BigReal epsilon = B*B/(4.0*A);
   125           *alch_vdw_energy_2 = U_2 + (1 - myVdwLambda2)*epsilon;
   128           vdw_switch(r2, switchdist2, cutoff2, switchfactor, &switchmul, \
   131           *alch_vdw_energy_2 = myVdwLambda2*switchmul*U_2;
   136     if (vdwForceSwitching) {
   138       if (r2 <= switchdist2) {
   144         *alch_vdw_energy = myVdwLambda*(U + dU);
   145         *alch_vdw_energy_2 = myVdwLambda2*(U_2 + dU_2);
   146         *alch_vdw_force = myVdwLambda*F;
   149             switchdist2 + myVdwShift, cutoff2, &U, &F);
   152         *alch_vdw_energy = myVdwLambda*U;
   153         *alch_vdw_energy_2 = myVdwLambda2*U_2;
   154         *alch_vdw_force = myVdwLambda*F;
   158       vdw_switch(r2, switchdist2, cutoff2, switchfactor, &switchmul, \
   162       *alch_vdw_energy = myVdwLambda*switchmul*U;
   163       *alch_vdw_energy_2 = myVdwLambda2*switchmul*U_2;
   164       *alch_vdw_force = myVdwLambda*(switchmul*F + switchmul2*U);
   172 #define NBTYPE NBPAIR   185 #define NBTYPE NBSELF void vdw_fswitch_energy(const BigReal A, const BigReal B, const BigReal r2, const BigReal switchdist2, const BigReal cutoff2, BigReal *U)
 
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 fep_vdw_forceandenergies(BigReal A, BigReal B, BigReal r2, BigReal myVdwShift, BigReal myVdwShift2, BigReal switchdist2, BigReal cutoff2, BigReal switchfactor, Bool vdwForceSwitching, BigReal myVdwLambda, BigReal myVdwLambda2, Bool alchWCAOn, BigReal myRepLambda, BigReal myRepLambda2, BigReal *alch_vdw_energy, BigReal *alch_vdw_force, BigReal *alch_vdw_energy_2)
 
void vdw_energy(const BigReal A, const BigReal B, const BigReal r2, BigReal *U)
 
void vdw_fswitch_shift(const BigReal A, const BigReal B, const BigReal switchdist2, const BigReal cutoff2, BigReal *dU)