29   extern void send_build_mic_force_table();
    60   BigReal*      ComputeNonbondedUtil::mic_table_base_ptr;
    61   int           ComputeNonbondedUtil::mic_table_n;
    62   int           ComputeNonbondedUtil::mic_table_n_16;
    65 int             ComputeNonbondedUtil::avxTilesMode;
    66 float*          ComputeNonbondedUtil::avx_tiles_eps4_sigma = 0;
    67 float*          ComputeNonbondedUtil::avx_tiles_eps4_sigma_14 = 0;
    69 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES)    70 float*          ComputeNonbondedUtil::knl_table_alloc;
    71 float*          ComputeNonbondedUtil::knl_fast_ener_table;
    72 float*          ComputeNonbondedUtil::knl_fast_grad_table;
    73 float*          ComputeNonbondedUtil::knl_scor_ener_table;
    74 float*          ComputeNonbondedUtil::knl_scor_grad_table;
    75 float*          ComputeNonbondedUtil::knl_slow_ener_table;
    76 float*          ComputeNonbondedUtil::knl_slow_grad_table;
    77 float*          ComputeNonbondedUtil::knl_excl_ener_table;
    78 float*          ComputeNonbondedUtil::knl_excl_grad_table;
    80 float*          ComputeNonbondedUtil::knl_corr_ener_table;
    81 float*          ComputeNonbondedUtil::knl_corr_grad_table;
   182 #define SPLIT_SHIFT     2   184 #define SPLIT_XPLOR     4   186 #define SPLIT_MARTINI   6   214   ADD_TENSOR(reduction,REDUCTION_VIRIAL_NBOND,data,virialIndex);
   215   ADD_TENSOR(reduction,REDUCTION_VIRIAL_SLOW,data,fullElectVirialIndex);
   216   ADD_VECTOR(reduction,REDUCTION_PAIR_VDW_FORCE,data,pairVDWForceIndex);
   217   ADD_VECTOR(reduction,REDUCTION_PAIR_ELECT_FORCE,data,pairElectForceIndex);
   224   if (!reduction) 
return;
   230   size_t nelems = arraysize*(numAtomTypes*(numAtomTypes+1))/2;
   232   memset(arr, 0, nelems*
sizeof(
BigReal));
   235   for (i=0; i<numAtomTypes; i++) {
   236     for (j=0; j<numAtomTypes; j++) {
   239       if (ii > jj) { 
int tmp=ii; ii=jj; jj=tmp; }
   240       const int reductionOffset = (ii*numAtomTypes - (ii*(ii+1))/2 + jj)*arraysize;
   241       for (
int k=0; k<arraysize; k++) {
   242         arr[reductionOffset+k] += data[k];
   248   reduction->
add(nelems, arr);
   253   NAMD_bug(
"Tried to call missing nonbonded compute routine.");
   258   if ( CkMyRank() ) 
return;
   329       NAMD_die(
"drudeNbthole is not supported with locally enhanced sampling");
   331       NAMD_die(
"drudeNbthole is not supported with pair interaction calculation");
   333       NAMD_die(
"drudeNbthole is not supported with pressure profile calculation");
   370   } 
else if ( 
lesOn ) {
   371 #if defined(NAMD_CUDA) || defined(NAMD_HIP)   372     NAMD_die(
"Locally enhanced sampling is not supported in CUDA version");
   381           if (ip && jp && ip != jp) {
   407 #if defined(NAMD_CUDA) || defined(NAMD_HIP)   408     NAMD_die(
"Pressure profile calculation is not supported in CUDA version");
   430 #if defined(NAMD_CUDA) || defined(NAMD_HIP)   431     NAMD_die(
"Pair interaction calculation is not supported in CUDA version");
   439   } 
else if ( tabulatedEnergies ) {
   440 #if defined(NAMD_CUDA) || defined(NAMD_HIP)   441     NAMD_die(
"Tabulated energies is not supported in CUDA version");
   461     NAMD_die(
"Go forces is not supported in CUDA version");
   531       double switchOn6 = switchOn3 * switchOn3;
   532       double cutoff6 = cutoff3 * cutoff3;
   540     } 
else if ( 
simParams->martiniSwitching ) { 
   577   const int MSMSplit = 
simParams->MSMSplit;
   581     BigReal TwoBySqrtPi = 1.12837916709551;
   603       NAMD_die(
"Sorry, XPLOR splitting not supported.");
   607       NAMD_die(
"Sorry, SHARP splitting not supported.");
   611       NAMD_die(
"Unknown splitting type found!");
   624     iout << 
iINFO << 
"NONBONDED TABLE R-SQUARED SPACING: " <<
   630   while ( (
cutoff2 + 
r2_delta) > r2_tmp ) { r2_tmp *= 2.0; cutoff2_exp += 1; }
   635   #if defined(NAMD_MIC)   636     int n_16 = (n + 15) & (~15);
   640     iout << 
iINFO << 
"NONBONDED TABLE SIZE: " <<
   641                                 n << 
" POINTS\n" << 
endi;
   645   #if defined(NAMD_MIC)   648     while ( ((
long)table_align) % 128 ) ++table_align;
   649     mic_table_base_ptr = table_align;
   651     mic_table_n_16 = n_16;
   665   while ( ((
long)table_align) % 128 ) ++table_align;
   693       if (
simParams->vdwGeometricSigma) avxTilesMode = 2;
   700       if (avxTilesMode == 1) {
   703         for (
int i = 0; i < table_dim; i++)
   704           for (
int j = i+1; j < table_dim; j++)
   708       if (avxTilesMode > 1)
   709         iout << 
iINFO << 
"AVX-512 TILES WILL USE SHORT-RANGE INTERPOLATION ("   710              << avxTilesMode << 
")\n";
   714         if ( avx_tiles_eps4_sigma ) 
delete [] avx_tiles_eps4_sigma;
   715         if ( avx_tiles_eps4_sigma_14 ) 
delete [] avx_tiles_eps4_sigma_14;
   716         avx_tiles_eps4_sigma = 
new float[num_params*2];
   717         avx_tiles_eps4_sigma_14 = 
new float[num_params*2];
   718         for (
int i = 0; i < num_params; i++) {
   719           Real sigma, sigma_14, epsilon, epsilon_14;
   725       epsilon = epsilon_14 = 0.0;
   728           avx_tiles_eps4_sigma[i*2] = 4.0 * 
scaling * epsilon;
   729           avx_tiles_eps4_sigma[i*2 + 1] = sigma;
   730           avx_tiles_eps4_sigma_14[i*2] = 4.0 * 
scaling * epsilon_14;
   731           avx_tiles_eps4_sigma_14[i*2 + 1] = sigma_14;
   737 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES)   738   if ( knl_table_alloc ) 
delete [] knl_table_alloc;
   739   if ( KNL_TABLE_MAX_R_1 < 1.f || KNL_TABLE_FACTOR < 1 ||
   741        static_cast<int>(1.0 / KNL_TABLE_MAX_R_1 * KNL_TABLE_SIZE))
   742     NAMD_bug(
"Inconsistent KNL preprocessor settings.");
   744   knl_table_alloc = 
new float[10*KNL_TABLE_SIZE];
   746   knl_table_alloc = 
new float[8*KNL_TABLE_SIZE];
   748  knl_fast_ener_table = knl_table_alloc;
   749  knl_fast_grad_table = knl_table_alloc + KNL_TABLE_SIZE;
   750  knl_scor_ener_table = knl_table_alloc + 2*KNL_TABLE_SIZE;
   751  knl_scor_grad_table = knl_table_alloc + 3*KNL_TABLE_SIZE;
   752  knl_slow_ener_table = knl_table_alloc + 4*KNL_TABLE_SIZE;
   753  knl_slow_grad_table = knl_table_alloc + 5*KNL_TABLE_SIZE;
   754  knl_excl_ener_table = knl_table_alloc + 6*KNL_TABLE_SIZE;
   755  knl_excl_grad_table = knl_table_alloc + 7*KNL_TABLE_SIZE;
   756  knl_fast_ener_table[0] = 0.;
   757  knl_fast_grad_table[0] = 0.;
   758  knl_scor_ener_table[0] = 0.;
   759  knl_scor_grad_table[0] = 0.;
   760  knl_slow_ener_table[0] = 0.;
   761  knl_slow_grad_table[0] = 0.;
   762  knl_excl_ener_table[0] = 0.;
   763  knl_excl_grad_table[0] = 0.;
   765  knl_corr_ener_table = knl_table_alloc + 8*KNL_TABLE_SIZE;
   766  knl_corr_grad_table = knl_table_alloc + 9*KNL_TABLE_SIZE;
   767  knl_corr_ener_table[0] = 0.;
   768  knl_corr_grad_table[0] = 0.;
   770  for ( 
int knl_table = 0; knl_table < 2; ++knl_table ) {
   773     nn = KNL_TABLE_SIZE-1;
   775   for ( i=1; i<nn; ++i ) {
   778   for ( i=1; i<n; ++i ) {
   782     const BigReal r2_del = r2_base / 64.0;
   787 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES)   789       r = (double)(KNL_TABLE_FACTOR-2)/(double)(i);
   793     if ( r2 <= r2_limit ) r2_delta_i = i;
   806     BigReal fast_energy, fast_gradient;
   807     BigReal scor_energy, scor_gradient;
   808     BigReal slow_energy, slow_gradient;
   813     BigReal corr_energy, corr_gradient;
   820       corr_gradient = 
pi_ewaldcof*exp(-(tmp_a*tmp_a))*r + tmp_b;
   821     } 
else if ( MSMOn ) {
   825       SPOLY(&g, &dg, r_a, MSMSplit);
   826       corr_energy = 1 - r_a * g;
   827       corr_gradient = 1 + r_a*r_a * dg;
   829       corr_energy = corr_gradient = 0;
   835         fast_gradient = -1.0/r2;
   836         scor_energy = scor_gradient = 0;
   837         slow_energy = slow_gradient = 0;
   841         shiftVal *= shiftVal;
   843         fast_energy = shiftVal/r;
   844         fast_gradient = dShiftVal/r - shiftVal/r2;
   845         scor_energy = scor_gradient = 0;
   846         slow_energy = slow_gradient = 0;
   851         const BigReal COUL_SWITCH = 0.;
   857         BigReal r12 = (r-COUL_SWITCH)*(r-COUL_SWITCH);
   858         BigReal r13 = (r-COUL_SWITCH)*(r-COUL_SWITCH)*(r-COUL_SWITCH);
   859         BigReal shiftVal = -(A1/3.0)*r13 - (B1/4.0)*r12*r12 - X1;
   860         BigReal dShiftVal = -A1*r12 - B1*r13;
   861         fast_energy = (1/r) + shiftVal;
   862         fast_gradient = -1/(r2) + dShiftVal;
   863         scor_energy = scor_gradient = 0;
   864         slow_energy = slow_gradient = 0;
   872         scor_energy = slow_energy + (corr_energy - 1.0)/r;
   873         scor_gradient = slow_gradient - (corr_gradient - 1.0)/r2;
   875         fast_energy = 1.0/r - slow_energy;
   876         fast_gradient = -1.0/r2 - slow_gradient;
   885             - 15.0*(r/
cutoff) + 10.0);
   887             - 45.0 *(r/
cutoff) + 20.0);
   889         scor_energy = slow_energy + (corr_energy - 1.0)/r;
   890         scor_gradient = slow_gradient - (corr_gradient - 1.0)/r2;
   892         fast_energy = 1.0/r - slow_energy;
   893         fast_gradient = -1.0/r2 - slow_gradient;
   900     fast_gradient *= 0.5 * r_1;
   901     scor_gradient *= 0.5 * r_1;
   902     slow_gradient *= 0.5 * r_1;
   908     BigReal vdwa_energy, vdwa_gradient;
   909     BigReal vdwb_energy, vdwb_gradient;
   911     const BigReal r_6 = r_2*r_2*r_2;
   921       vdwa_energy = 
k_vdwa * tmpa * tmpa;
   923       vdwb_energy = 
k_vdwb * tmpb * tmpb;
   924       vdwa_gradient = -6.0 * 
k_vdwa * tmpa * r_2 * r_6;
   925       vdwb_gradient = -3.0 * 
k_vdwb * tmpb * r_2 * r_2 * r_1;
   927       vdwa_energy = r_12 + 
v_vdwa;
   928       vdwb_energy = r_6 + 
v_vdwb;
   929       vdwa_gradient = -6.0 * r_2 * r_12;
   930       vdwb_gradient = -3.0 * r_2 * r_6;
   932   } 
else if ( 
simParams->martiniSwitching ) { 
   947     BigReal LJshifttempA = -(A12/3)*r13 - (B12/4)*r12*r12 - C12;
   948     BigReal LJshifttempB = -(A6/3)*r13 - (B6/4)*r12*r12 - C6;
   954     BigReal LJdshifttempA = -A12*r12 - B12*r13;
   955     BigReal LJdshifttempB = -A6*r12 - B6*r13;
   957                         ( r2 > 
switchOn2 ? LJdshifttempA*0.5*r_1 : 0 );
   959                         ( r2 > 
switchOn2 ? LJdshifttempB*0.5*r_1 : 0 );
   969     vdwa_energy = r_12 + shiftValA;
   970     vdwb_energy = r_6 + shiftValB;
   972     vdwa_gradient = -6/pow(r,14) + dshiftValA ;
   973     vdwb_gradient = -3/pow(r,8) + dshiftValB;
   985     vdwa_energy = switchVal * r_12;
   986     vdwb_energy = switchVal * r_6;
   988     vdwa_gradient = ( dSwitchVal - 6.0 * switchVal * r_2 ) * r_12;
   989     vdwb_gradient = ( dSwitchVal - 3.0 * switchVal * r_2 ) * r_6;
   993 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES)   995     knl_fast_ener_table[i] = -1.*fast_energy;
   996     knl_fast_grad_table[i] = -2.*fast_gradient;
   997     knl_scor_ener_table[i] = -1.*scor_energy;
   998     knl_scor_grad_table[i] = -2.*scor_gradient;
   999     knl_slow_ener_table[i] = (-1.*scor_energy - (
scale14-1)*slow_energy) /
  1001     knl_slow_grad_table[i] = (-2.*scor_gradient - 
  1003     knl_excl_ener_table[i] = slow_energy - scor_energy;
  1004     knl_excl_grad_table[i] = 2.*(slow_gradient - scor_gradient);
  1006     knl_corr_ener_table[i] = -1.*(fast_energy + scor_energy);
  1007     knl_corr_grad_table[i] = -2.*(fast_gradient + scor_gradient);
  1010       knl_fast_ener_table[nn] = knl_fast_ener_table[i];
  1011       knl_fast_grad_table[nn] = knl_fast_grad_table[i];
  1012       knl_scor_ener_table[nn] = knl_scor_ener_table[i];
  1013       knl_scor_grad_table[nn] = knl_scor_grad_table[i];
  1014       knl_slow_ener_table[nn] = knl_slow_ener_table[i];
  1015       knl_slow_grad_table[nn] = knl_slow_grad_table[i];
  1016       knl_excl_ener_table[nn] = knl_excl_ener_table[i];
  1017       knl_excl_grad_table[nn] = knl_excl_grad_table[i];
  1019       knl_corr_ener_table[nn] = knl_corr_ener_table[i];
  1020       knl_corr_grad_table[nn] = knl_corr_grad_table[i];
  1025     *(fast_i++) = fast_energy;
  1026     *(fast_i++) = fast_gradient;
  1029     *(scor_i++) = scor_energy;
  1030     *(scor_i++) = scor_gradient;
  1033     *(slow_i++) = slow_energy;
  1034     *(slow_i++) = slow_gradient;
  1037     *(vdwa_i++) = vdwa_energy;
  1038     *(vdwa_i++) = vdwa_gradient;
  1041     *(vdwb_i++) = vdwb_energy;
  1042     *(vdwb_i++) = vdwb_gradient;
  1046 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES)  1051 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES)  1055   if ( ! r2_delta_i ) {
  1056     NAMD_bug(
"Failed to find table entry for r2 == r2_limit\n");
  1059     NAMD_bug(
"Found bad table entry for r2 == r2_limit\n");
  1063   const char *table_name = 
"XXXX";
  1064   int smooth_short = 0;
  1065   for ( j=0; j<5; ++j ) {
  1070         table_name = 
"FAST";
  1075         table_name = 
"SCOR";
  1080         table_name = 
"SLOW";
  1085         table_name = 
"VDWA";
  1090         table_name = 
"VDWB";
  1095     t0[0] = t0[4] - t0[5] * ( 
r2_delta / 64.0 );  
  1099     if ( smooth_short ) {
  1100       BigReal energy0 = t0[4*r2_delta_i];
  1101       BigReal gradient0 = t0[4*r2_delta_i+1];
  1103       t0[0] = energy0 - gradient0 * (r20 - 
r2_table[0]);  
  1107     for ( i=0,t=t0; i<(n-1); ++i,t+=4 ) {
  1110         NAMD_bug(
"Bad table delta calculation.\n");
  1112       if ( smooth_short && i+1 < r2_delta_i ) {
  1113         BigReal energy0 = t0[4*r2_delta_i];
  1114         BigReal gradient0 = t0[4*r2_delta_i+1];
  1116         t[4] = energy0 - gradient0 * (r20 - 
r2_table[i+1]);  
  1124       BigReal c = ( 3.0 * (v2 - v1) - x * (2.0 * g1 + g2) ) / ( x * x );
  1125       BigReal d = ( -2.0 * (v2 - v1) + x * (g1 + g2) ) / ( x * x * x );
  1128       for ( 
int k=0; k < 2; ++k ) {
  1129         BigReal dv = (v1 - v2) + ( ( d * x + c ) * x + g1 ) * x;
  1130         BigReal dg = (g1 - g2) + ( 3.0 * d * x + 2.0 * c ) * x;
  1131         c -= ( 3.0 * dv - x * dg ) / ( x * x );
  1132         d -= ( -2.0 * dv + x * dg ) / ( x * x * x );
  1160     for ( i=0,t=t0; i<(n-1); ++i,t+=4 ) {
  1162       const BigReal r2_del = r2_base / 64.0;
  1167       BigReal dv = ( ( t[3] * x + t[2] ) * x + t[1] ) * x + t[0] - t[4];
  1168       BigReal dg = ( 3.0 * t[3] * x + 2.0 * t[2] ) * x + t[1] - t[5];
  1169       if ( t[4] != 0. && fabs(dv/t[4]) > fdvmax ) {
  1170         fdvmax = fabs(dv/t[4]); fdvmax_r = r;
  1172       if ( fabs(dv) > dvmax ) {
  1173         dvmax = fabs(dv); dvmax_r = r;
  1175       if ( t[5] != 0. && fabs(dg/t[5]) > fdgmax ) {
  1176         fdgmax = fabs(dg/t[5]); fdgmax_r = r;
  1178       if ( fabs(dg) > dgmax ) {
  1179         dgmax = fabs(dg); dgmax_r = r;
  1181       BigReal gcd = (t[4] - t[0]) / x;  
  1182       BigReal gcd_prec = (fabs(t[0]) + fabs(t[4])) * 1.e-15 / x;  
  1183       gcm = 0.9 * gcm + 0.1 * fabs(t[5]);  
  1184       BigReal gca = 0.5  * (t[1] + t[5]);  
  1185       BigReal gci = ( 0.75 * t[3] * x + t[2] ) * x + t[1];  
  1186       BigReal rc = sqrt(r2 + 0.5 * x);
  1188       if ( dgcda != 0. && fabs(dgcda) < gcd_prec ) {
  1193       if ( dgcdi != 0. && fabs(dgcdi) < gcd_prec ) {
  1198       if ( t[1]*t[5] > 0. && gcm != 0. && fabs(dgcda/gcm) > fdgcdamax ) {
  1199         fdgcdamax = fabs(dgcda/gcm); fdgcdamax_r = rc;
  1201       if ( fabs(dgcda) > fdgcdamax ) {
  1202         dgcdamax = fabs(dgcda); dgcdamax_r = rc;
  1204       if ( t[1]*t[5] > 0. && gcm != 0. && fabs(dgcdi/gcm) > fdgcdimax ) {
  1205         fdgcdimax = fabs(dgcdi/gcm); fdgcdimax_r = rc;
  1207       if ( fabs(dgcdi) > fdgcdimax ) {
  1208         dgcdimax = fabs(dgcdi); dgcdimax_r = rc;
  1210       if ( t[1]*t[5] > 0. && gcm != 0. && fabs(dgcai/gcm) > fdgcaimax ) {
  1211         fdgcaimax = fabs(dgcai/gcm); fdgcaimax_r = rc;
  1213       if ( fabs(dgcai) > fdgcaimax ) {
  1214         dgcaimax = fabs(dgcai); dgcaimax_r = rc;
  1217       CkPrintf(
"TABLE %s %g %g %g %g\n",table_name,rc,dgcda/gcm,dgcda,gci);
  1218       if (dv != 0.) CkPrintf(
"TABLE %d ENERGY ERROR %g AT %g (%d)\n",j,dv,r,i);
  1219       if (dg != 0.) CkPrintf(
"TABLE %d FORCE ERROR %g AT %g (%d)\n",j,dg,r,i);
  1222     if ( dvmax != 0.0 ) {
  1223       iout << 
iINFO << 
"ABSOLUTE IMPRECISION IN " << table_name <<
  1224         " TABLE ENERGY: " << dvmax << 
" AT " << dvmax_r << 
"\n" << 
endi;
  1226     if ( fdvmax != 0.0 ) {
  1227       iout << 
iINFO << 
"RELATIVE IMPRECISION IN " << table_name <<
  1228         " TABLE ENERGY: " << fdvmax << 
" AT " << fdvmax_r << 
"\n" << 
endi;
  1230     if ( dgmax != 0.0 ) {
  1231       iout << 
iINFO << 
"ABSOLUTE IMPRECISION IN " << table_name <<
  1232         " TABLE FORCE: " << dgmax << 
" AT " << dgmax_r << 
"\n" << 
endi;
  1234     if ( fdgmax != 0.0 ) {
  1235       iout << 
iINFO << 
"RELATIVE IMPRECISION IN " << table_name <<
  1236         " TABLE FORCE: " << fdgmax << 
" AT " << fdgmax_r << 
"\n" << 
endi;
  1238     if (fdgcdamax != 0.0 ) {
  1239       iout << 
iINFO << 
"INCONSISTENCY IN " << table_name <<
  1240         " TABLE ENERGY VS FORCE: " << fdgcdamax << 
" AT " << fdgcdamax_r << 
"\n" << 
endi;
  1241       if ( fdgcdamax > 0.1 ) {
  1243         iout << 
iERROR << 
"CALCULATED " << table_name <<
  1244           " FORCE MAY NOT MATCH ENERGY! POSSIBLE BUG!\n";
  1248     if (0 && fdgcdimax != 0.0 ) {
  1249       iout << 
iINFO << 
"INCONSISTENCY IN " << table_name <<
  1250         " TABLE ENERGY VS FORCE: " << fdgcdimax << 
" AT " << fdgcdimax_r << 
"\n" << 
endi;
  1252     if ( 0 && fdgcaimax != 0.0 ) {
  1253       iout << 
iINFO << 
"INCONSISTENCY IN " << table_name <<
  1254         " TABLE AVG VS INT FORCE: " << fdgcaimax << 
" AT " << fdgcaimax_r << 
"\n" << 
endi;
  1260   for ( i=0; i<4*n; ++i ) {
  1266   for ( i=0; i<n; ++i ) {
  1267    for ( 
int j=0; j<4; ++j ) {
  1278   for ( i=0; i<n; ++i ) {
  1312   sprintf(fname,
"/tmp/namd.table.pe%d.dat",CkMyPe());
  1313   FILE *f = fopen(fname,
"w");
  1314   for ( i=0; i<(n-1); ++i ) {
  1316     const BigReal r2_del = r2_base / 64.0;
  1322     fprintf(f,
"   %g %g %g %g", t[0], t[1], t[2], t[3]);
  1324     fprintf(f,
"   %g %g %g %g", t[0], t[1], t[2], t[3]);
  1326     fprintf(f,
"   %g %g %g %g", t[0], t[1], t[2], t[3]);
  1328     fprintf(f,
"   %g %g %g %g", t[0], t[1], t[2], t[3]);
  1330     fprintf(f,
"   %g %g %g %g", t[0], t[1], t[2], t[3]);
  1332     fprintf(f,
"   %g %g %g %g", t[0], t[1], t[2], t[3]);
  1334     fprintf(f,
"   %g %g %g %g", t[0], t[1], t[2], t[3]);
  1341   for ( i=0; i<n; ++i ) {
  1342     BigReal tmp0, tmp1, tmp2, tmp3;
  1355     send_build_mic_force_table();
 
static void calc_pair_fullelect_pprof(nonbonded *)
 
static BigReal * fast_table
 
static int pressureProfileSlabs
 
static void calc_pair_energy_merge_fullelect_tabener(nonbonded *)
 
static void calc_self_energy_go(nonbonded *)
 
std::ostream & iINFO(std::ostream &s)
 
static void calc_self_energy_merge_fullelect_ti(nonbonded *)
 
static BigReal * scor_table
 
static void(* calcMergeDispSelfEnergy)(nonbonded *)
 
static void calc_pair_les(nonbonded *)
 
static void calc_self_energy_slow_fullelect_fep(nonbonded *)
 
static void calc_pair_merge_fullelect(nonbonded *)
 
static void calc_self_energy_merge_fullelect_int(nonbonded *)
 
static void calc_self_energy_slow_fullelect(nonbonded *)
 
static void calc_self_energy_merge_fullelect_tabener(nonbonded *)
 
static void calc_self_energy_slow_fullelect_ti(nonbonded *)
 
static void calc_self_energy_fullelect_int(nonbonded *)
 
static void submitReductionData(BigReal *, SubmitReduction *)
 
static void calc_self_ti(nonbonded *)
 
static void calc_self_fullelect_pprof(nonbonded *)
 
static void calc_self_tabener(nonbonded *)
 
static void calc_self_energy_fullelect(nonbonded *)
 
static void calc_pair_slow_fullelect_ti(nonbonded *)
 
static void(* calcSelf)(nonbonded *)
 
static BigReal dielectric_1
 
#define ADD_TENSOR(R, RL, D, DL)
 
static void calc_pair_merge_fullelect_tabener(nonbonded *)
 
static void calc_self_les(nonbonded *)
 
SimParameters * simParameters
 
static void calc_pair_merge_fullelect_go(nonbonded *)
 
static void calc_pair_energy_merge_fullelect(nonbonded *)
 
static void calc_pair_slow_fullelect_pprof(nonbonded *)
 
static const Molecule * mol
 
static void calc_pair_energy_fullelect_fep(nonbonded *)
 
static void calc_self_energy_fullelect_pprof(nonbonded *)
 
static void calc_self_energy_fullelect_les(nonbonded *)
 
static void calc_self_energy_fullelect_ti(nonbonded *)
 
std::ostream & endi(std::ostream &s)
 
static void calc_self_fullelect(nonbonded *)
 
#define VDW_SWITCH_MODE_MARTINI
 
static void calc_self_energy_ti(nonbonded *)
 
static BigReal * vdwa_table
 
static void calc_self_energy_int(nonbonded *)
 
static void submitPressureProfileData(BigReal *, SubmitReduction *)
 
static BigReal pressureProfileThickness
 
static void calc_pair_slow_fullelect(nonbonded *)
 
static void calc_pair(nonbonded *)
 
static BigReal r2_delta_1
 
static void calc_self_go(nonbonded *)
 
static void(* calcMergePair)(nonbonded *)
 
static void calc_pair_energy_tabener(nonbonded *)
 
static void calc_self_slow_fullelect_pprof(nonbonded *)
 
static void calc_pair_energy_slow_fullelect_go(nonbonded *)
 
static void calc_self_energy_merge_fullelect_fep(nonbonded *)
 
static int pressureProfileAtomTypes
 
static Bool alchThermIntOn
 
static void(* calcMergePairEnergy)(nonbonded *)
 
static BigReal lesScaling
 
static void calc_pair_energy_go(nonbonded *)
 
static void calc_pair_merge_fullelect_ti(nonbonded *)
 
Molecule stores the structural information for the system. 
 
static BigReal * full_table
 
static void calc_pair_merge_fullelect_les(nonbonded *)
 
static void calc_pair_slow_fullelect_go(nonbonded *)
 
static int vdw_switch_mode
 
static void calc_pair_energy_merge_fullelect_fep(nonbonded *)
 
static BigReal * r2_table
 
static void(* calcSlowPairEnergy)(nonbonded *)
 
static void(* calcPair)(nonbonded *)
 
static void(* calcMergeDispPairEnergy)(nonbonded *)
 
void add(int nitems, const BigReal *arr)
 
static void(* calcSlowPair)(nonbonded *)
 
static void calc_pair_energy_fullelect_go(nonbonded *)
 
static void calc_self_energy_merge_fullelect_fulldisp(nonbonded *)
 
static void calc_pair_energy_slow_fullelect_tabener(nonbonded *)
 
static void calc_self_slow_fullelect(nonbonded *)
 
static void calc_self_energy_les(nonbonded *)
 
static void calc_pair_energy_fep(nonbonded *)
 
static void(* calcMergeSelfEnergy)(nonbonded *)
 
static void calc_pair_tabener(nonbonded *)
 
static Bool pairInteractionSelf
 
static void calc_pair_energy_pprof(nonbonded *)
 
static BigReal * table_noshort
 
static void calc_self_energy_slow_fullelect_tabener(nonbonded *)
 
void NAMD_bug(const char *err_msg)
 
static void calc_self_energy_fullelect_tabener(nonbonded *)
 
static void calc_pair_energy_int(nonbonded *)
 
static BigReal pressureProfileMin
 
static void calc_self_slow_fullelect_tabener(nonbonded *)
 
static void calc_pair_energy_slow_fullelect_les(nonbonded *)
 
static void calc_pair_energy_ti(nonbonded *)
 
static void calc_pair_energy_slow_fullelect_fep(nonbonded *)
 
static void calc_self_slow_fullelect_ti(nonbonded *)
 
static void calc_pair_slow_fullelect_les(nonbonded *)
 
static void calc_pair_fullelect_ti(nonbonded *)
 
static void calc_pair_energy(nonbonded *)
 
static BigReal * table_ener
 
static void calc_pair_pprof(nonbonded *)
 
#define ADD_VECTOR(R, RL, D, DL)
 
static void calc_pair_energy_fullelect_ti(nonbonded *)
 
int get_table_dim() const
 
static void calc_self_energy_merge_fullelect_les(nonbonded *)
 
static void calc_self_slow_fullelect_go(nonbonded *)
 
static void calc_pair_energy_merge_fullelect_go(nonbonded *)
 
static Bool pressureProfileOn
 
static void calc_error(nonbonded *)
 
static void calc_self_energy_fullelect_go(nonbonded *)
 
int get_vdw_pair_params(Index ind1, Index ind2, Real *, Real *, Real *, Real *)
 
static void calc_self_fullelect_tabener(nonbonded *)
 
static void(* calcFullSelf)(nonbonded *)
 
void NAMD_die(const char *err_msg)
 
static void calc_self_merge_fullelect_ti(nonbonded *)
 
static void(* calcSlowSelf)(nonbonded *)
 
static void(* calcMergeDispSelf)(nonbonded *)
 
static void calc_self_fullelect_les(nonbonded *)
 
static void calc_self_merge_fullelect_go(nonbonded *)
 
static void calc_self_merge_fullelect_fulldisp(nonbonded *)
 
int get_num_vdw_params(void)
 
static BigReal switchOn_1
 
static Bool vdwForceSwitching
 
static void calc_self_energy_merge_fullelect_go(nonbonded *)
 
static void calc_self_energy_merge_fullelect(nonbonded *)
 
static void calc_pair_energy_fullelect_int(nonbonded *)
 
static void calc_pair_energy_merge_fullelect_pprof(nonbonded *)
 
static BigReal * lambda_table
 
static void calc_self_energy_fep(nonbonded *)
 
static BigReal pi_ewaldcof
 
static void(* calcSlowSelfEnergy)(nonbonded *)
 
static void calc_pair_energy_slow_fullelect_pprof(nonbonded *)
 
static BigReal * slow_table
 
static void(* calcSelfEnergy)(nonbonded *)
 
static void(* calcPairEnergy)(nonbonded *)
 
static void calc_pair_fullelect_les(nonbonded *)
 
static void calc_pair_energy_les(nonbonded *)
 
static void calc_self_merge_fullelect(nonbonded *)
 
static void calc_self_energy_tabener(nonbonded *)
 
static void calc_pair_energy_merge_fullelect_int(nonbonded *)
 
static void calc_self_energy_slow_fullelect_pprof(nonbonded *)
 
static void calc_self_energy_pprof(nonbonded *)
 
static Bool pairInteractionOn
 
static void calc_pair_energy_fullelect_pprof(nonbonded *)
 
static void calc_pair_fullelect_go(nonbonded *)
 
static void calc_pair_energy_slow_fullelect(nonbonded *)
 
static void calc_pair_energy_fullelect_les(nonbonded *)
 
static BigReal * vdwb_table
 
static void calc_pair_energy_fullelect_tabener(nonbonded *)
 
static void(* calcFullPair)(nonbonded *)
 
#define VDW_SWITCH_MODE_FORCE
 
static void calc_pair_merge_fullelect_pprof(nonbonded *)
 
static const LJTable * ljTable
 
static void calc_self_energy_merge_fullelect_pprof(nonbonded *)
 
#define VDW_SWITCH_MODE_ENERGY
 
static BigReal LJewaldcof
 
static void(* calcFullPairEnergy)(nonbonded *)
 
static BigReal * corr_table
 
static BigReal * table_short
 
static void calc_pair_energy_merge_fullelect_fulldisp(nonbonded *)
 
static void calc_self(nonbonded *)
 
#define SPOLY(pg, pdg, ra, split)
 
static void calc_self_fullelect_ti(nonbonded *)
 
static void calc_pair_fullelect_tabener(nonbonded *)
 
static void calc_pair_energy_merge_fullelect_ti(nonbonded *)
 
std::ostream & iERROR(std::ostream &s)
 
static BigReal * table_alloc
 
static void calc_self_energy_fullelect_fep(nonbonded *)
 
static void calc_self_merge_fullelect_tabener(nonbonded *)
 
static BigReal alchVdwShiftCoeff
 
static void calc_pair_go(nonbonded *)
 
static void calc_pair_ti(nonbonded *)
 
static void calc_self_energy(nonbonded *)
 
void get_vdw_params(Real *sigma, Real *epsilon, Real *sigma14, Real *epsilon14, Index index)
 
static void calc_self_fullelect_go(nonbonded *)
 
static void calc_pair_energy_merge_fullelect_les(nonbonded *)
 
static void calc_self_pprof(nonbonded *)
 
static void(* calcMergeDispPair)(nonbonded *)
 
static void calc_self_merge_fullelect_les(nonbonded *)
 
static void calc_pair_slow_fullelect_tabener(nonbonded *)
 
static void calc_pair_energy_fullelect(nonbonded *)
 
static void calc_pair_merge_fullelect_fulldisp(nonbonded *)
 
static void calc_self_merge_fullelect_pprof(nonbonded *)
 
static void calc_self_energy_slow_fullelect_go(nonbonded *)
 
static void calc_pair_energy_slow_fullelect_ti(nonbonded *)
 
static void(* calcMergeSelf)(nonbonded *)
 
static void calc_self_energy_slow_fullelect_les(nonbonded *)
 
static void(* calcFullSelfEnergy)(nonbonded *)
 
static void calc_pair_fullelect(nonbonded *)
 
static void calc_self_slow_fullelect_les(nonbonded *)