7 #ifndef KNL_MAKE_DEPENDS_INCLUDE    10 #if (VDW_SWITCH_MODE == VDW_SWITCH_MODE_FORCE) || (VDW_SWITCH_MODE == VDW_SWITCH_MODE_MARTINI)    13 for (k=0; k<npairi; ++k) {      
    14   r2list[k] = r2list_f[k] + r2_delta;
    31 #ifndef __INTEL_LLVM_COMPILER    35 #if ( FULL( EXCLUDED( SHORT( 1+ ) ) ) 0 )     41 #if __INTEL_COMPILER_BUILD_DATE == 20160721    42 #warning disabled simd pragma on innner loop due to compiler segfault    44 #pragma omp simd SHORT(FAST(reduction(+:f_i_x,f_i_y,f_i_z)) ENERGY(FAST(reduction(+:vdwEnergy) SHORT(reduction(+:electEnergy))))) \    45              FULL(reduction(+:fullf_i_x,fullf_i_y,fullf_i_z) ENERGY(reduction(+:fullElectEnergy)))    48 #pragma loop_count avg=100    50 #pragma loop_count avg=4    53     for (k=0; k<npairi; ++k) {      
    55       const float r2 = r2list_f[k];
    56       const float r_1 = 1.f / sqrtf(r2);
    57       const float r_2 = r_1 * r_1;
    58       const float knl_table_r_1 = 
    59         r_1 > KNL_TABLE_MAX_R_1 ? KNL_TABLE_MAX_R_1 : r_1;
    60       const float knl_table_f = (KNL_TABLE_FACTOR-2) * knl_table_r_1;
    61       const int knl_table_i = knl_table_f;
    62       const float knl_diff = knl_table_f - knl_table_i;
    64       const int j = pairlisti[k];
    67 #define pFlt_j (pFlt_1+j)    69 #if (VDW_SWITCH_MODE == VDW_SWITCH_MODE_FORCE) || (VDW_SWITCH_MODE == VDW_SWITCH_MODE_MARTINI)    71       int table_i = (r2iilist[2*k] >> 14) + r2_delta_expc;  
    73       float diffa = r2list[k] - r2_table[table_i];
    75 #define table_four_i (table_four + 16*table_i)    82 #define lj_pars (lj_row+lj_index)    91 #define fullf_j (fullf_1+j)    94       float kqq = kq_i_f * 
p_j->charge;
    96       LES( 
float lambda_pair = lambda_table_i[
p_j->partition]; )
    98       register const float p_ij_x = xlist[k];
    99       register const float p_ij_y = ylist[k];
   100       register const float p_ij_z = zlist[k];
   102       const float A = scaling_f * 
lj_pars->A;
   103       const float B = scaling_f * 
lj_pars->B;
   105 #if VDW_SWITCH_MODE == VDW_SWITCH_MODE_FORCE   106       { 
int vdw_switch_mode_force; }  
   109         const float r_6 = r_2 * r_2 * r_2;
   110         float vdwa_energy, vdwb_energy, vdwa_gradient, vdwb_gradient;
   112         if ( r2 > switchOn2_f ) {
   113           const float tmpa = r_6 - cutoff_6_f;
   114           vdwa_energy = k_vdwa_f * tmpa * tmpa;
   115           const float tmpb = r_1 * r_2 - cutoff_3_f;
   116           vdwb_energy = k_vdwb_f * tmpb * tmpb;
   117           vdwa_gradient = -6.f * k_vdwa_f * tmpa * r_2 * r_6;
   118           vdwb_gradient = -3.f * k_vdwb_f * tmpb * r_2 * r_2 * r_1;
   120           const float r_12 = r_6 * r_6;
   121           vdwa_energy = r_12 + v_vdwa_f;
   122           vdwb_energy = r_6 + v_vdwb_f;
   123           vdwa_gradient = -6.f * r_2 * r_12;
   124           vdwb_gradient = -3.f * r_2 * r_6;
   126         vdw_b = -2.f * ( A * vdwa_gradient - B * vdwb_gradient );
   128           vdwEnergy += A * vdwa_energy - B * vdwb_energy;
   131 #elif VDW_SWITCH_MODE == VDW_SWITCH_MODE_MARTINI   132       { 
int vdw_switch_mode_martini; }  
   135         const float r = r2 * r_1;
   136         const float r12 = (r-switchOn_f)*(r-switchOn_f);
   137         const float r13 = (r-switchOn_f)*(r-switchOn_f)*(r-switchOn_f);
   140           const float LJshifttempA = -(1.f/3.f)*A12_f*r13 - (1.f/4.f)*B12_f*r12*r12 - C12_f;
   141           const float LJshifttempB = -(1.f/3.f)*A6_f*r13 - (1.f/4.f)*B6_f*r12*r12 - C6_f;
   142           const float shiftValA = ( r > switchOn_f ? LJshifttempA : -C12_f);
   143           const float shiftValB = ( r > switchOn_f ? LJshifttempB : -C6_f);
   146         const float LJdshifttempA = -A12_f*r12 - B12_f*r13;
   147         const float LJdshifttempB = -A6_f*r12 - B6_f*r13;
   148         const float dshiftValA = ( r > switchOn_f ? LJdshifttempA*0.5f*r_1 : 0 );
   149         const float dshiftValB = ( r > switchOn_f ? LJdshifttempB*0.5f*r_1 : 0 );
   151         const float r_6 = r_2 * r_2 * r_2;
   152         const float r_12 = r_6 * r_6;
   155           const float vdwa_energy = r_12 + shiftValA;
   156           const float vdwb_energy = r_6 + shiftValB;
   159         const float vdwa_gradient = -6.f * r_2 * r_12 + dshiftValA ;
   160         const float vdwb_gradient = -3.f * r_2 * r_6 + dshiftValB;
   162         vdw_b = -2.f * ( A * vdwa_gradient - B * vdwb_gradient );
   164           vdwEnergy += A * vdwa_energy - B * vdwb_energy;
   167 #elif VDW_SWITCH_MODE == VDW_SWITCH_MODE_ENERGY   168       { 
int vdw_switch_mode_energy; }  
   171         const float r_6 = r_2 * r_2 * r_2;
   172         const float r_12 = r_6 * r_6;
   173         const float c2 = cutoff2_f-r2;
   174         const float c4 = c2*(c3_f-2.f*c2);
   175         const float switchVal =         
   176                         ( r2 > switchOn2_f ? c2*c4*c1_f : 1.f );
   177         const float dSwitchVal =        
   178                         ( r2 > switchOn2_f ? 2.f*c1_f*(c2*c2-c4) : 0.f );
   179         const float vdwa_gradient = ( dSwitchVal - 6.f * switchVal * r_2 ) * r_12;
   180         const float vdwb_gradient = ( dSwitchVal - 3.f * switchVal * r_2 ) * r_6;
   181         vdw_b = -2.f * ( A * vdwa_gradient - B * vdwb_gradient );
   183           vdwEnergy += switchVal * ( A * r_12 - B * r_6 );
   187 #error VDW_SWITCH_MODE not recognized   188 #endif  // VDW_SWITCH_MODE   190 #if ( SHORT(1+) 0 ) // Short-range electrostatics   193       float fast_b = kqq * ( knl_fast_grad_table[knl_table_i] * (1.f-knl_diff) +
   194                              knl_fast_grad_table[knl_table_i+1] * knl_diff );
   199         float fast_val = kqq * ( knl_fast_ener_table[knl_table_i] * (1.f-knl_diff) +
   200                                  knl_fast_ener_table[knl_table_i+1] * knl_diff );
   208       float fast_dir = fast_b;
   210       float force_r =  
LAM(lambda_pair *) fast_dir;
   227   #if ( SHORT( 1+ ) 0 )   228       float slow_b = kqq * ( knl_scor_grad_table[knl_table_i] * (1.f-knl_diff) +
   229                              knl_scor_grad_table[knl_table_i+1] * knl_diff );
   231         float slow_val = kqq * ( knl_scor_ener_table[knl_table_i] * (1.f-knl_diff) +
   232                                  knl_scor_ener_table[knl_table_i+1] * knl_diff );
   235       float slow_b = kqq * ( knl_corr_grad_table[knl_table_i] * (1.f-knl_diff) +
   236                              knl_corr_grad_table[knl_table_i+1] * knl_diff );
   238         float slow_val = kqq * ( knl_corr_ener_table[knl_table_i] * (1.f-knl_diff) +
   239                                  knl_corr_ener_table[knl_table_i+1] * knl_diff );
   244         fullElectEnergy -= 
LAM(lambda_pair *) slow_val;
   251       register float slow_dir = slow_b;
   252       float fullforce_r = slow_dir 
LAM(* lambda_pair);
   276 #endif // KNL_MAKE_DEPENDS_INCLUDE 
register BigReal electEnergy
 
register const BigReal p_ij_z
 
TABENERGY(register const int tabtype=-1 -(lj_pars->A< 0 ? lj_pars->A :0);) BigReal kqq
 
register const BigReal p_ij_x
 
k< npairi;++k) { TABENERGY(const int numtypes=simParams->tableNumTypes;const float table_spacing=simParams->tableSpacing;const int npertype=(int)(namdnearbyint(simParams->tableMaxDist/simParams->tableSpacing)+1);) int table_i=(r2iilist[2 *k] >> 14)+r2_delta_expc;const int j=pairlisti[k];#define p_j #define pExt_j_m BigReal diffa=r2list[k] - r2_table[table_i];#define table_four_i const int lj_index=2 *p_j-> vdwType MODIFIED(+1)
 
ALCHPAIR(myLambda=ALCH1(lambdaUp) ALCH2(lambdaDown) ALCH3(lambdaUp) ALCH4(lambdaDown);FEP(myLambda2=ALCH1(lambda2Up) ALCH2(lambda2Down) ALCH3(lambda2Up) ALCH4(lambda2Down);) myElecLambda=ALCH1(elecLambdaUp) ALCH2(elecLambdaDown) ALCH3(elecLambdaUp) ALCH4(elecLambdaDown);FEP(myElecLambda2=ALCH1(elecLambda2Up) ALCH2(elecLambda2Down) ALCH3(elecLambda2Up) ALCH4(elecLambda2Down);) myVdwLambda=ALCH1(vdwLambdaUp) ALCH2(vdwLambdaDown) ALCH3(vdwLambdaUp) ALCH4(vdwLambdaDown);FEP(myVdwLambda2=ALCH1(vdwLambda2Up) ALCH2(vdwLambda2Down) ALCH3(vdwLambda2Up) ALCH4(vdwLambda2Down);) ALCH1(myRepLambda=repLambdaUp) ALCH2(myRepLambda=repLambdaDown);FEP(ALCH1(myRepLambda2=repLambda2Up) ALCH2(myRepLambda2=repLambda2Down);) ALCH1(myVdwShift=vdwShiftUp) ALCH2(myVdwShift=vdwShiftDown);FEP(ALCH1(myVdwShift2=vdwShift2Up) ALCH2(myVdwShift2=vdwShift2Down);)) for(k=0
 
register const BigReal p_ij_y