268 if ( CkMyRank() )
return;
351 NAMD_die(
"drudeNbthole is not supported with locally enhanced sampling");
353 NAMD_die(
"drudeNbthole is not supported with pair interaction calculation");
355 NAMD_die(
"drudeNbthole is not supported with pressure profile calculation");
392 }
else if (
lesOn ) {
393 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 394 NAMD_die(
"Locally enhanced sampling is not supported in CUDA version");
403 if (ip && jp && ip != jp) {
429 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 430 NAMD_die(
"Pressure profile calculation is not supported in CUDA version");
452 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 453 NAMD_die(
"Pair interaction calculation is not supported in CUDA version");
461 }
else if ( tabulatedEnergies ) {
462 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 463 NAMD_die(
"Tabulated energies is not supported in CUDA version");
483 NAMD_die(
"Go forces is not supported in CUDA version");
561 double switchOn6 = switchOn3 * switchOn3;
562 double cutoff6 = cutoff3 * cutoff3;
570 }
else if (
simParams->martiniSwitching ) {
607 const int MSMSplit =
simParams->MSMSplit;
611 BigReal TwoBySqrtPi = 1.12837916709551;
633 NAMD_die(
"Sorry, XPLOR splitting not supported.");
637 NAMD_die(
"Sorry, SHARP splitting not supported.");
641 NAMD_die(
"Unknown splitting type found!");
654 iout <<
iINFO <<
"NONBONDED TABLE R-SQUARED SPACING: " <<
660 while ( (
cutoff2 +
r2_delta) > r2_tmp ) { r2_tmp *= 2.0; cutoff2_exp += 1; }
665 #if defined(NAMD_MIC) 666 int n_16 = (n + 15) & (~15);
670 iout <<
iINFO <<
"NONBONDED TABLE SIZE: " <<
671 n <<
" POINTS\n" <<
endi;
675 #if defined(NAMD_MIC) 678 while ( ((
long)table_align) % 128 ) ++table_align;
679 mic_table_base_ptr = table_align;
681 mic_table_n_16 = n_16;
695 while ( ((
long)table_align) % 128 ) ++table_align;
723 if (
simParams->vdwGeometricSigma) avxTilesMode = 2;
730 if (avxTilesMode == 1) {
733 for (
int i = 0; i < table_dim; i++)
734 for (
int j = i+1; j < table_dim; j++)
738 if (avxTilesMode > 1)
739 iout <<
iINFO <<
"AVX-512 TILES WILL USE SHORT-RANGE INTERPOLATION (" 740 << avxTilesMode <<
")\n";
744 if ( avx_tiles_eps4_sigma )
delete [] avx_tiles_eps4_sigma;
745 if ( avx_tiles_eps4_sigma_14 )
delete [] avx_tiles_eps4_sigma_14;
746 avx_tiles_eps4_sigma =
new float[num_params*2];
747 avx_tiles_eps4_sigma_14 =
new float[num_params*2];
748 for (
int i = 0; i < num_params; i++) {
749 Real sigma, sigma_14, epsilon, epsilon_14;
755 epsilon = epsilon_14 = 0.0;
758 avx_tiles_eps4_sigma[i*2] = 4.0 *
scaling * epsilon;
759 avx_tiles_eps4_sigma[i*2 + 1] = sigma;
760 avx_tiles_eps4_sigma_14[i*2] = 4.0 *
scaling * epsilon_14;
761 avx_tiles_eps4_sigma_14[i*2 + 1] = sigma_14;
767 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES) 768 if ( knl_table_alloc )
delete [] knl_table_alloc;
769 if ( KNL_TABLE_MAX_R_1 < 1.f || KNL_TABLE_FACTOR < 1 ||
771 static_cast<int>(1.0 / KNL_TABLE_MAX_R_1 * KNL_TABLE_SIZE))
772 NAMD_bug(
"Inconsistent KNL preprocessor settings.");
774 knl_table_alloc =
new float[10*KNL_TABLE_SIZE];
776 knl_table_alloc =
new float[8*KNL_TABLE_SIZE];
778 knl_fast_ener_table = knl_table_alloc;
779 knl_fast_grad_table = knl_table_alloc + KNL_TABLE_SIZE;
780 knl_scor_ener_table = knl_table_alloc + 2*KNL_TABLE_SIZE;
781 knl_scor_grad_table = knl_table_alloc + 3*KNL_TABLE_SIZE;
782 knl_slow_ener_table = knl_table_alloc + 4*KNL_TABLE_SIZE;
783 knl_slow_grad_table = knl_table_alloc + 5*KNL_TABLE_SIZE;
784 knl_excl_ener_table = knl_table_alloc + 6*KNL_TABLE_SIZE;
785 knl_excl_grad_table = knl_table_alloc + 7*KNL_TABLE_SIZE;
786 knl_fast_ener_table[0] = 0.;
787 knl_fast_grad_table[0] = 0.;
788 knl_scor_ener_table[0] = 0.;
789 knl_scor_grad_table[0] = 0.;
790 knl_slow_ener_table[0] = 0.;
791 knl_slow_grad_table[0] = 0.;
792 knl_excl_ener_table[0] = 0.;
793 knl_excl_grad_table[0] = 0.;
795 knl_corr_ener_table = knl_table_alloc + 8*KNL_TABLE_SIZE;
796 knl_corr_grad_table = knl_table_alloc + 9*KNL_TABLE_SIZE;
797 knl_corr_ener_table[0] = 0.;
798 knl_corr_grad_table[0] = 0.;
800 for (
int knl_table = 0; knl_table < 2; ++knl_table ) {
803 nn = KNL_TABLE_SIZE-1;
805 for ( i=1; i<nn; ++i ) {
808 for ( i=1; i<n; ++i ) {
812 const BigReal r2_del = r2_base / 64.0;
817 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES) 819 r = (double)(KNL_TABLE_FACTOR-2)/(double)(i);
823 if ( r2 <= r2_limit ) r2_delta_i = i;
836 BigReal fast_energy, fast_gradient;
837 BigReal scor_energy, scor_gradient;
838 BigReal slow_energy, slow_gradient;
843 BigReal corr_energy, corr_gradient;
850 corr_gradient =
pi_ewaldcof*exp(-(tmp_a*tmp_a))*r + tmp_b;
851 }
else if ( MSMOn ) {
855 SPOLY(&g, &dg, r_a, MSMSplit);
856 corr_energy = 1 - r_a * g;
857 corr_gradient = 1 + r_a*r_a * dg;
859 corr_energy = corr_gradient = 0;
865 fast_gradient = -1.0/r2;
866 scor_energy = scor_gradient = 0;
867 slow_energy = slow_gradient = 0;
871 shiftVal *= shiftVal;
873 fast_energy = shiftVal/r;
874 fast_gradient = dShiftVal/r - shiftVal/r2;
875 scor_energy = scor_gradient = 0;
876 slow_energy = slow_gradient = 0;
881 const BigReal COUL_SWITCH = 0.;
887 BigReal r12 = (r-COUL_SWITCH)*(r-COUL_SWITCH);
888 BigReal r13 = (r-COUL_SWITCH)*(r-COUL_SWITCH)*(r-COUL_SWITCH);
889 BigReal shiftVal = -(A1/3.0)*r13 - (B1/4.0)*r12*r12 - X1;
890 BigReal dShiftVal = -A1*r12 - B1*r13;
891 fast_energy = (1/r) + shiftVal;
892 fast_gradient = -1/(r2) + dShiftVal;
893 scor_energy = scor_gradient = 0;
894 slow_energy = slow_gradient = 0;
902 scor_energy = slow_energy + (corr_energy - 1.0)/r;
903 scor_gradient = slow_gradient - (corr_gradient - 1.0)/r2;
905 fast_energy = 1.0/r - slow_energy;
906 fast_gradient = -1.0/r2 - slow_gradient;
915 - 15.0*(r/
cutoff) + 10.0);
917 - 45.0 *(r/
cutoff) + 20.0);
919 scor_energy = slow_energy + (corr_energy - 1.0)/r;
920 scor_gradient = slow_gradient - (corr_gradient - 1.0)/r2;
922 fast_energy = 1.0/r - slow_energy;
923 fast_gradient = -1.0/r2 - slow_gradient;
930 fast_gradient *= 0.5 * r_1;
931 scor_gradient *= 0.5 * r_1;
932 slow_gradient *= 0.5 * r_1;
938 BigReal vdwa_energy, vdwa_gradient;
939 BigReal vdwb_energy, vdwb_gradient;
941 const BigReal r_6 = r_2*r_2*r_2;
951 vdwa_energy =
k_vdwa * tmpa * tmpa;
953 vdwb_energy =
k_vdwb * tmpb * tmpb;
954 vdwa_gradient = -6.0 *
k_vdwa * tmpa * r_2 * r_6;
955 vdwb_gradient = -3.0 *
k_vdwb * tmpb * r_2 * r_2 * r_1;
957 vdwa_energy = r_12 +
v_vdwa;
958 vdwb_energy = r_6 +
v_vdwb;
959 vdwa_gradient = -6.0 * r_2 * r_12;
960 vdwb_gradient = -3.0 * r_2 * r_6;
962 }
else if (
simParams->martiniSwitching ) {
977 BigReal LJshifttempA = -(A12/3)*r13 - (B12/4)*r12*r12 - C12;
978 BigReal LJshifttempB = -(A6/3)*r13 - (B6/4)*r12*r12 - C6;
984 BigReal LJdshifttempA = -A12*r12 - B12*r13;
985 BigReal LJdshifttempB = -A6*r12 - B6*r13;
987 ( r2 >
switchOn2 ? LJdshifttempA*0.5*r_1 : 0 );
989 ( r2 >
switchOn2 ? LJdshifttempB*0.5*r_1 : 0 );
999 vdwa_energy = r_12 + shiftValA;
1000 vdwb_energy = r_6 + shiftValB;
1002 vdwa_gradient = -6/pow(r,14) + dshiftValA ;
1003 vdwb_gradient = -3/pow(r,8) + dshiftValB;
1015 vdwa_energy = switchVal * r_12;
1016 vdwb_energy = switchVal * r_6;
1018 vdwa_gradient = ( dSwitchVal - 6.0 * switchVal * r_2 ) * r_12;
1019 vdwb_gradient = ( dSwitchVal - 3.0 * switchVal * r_2 ) * r_6;
1023 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES) 1025 knl_fast_ener_table[i] = -1.*fast_energy;
1026 knl_fast_grad_table[i] = -2.*fast_gradient;
1027 knl_scor_ener_table[i] = -1.*scor_energy;
1028 knl_scor_grad_table[i] = -2.*scor_gradient;
1029 knl_slow_ener_table[i] = (-1.*scor_energy - (
scale14-1)*slow_energy) /
1031 knl_slow_grad_table[i] = (-2.*scor_gradient -
1033 knl_excl_ener_table[i] = slow_energy - scor_energy;
1034 knl_excl_grad_table[i] = 2.*(slow_gradient - scor_gradient);
1036 knl_corr_ener_table[i] = -1.*(fast_energy + scor_energy);
1037 knl_corr_grad_table[i] = -2.*(fast_gradient + scor_gradient);
1040 knl_fast_ener_table[nn] = knl_fast_ener_table[i];
1041 knl_fast_grad_table[nn] = knl_fast_grad_table[i];
1042 knl_scor_ener_table[nn] = knl_scor_ener_table[i];
1043 knl_scor_grad_table[nn] = knl_scor_grad_table[i];
1044 knl_slow_ener_table[nn] = knl_slow_ener_table[i];
1045 knl_slow_grad_table[nn] = knl_slow_grad_table[i];
1046 knl_excl_ener_table[nn] = knl_excl_ener_table[i];
1047 knl_excl_grad_table[nn] = knl_excl_grad_table[i];
1049 knl_corr_ener_table[nn] = knl_corr_ener_table[i];
1050 knl_corr_grad_table[nn] = knl_corr_grad_table[i];
1055 *(fast_i++) = fast_energy;
1056 *(fast_i++) = fast_gradient;
1059 *(scor_i++) = scor_energy;
1060 *(scor_i++) = scor_gradient;
1063 *(slow_i++) = slow_energy;
1064 *(slow_i++) = slow_gradient;
1067 *(vdwa_i++) = vdwa_energy;
1068 *(vdwa_i++) = vdwa_gradient;
1071 *(vdwb_i++) = vdwb_energy;
1072 *(vdwb_i++) = vdwb_gradient;
1076 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES) 1081 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES) 1085 if ( ! r2_delta_i ) {
1086 NAMD_bug(
"Failed to find table entry for r2 == r2_limit\n");
1089 NAMD_bug(
"Found bad table entry for r2 == r2_limit\n");
1093 const char *table_name =
"XXXX";
1094 int smooth_short = 0;
1095 for ( j=0; j<5; ++j ) {
1100 table_name =
"FAST";
1105 table_name =
"SCOR";
1110 table_name =
"SLOW";
1115 table_name =
"VDWA";
1120 table_name =
"VDWB";
1125 t0[0] = t0[4] - t0[5] * (
r2_delta / 64.0 );
1129 if ( smooth_short ) {
1130 BigReal energy0 = t0[4*r2_delta_i];
1131 BigReal gradient0 = t0[4*r2_delta_i+1];
1133 t0[0] = energy0 - gradient0 * (r20 -
r2_table[0]);
1137 for ( i=0,t=t0; i<(n-1); ++i,t+=4 ) {
1140 NAMD_bug(
"Bad table delta calculation.\n");
1142 if ( smooth_short && i+1 < r2_delta_i ) {
1143 BigReal energy0 = t0[4*r2_delta_i];
1144 BigReal gradient0 = t0[4*r2_delta_i+1];
1146 t[4] = energy0 - gradient0 * (r20 -
r2_table[i+1]);
1154 BigReal c = ( 3.0 * (v2 - v1) - x * (2.0 * g1 + g2) ) / ( x * x );
1155 BigReal d = ( -2.0 * (v2 - v1) + x * (g1 + g2) ) / ( x * x * x );
1158 for (
int k=0; k < 2; ++k ) {
1159 BigReal dv = (v1 - v2) + ( ( d * x + c ) * x + g1 ) * x;
1160 BigReal dg = (g1 - g2) + ( 3.0 * d * x + 2.0 * c ) * x;
1161 c -= ( 3.0 * dv - x * dg ) / ( x * x );
1162 d -= ( -2.0 * dv + x * dg ) / ( x * x * x );
1190 for ( i=0,t=t0; i<(n-1); ++i,t+=4 ) {
1192 const BigReal r2_del = r2_base / 64.0;
1197 BigReal dv = ( ( t[3] * x + t[2] ) * x + t[1] ) * x + t[0] - t[4];
1198 BigReal dg = ( 3.0 * t[3] * x + 2.0 * t[2] ) * x + t[1] - t[5];
1199 if ( t[4] != 0. && fabs(dv/t[4]) > fdvmax ) {
1200 fdvmax = fabs(dv/t[4]); fdvmax_r = r;
1202 if ( fabs(dv) > dvmax ) {
1203 dvmax = fabs(dv); dvmax_r = r;
1205 if ( t[5] != 0. && fabs(dg/t[5]) > fdgmax ) {
1206 fdgmax = fabs(dg/t[5]); fdgmax_r = r;
1208 if ( fabs(dg) > dgmax ) {
1209 dgmax = fabs(dg); dgmax_r = r;
1211 BigReal gcd = (t[4] - t[0]) / x;
1212 BigReal gcd_prec = (fabs(t[0]) + fabs(t[4])) * 1.e-15 / x;
1213 gcm = 0.9 * gcm + 0.1 * fabs(t[5]);
1214 BigReal gca = 0.5 * (t[1] + t[5]);
1215 BigReal gci = ( 0.75 * t[3] * x + t[2] ) * x + t[1];
1216 BigReal rc = sqrt(r2 + 0.5 * x);
1218 if ( dgcda != 0. && fabs(dgcda) < gcd_prec ) {
1223 if ( dgcdi != 0. && fabs(dgcdi) < gcd_prec ) {
1228 if ( t[1]*t[5] > 0. && gcm != 0. && fabs(dgcda/gcm) > fdgcdamax ) {
1229 fdgcdamax = fabs(dgcda/gcm); fdgcdamax_r = rc;
1231 if ( fabs(dgcda) > fdgcdamax ) {
1232 dgcdamax = fabs(dgcda); dgcdamax_r = rc;
1234 if ( t[1]*t[5] > 0. && gcm != 0. && fabs(dgcdi/gcm) > fdgcdimax ) {
1235 fdgcdimax = fabs(dgcdi/gcm); fdgcdimax_r = rc;
1237 if ( fabs(dgcdi) > fdgcdimax ) {
1238 dgcdimax = fabs(dgcdi); dgcdimax_r = rc;
1240 if ( t[1]*t[5] > 0. && gcm != 0. && fabs(dgcai/gcm) > fdgcaimax ) {
1241 fdgcaimax = fabs(dgcai/gcm); fdgcaimax_r = rc;
1243 if ( fabs(dgcai) > fdgcaimax ) {
1244 dgcaimax = fabs(dgcai); dgcaimax_r = rc;
1247 CkPrintf(
"TABLE %s %g %g %g %g\n",table_name,rc,dgcda/gcm,dgcda,gci);
1248 if (dv != 0.) CkPrintf(
"TABLE %d ENERGY ERROR %g AT %g (%d)\n",j,dv,r,i);
1249 if (dg != 0.) CkPrintf(
"TABLE %d FORCE ERROR %g AT %g (%d)\n",j,dg,r,i);
1252 if ( dvmax != 0.0 ) {
1253 iout <<
iINFO <<
"ABSOLUTE IMPRECISION IN " << table_name <<
1254 " TABLE ENERGY: " << dvmax <<
" AT " << dvmax_r <<
"\n" <<
endi;
1256 if ( fdvmax != 0.0 ) {
1257 iout <<
iINFO <<
"RELATIVE IMPRECISION IN " << table_name <<
1258 " TABLE ENERGY: " << fdvmax <<
" AT " << fdvmax_r <<
"\n" <<
endi;
1260 if ( dgmax != 0.0 ) {
1261 iout <<
iINFO <<
"ABSOLUTE IMPRECISION IN " << table_name <<
1262 " TABLE FORCE: " << dgmax <<
" AT " << dgmax_r <<
"\n" <<
endi;
1264 if ( fdgmax != 0.0 ) {
1265 iout <<
iINFO <<
"RELATIVE IMPRECISION IN " << table_name <<
1266 " TABLE FORCE: " << fdgmax <<
" AT " << fdgmax_r <<
"\n" <<
endi;
1268 if (fdgcdamax != 0.0 ) {
1269 iout <<
iINFO <<
"INCONSISTENCY IN " << table_name <<
1270 " TABLE ENERGY VS FORCE: " << fdgcdamax <<
" AT " << fdgcdamax_r <<
"\n" <<
endi;
1271 if ( fdgcdamax > 0.1 ) {
1273 iout <<
iERROR <<
"CALCULATED " << table_name <<
1274 " FORCE MAY NOT MATCH ENERGY! POSSIBLE BUG!\n";
1278 if (0 && fdgcdimax != 0.0 ) {
1279 iout <<
iINFO <<
"INCONSISTENCY IN " << table_name <<
1280 " TABLE ENERGY VS FORCE: " << fdgcdimax <<
" AT " << fdgcdimax_r <<
"\n" <<
endi;
1282 if ( 0 && fdgcaimax != 0.0 ) {
1283 iout <<
iINFO <<
"INCONSISTENCY IN " << table_name <<
1284 " TABLE AVG VS INT FORCE: " << fdgcaimax <<
" AT " << fdgcaimax_r <<
"\n" <<
endi;
1290 for ( i=0; i<4*n; ++i ) {
1296 for ( i=0; i<n; ++i ) {
1297 for (
int j=0; j<4; ++j ) {
1308 for ( i=0; i<n; ++i ) {
1342 sprintf(fname,
"/tmp/namd.table.pe%d.dat",CkMyPe());
1343 FILE *f = fopen(fname,
"w");
1344 for ( i=0; i<(n-1); ++i ) {
1346 const BigReal r2_del = r2_base / 64.0;
1352 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1354 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1356 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1358 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1360 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1362 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1364 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1371 for ( i=0; i<n; ++i ) {
1372 BigReal tmp0, tmp1, tmp2, tmp3;
1385 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 calc_self_energy_disp_fullelect(nonbonded *)
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(* calcDispPair)(nonbonded *)
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
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 void calc_pair_energy_disp_merge_fullelect(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 calc_pair_disp_fullelect(nonbonded *)
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(* calcFullDispSelfEnergy)(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 *)
static void calc_self_disp_merge_fullelect(nonbonded *)
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 *)
static void calc_self_energy_disp_merge_fullelect(nonbonded *)
static void(* calcSlowPair)(nonbonded *)
static void calc_pair_energy_fullelect_go(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_pair_energy_disp_fullelect(nonbonded *)
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 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_disp_merge_fullelect(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 *)
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 *)
static void(* calcDispSelfEnergy)(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 *)
int get_num_vdw_params(void)
static BigReal switchOn_1
static Bool vdwForceSwitching
static void(* calcDispSelf)(nonbonded *)
static void(* calcDispPairEnergy)(nonbonded *)
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(* calcFullDispPair)(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_energy_disp(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 void calc_self_disp_fullelect(nonbonded *)
static BigReal LJewaldcof
static void(* calcFullPairEnergy)(nonbonded *)
static BigReal * corr_table
static void calc_self_energy_disp(nonbonded *)
static BigReal * table_short
static void calc_self(nonbonded *)
#define SPOLY(pg, pdg, ra, split)
static void calc_self_fullelect_ti(nonbonded *)
static void calc_self_disp(nonbonded *)
static void calc_pair_fullelect_tabener(nonbonded *)
static void calc_pair_energy_merge_fullelect_ti(nonbonded *)
std::ostream & iERROR(std::ostream &s)
static void(* calcFullDispPairEnergy)(nonbonded *)
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(* calcFullDispSelf)(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_self_merge_fullelect_pprof(nonbonded *)
static void calc_self_energy_slow_fullelect_go(nonbonded *)
static void calc_pair_disp(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 *)