251 if ( CkMyRank() )
return;
318 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 319 NAMD_die(
"drudeNbthole is not supported in CUDA version");
322 NAMD_die(
"drudeNbthole is not supported with locally enhanced sampling");
324 NAMD_die(
"drudeNbthole is not supported with pair interaction calculation");
326 NAMD_die(
"drudeNbthole is not supported with pressure profile calculation");
363 }
else if (
lesOn ) {
364 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 365 NAMD_die(
"Locally enhanced sampling is not supported in CUDA version");
374 if (ip && jp && ip != jp) {
400 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 401 NAMD_die(
"Pressure profile calculation is not supported in CUDA version");
423 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 424 NAMD_die(
"Pair interaction calculation is not supported in CUDA version");
432 }
else if ( tabulatedEnergies ) {
433 #if defined(NAMD_CUDA) || defined(NAMD_HIP) 434 NAMD_die(
"Tabulated energies is not supported in CUDA version");
454 NAMD_die(
"Go forces is not supported in CUDA version");
520 double switchOn6 = switchOn3 * switchOn3;
521 double cutoff6 = cutoff3 * cutoff3;
529 }
else if (
simParams->martiniSwitching ) {
565 const int MSMSplit =
simParams->MSMSplit;
569 BigReal TwoBySqrtPi = 1.12837916709551;
588 NAMD_die(
"Sorry, XPLOR splitting not supported.");
592 NAMD_die(
"Sorry, SHARP splitting not supported.");
596 NAMD_die(
"Unknown splitting type found!");
609 iout <<
iINFO <<
"NONBONDED TABLE R-SQUARED SPACING: " <<
615 while ( (
cutoff2 +
r2_delta) > r2_tmp ) { r2_tmp *= 2.0; cutoff2_exp += 1; }
620 #if defined(NAMD_MIC) 621 int n_16 = (n + 15) & (~15);
625 iout <<
iINFO <<
"NONBONDED TABLE SIZE: " <<
626 n <<
" POINTS\n" <<
endi;
630 #if defined(NAMD_MIC) 633 while ( ((
long)table_align) % 128 ) ++table_align;
634 mic_table_base_ptr = table_align;
636 mic_table_n_16 = n_16;
650 while ( ((
long)table_align) % 128 ) ++table_align;
678 if (
simParams->vdwGeometricSigma) avxTilesMode = 2;
685 if (avxTilesMode == 1) {
688 for (
int i = 0; i < table_dim; i++)
689 for (
int j = i+1; j < table_dim; j++)
693 if (avxTilesMode > 1)
694 iout <<
iINFO <<
"AVX-512 TILES WILL USE SHORT-RANGE INTERPOLATION (" 695 << avxTilesMode <<
")\n";
699 if ( avx_tiles_eps4_sigma )
delete [] avx_tiles_eps4_sigma;
700 if ( avx_tiles_eps4_sigma_14 )
delete [] avx_tiles_eps4_sigma_14;
701 avx_tiles_eps4_sigma =
new float[num_params*2];
702 avx_tiles_eps4_sigma_14 =
new float[num_params*2];
703 for (
int i = 0; i < num_params; i++) {
704 Real sigma, sigma_14, epsilon, epsilon_14;
709 epsilon = epsilon_14 = 0.0;
711 avx_tiles_eps4_sigma[i*2] = 4.0 *
scaling * epsilon;
712 avx_tiles_eps4_sigma[i*2 + 1] = sigma;
713 avx_tiles_eps4_sigma_14[i*2] = 4.0 *
scaling * epsilon_14;
714 avx_tiles_eps4_sigma_14[i*2 + 1] = sigma_14;
720 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES) 721 if ( knl_table_alloc )
delete [] knl_table_alloc;
722 if ( KNL_TABLE_MAX_R_1 < 1.f || KNL_TABLE_FACTOR < 1 ||
724 static_cast<int>(1.0 / KNL_TABLE_MAX_R_1 * KNL_TABLE_SIZE))
725 NAMD_bug(
"Inconsistent KNL preprocessor settings.");
727 knl_table_alloc =
new float[10*KNL_TABLE_SIZE];
729 knl_table_alloc =
new float[8*KNL_TABLE_SIZE];
731 knl_fast_ener_table = knl_table_alloc;
732 knl_fast_grad_table = knl_table_alloc + KNL_TABLE_SIZE;
733 knl_scor_ener_table = knl_table_alloc + 2*KNL_TABLE_SIZE;
734 knl_scor_grad_table = knl_table_alloc + 3*KNL_TABLE_SIZE;
735 knl_slow_ener_table = knl_table_alloc + 4*KNL_TABLE_SIZE;
736 knl_slow_grad_table = knl_table_alloc + 5*KNL_TABLE_SIZE;
737 knl_excl_ener_table = knl_table_alloc + 6*KNL_TABLE_SIZE;
738 knl_excl_grad_table = knl_table_alloc + 7*KNL_TABLE_SIZE;
739 knl_fast_ener_table[0] = 0.;
740 knl_fast_grad_table[0] = 0.;
741 knl_scor_ener_table[0] = 0.;
742 knl_scor_grad_table[0] = 0.;
743 knl_slow_ener_table[0] = 0.;
744 knl_slow_grad_table[0] = 0.;
745 knl_excl_ener_table[0] = 0.;
746 knl_excl_grad_table[0] = 0.;
748 knl_corr_ener_table = knl_table_alloc + 8*KNL_TABLE_SIZE;
749 knl_corr_grad_table = knl_table_alloc + 9*KNL_TABLE_SIZE;
750 knl_corr_ener_table[0] = 0.;
751 knl_corr_grad_table[0] = 0.;
753 for (
int knl_table = 0; knl_table < 2; ++knl_table ) {
756 nn = KNL_TABLE_SIZE-1;
758 for ( i=1; i<nn; ++i ) {
761 for ( i=1; i<n; ++i ) {
765 const BigReal r2_del = r2_base / 64.0;
770 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES) 772 r = (double)(KNL_TABLE_FACTOR-2)/(double)(i);
776 if ( r2 <= r2_limit ) r2_delta_i = i;
789 BigReal fast_energy, fast_gradient;
790 BigReal scor_energy, scor_gradient;
791 BigReal slow_energy, slow_gradient;
796 BigReal corr_energy, corr_gradient;
803 corr_gradient =
pi_ewaldcof*exp(-(tmp_a*tmp_a))*r + tmp_b;
804 }
else if ( MSMOn ) {
808 SPOLY(&g, &dg, r_a, MSMSplit);
809 corr_energy = 1 - r_a * g;
810 corr_gradient = 1 + r_a*r_a * dg;
812 corr_energy = corr_gradient = 0;
818 fast_gradient = -1.0/r2;
819 scor_energy = scor_gradient = 0;
820 slow_energy = slow_gradient = 0;
824 shiftVal *= shiftVal;
826 fast_energy = shiftVal/r;
827 fast_gradient = dShiftVal/r - shiftVal/r2;
828 scor_energy = scor_gradient = 0;
829 slow_energy = slow_gradient = 0;
834 const BigReal COUL_SWITCH = 0.;
840 BigReal r12 = (r-COUL_SWITCH)*(r-COUL_SWITCH);
841 BigReal r13 = (r-COUL_SWITCH)*(r-COUL_SWITCH)*(r-COUL_SWITCH);
842 BigReal shiftVal = -(A1/3.0)*r13 - (B1/4.0)*r12*r12 - X1;
843 BigReal dShiftVal = -A1*r12 - B1*r13;
844 fast_energy = (1/r) + shiftVal;
845 fast_gradient = -1/(r2) + dShiftVal;
846 scor_energy = scor_gradient = 0;
847 slow_energy = slow_gradient = 0;
855 scor_energy = slow_energy + (corr_energy - 1.0)/r;
856 scor_gradient = slow_gradient - (corr_gradient - 1.0)/r2;
858 fast_energy = 1.0/r - slow_energy;
859 fast_gradient = -1.0/r2 - slow_gradient;
868 - 15.0*(r/
cutoff) + 10.0);
870 - 45.0 *(r/
cutoff) + 20.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;
883 fast_gradient *= 0.5 * r_1;
884 scor_gradient *= 0.5 * r_1;
885 slow_gradient *= 0.5 * r_1;
891 BigReal vdwa_energy, vdwa_gradient;
892 BigReal vdwb_energy, vdwb_gradient;
894 const BigReal r_6 = r_2*r_2*r_2;
904 vdwa_energy =
k_vdwa * tmpa * tmpa;
906 vdwb_energy =
k_vdwb * tmpb * tmpb;
907 vdwa_gradient = -6.0 *
k_vdwa * tmpa * r_2 * r_6;
908 vdwb_gradient = -3.0 *
k_vdwb * tmpb * r_2 * r_2 * r_1;
910 vdwa_energy = r_12 +
v_vdwa;
911 vdwb_energy = r_6 +
v_vdwb;
912 vdwa_gradient = -6.0 * r_2 * r_12;
913 vdwb_gradient = -3.0 * r_2 * r_6;
915 }
else if (
simParams->martiniSwitching ) {
930 BigReal LJshifttempA = -(A12/3)*r13 - (B12/4)*r12*r12 - C12;
931 BigReal LJshifttempB = -(A6/3)*r13 - (B6/4)*r12*r12 - C6;
937 BigReal LJdshifttempA = -A12*r12 - B12*r13;
938 BigReal LJdshifttempB = -A6*r12 - B6*r13;
940 ( r2 >
switchOn2 ? LJdshifttempA*0.5*r_1 : 0 );
942 ( r2 >
switchOn2 ? LJdshifttempB*0.5*r_1 : 0 );
952 vdwa_energy = r_12 + shiftValA;
953 vdwb_energy = r_6 + shiftValB;
955 vdwa_gradient = -6/pow(r,14) + dshiftValA ;
956 vdwb_gradient = -3/pow(r,8) + dshiftValB;
968 vdwa_energy = switchVal * r_12;
969 vdwb_energy = switchVal * r_6;
971 vdwa_gradient = ( dSwitchVal - 6.0 * switchVal * r_2 ) * r_12;
972 vdwb_gradient = ( dSwitchVal - 3.0 * switchVal * r_2 ) * r_6;
976 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES) 978 knl_fast_ener_table[i] = -1.*fast_energy;
979 knl_fast_grad_table[i] = -2.*fast_gradient;
980 knl_scor_ener_table[i] = -1.*scor_energy;
981 knl_scor_grad_table[i] = -2.*scor_gradient;
982 knl_slow_ener_table[i] = (-1.*scor_energy - (
scale14-1)*slow_energy) /
984 knl_slow_grad_table[i] = (-2.*scor_gradient -
986 knl_excl_ener_table[i] = slow_energy - scor_energy;
987 knl_excl_grad_table[i] = 2.*(slow_gradient - scor_gradient);
989 knl_corr_ener_table[i] = -1.*(fast_energy + scor_energy);
990 knl_corr_grad_table[i] = -2.*(fast_gradient + scor_gradient);
993 knl_fast_ener_table[nn] = knl_fast_ener_table[i];
994 knl_fast_grad_table[nn] = knl_fast_grad_table[i];
995 knl_scor_ener_table[nn] = knl_scor_ener_table[i];
996 knl_scor_grad_table[nn] = knl_scor_grad_table[i];
997 knl_slow_ener_table[nn] = knl_slow_ener_table[i];
998 knl_slow_grad_table[nn] = knl_slow_grad_table[i];
999 knl_excl_ener_table[nn] = knl_excl_ener_table[i];
1000 knl_excl_grad_table[nn] = knl_excl_grad_table[i];
1002 knl_corr_ener_table[nn] = knl_corr_ener_table[i];
1003 knl_corr_grad_table[nn] = knl_corr_grad_table[i];
1008 *(fast_i++) = fast_energy;
1009 *(fast_i++) = fast_gradient;
1012 *(scor_i++) = scor_energy;
1013 *(scor_i++) = scor_gradient;
1016 *(slow_i++) = slow_energy;
1017 *(slow_i++) = slow_gradient;
1020 *(vdwa_i++) = vdwa_energy;
1021 *(vdwa_i++) = vdwa_gradient;
1024 *(vdwb_i++) = vdwb_energy;
1025 *(vdwb_i++) = vdwb_gradient;
1029 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES) 1034 #if defined(NAMD_KNL) || defined(NAMD_AVXTILES) 1038 if ( ! r2_delta_i ) {
1039 NAMD_bug(
"Failed to find table entry for r2 == r2_limit\n");
1042 NAMD_bug(
"Found bad table entry for r2 == r2_limit\n");
1046 const char *table_name =
"XXXX";
1047 int smooth_short = 0;
1048 for ( j=0; j<5; ++j ) {
1053 table_name =
"FAST";
1058 table_name =
"SCOR";
1063 table_name =
"SLOW";
1068 table_name =
"VDWA";
1073 table_name =
"VDWB";
1078 t0[0] = t0[4] - t0[5] * (
r2_delta / 64.0 );
1082 if ( smooth_short ) {
1083 BigReal energy0 = t0[4*r2_delta_i];
1084 BigReal gradient0 = t0[4*r2_delta_i+1];
1086 t0[0] = energy0 - gradient0 * (r20 -
r2_table[0]);
1090 for ( i=0,t=t0; i<(n-1); ++i,t+=4 ) {
1093 NAMD_bug(
"Bad table delta calculation.\n");
1095 if ( smooth_short && i+1 < r2_delta_i ) {
1096 BigReal energy0 = t0[4*r2_delta_i];
1097 BigReal gradient0 = t0[4*r2_delta_i+1];
1099 t[4] = energy0 - gradient0 * (r20 -
r2_table[i+1]);
1107 BigReal c = ( 3.0 * (v2 - v1) - x * (2.0 * g1 + g2) ) / ( x * x );
1108 BigReal d = ( -2.0 * (v2 - v1) + x * (g1 + g2) ) / ( x * x * x );
1111 for (
int k=0; k < 2; ++k ) {
1112 BigReal dv = (v1 - v2) + ( ( d * x + c ) * x + g1 ) * x;
1113 BigReal dg = (g1 - g2) + ( 3.0 * d * x + 2.0 * c ) * x;
1114 c -= ( 3.0 * dv - x * dg ) / ( x * x );
1115 d -= ( -2.0 * dv + x * dg ) / ( x * x * x );
1143 for ( i=0,t=t0; i<(n-1); ++i,t+=4 ) {
1145 const BigReal r2_del = r2_base / 64.0;
1150 BigReal dv = ( ( t[3] * x + t[2] ) * x + t[1] ) * x + t[0] - t[4];
1151 BigReal dg = ( 3.0 * t[3] * x + 2.0 * t[2] ) * x + t[1] - t[5];
1152 if ( t[4] != 0. && fabs(dv/t[4]) > fdvmax ) {
1153 fdvmax = fabs(dv/t[4]); fdvmax_r = r;
1155 if ( fabs(dv) > dvmax ) {
1156 dvmax = fabs(dv); dvmax_r = r;
1158 if ( t[5] != 0. && fabs(dg/t[5]) > fdgmax ) {
1159 fdgmax = fabs(dg/t[5]); fdgmax_r = r;
1161 if ( fabs(dg) > dgmax ) {
1162 dgmax = fabs(dg); dgmax_r = r;
1164 BigReal gcd = (t[4] - t[0]) / x;
1165 BigReal gcd_prec = (fabs(t[0]) + fabs(t[4])) * 1.e-15 / x;
1166 gcm = 0.9 * gcm + 0.1 * fabs(t[5]);
1167 BigReal gca = 0.5 * (t[1] + t[5]);
1168 BigReal gci = ( 0.75 * t[3] * x + t[2] ) * x + t[1];
1169 BigReal rc = sqrt(r2 + 0.5 * x);
1171 if ( dgcda != 0. && fabs(dgcda) < gcd_prec ) {
1176 if ( dgcdi != 0. && fabs(dgcdi) < gcd_prec ) {
1181 if ( t[1]*t[5] > 0. && gcm != 0. && fabs(dgcda/gcm) > fdgcdamax ) {
1182 fdgcdamax = fabs(dgcda/gcm); fdgcdamax_r = rc;
1184 if ( fabs(dgcda) > fdgcdamax ) {
1185 dgcdamax = fabs(dgcda); dgcdamax_r = rc;
1187 if ( t[1]*t[5] > 0. && gcm != 0. && fabs(dgcdi/gcm) > fdgcdimax ) {
1188 fdgcdimax = fabs(dgcdi/gcm); fdgcdimax_r = rc;
1190 if ( fabs(dgcdi) > fdgcdimax ) {
1191 dgcdimax = fabs(dgcdi); dgcdimax_r = rc;
1193 if ( t[1]*t[5] > 0. && gcm != 0. && fabs(dgcai/gcm) > fdgcaimax ) {
1194 fdgcaimax = fabs(dgcai/gcm); fdgcaimax_r = rc;
1196 if ( fabs(dgcai) > fdgcaimax ) {
1197 dgcaimax = fabs(dgcai); dgcaimax_r = rc;
1200 CkPrintf(
"TABLE %s %g %g %g %g\n",table_name,rc,dgcda/gcm,dgcda,gci);
1201 if (dv != 0.) CkPrintf(
"TABLE %d ENERGY ERROR %g AT %g (%d)\n",j,dv,r,i);
1202 if (dg != 0.) CkPrintf(
"TABLE %d FORCE ERROR %g AT %g (%d)\n",j,dg,r,i);
1205 if ( dvmax != 0.0 ) {
1206 iout <<
iINFO <<
"ABSOLUTE IMPRECISION IN " << table_name <<
1207 " TABLE ENERGY: " << dvmax <<
" AT " << dvmax_r <<
"\n" <<
endi;
1209 if ( fdvmax != 0.0 ) {
1210 iout <<
iINFO <<
"RELATIVE IMPRECISION IN " << table_name <<
1211 " TABLE ENERGY: " << fdvmax <<
" AT " << fdvmax_r <<
"\n" <<
endi;
1213 if ( dgmax != 0.0 ) {
1214 iout <<
iINFO <<
"ABSOLUTE IMPRECISION IN " << table_name <<
1215 " TABLE FORCE: " << dgmax <<
" AT " << dgmax_r <<
"\n" <<
endi;
1217 if ( fdgmax != 0.0 ) {
1218 iout <<
iINFO <<
"RELATIVE IMPRECISION IN " << table_name <<
1219 " TABLE FORCE: " << fdgmax <<
" AT " << fdgmax_r <<
"\n" <<
endi;
1221 if (fdgcdamax != 0.0 ) {
1222 iout <<
iINFO <<
"INCONSISTENCY IN " << table_name <<
1223 " TABLE ENERGY VS FORCE: " << fdgcdamax <<
" AT " << fdgcdamax_r <<
"\n" <<
endi;
1224 if ( fdgcdamax > 0.1 ) {
1226 iout <<
iERROR <<
"CALCULATED " << table_name <<
1227 " FORCE MAY NOT MATCH ENERGY! POSSIBLE BUG!\n";
1231 if (0 && fdgcdimax != 0.0 ) {
1232 iout <<
iINFO <<
"INCONSISTENCY IN " << table_name <<
1233 " TABLE ENERGY VS FORCE: " << fdgcdimax <<
" AT " << fdgcdimax_r <<
"\n" <<
endi;
1235 if ( 0 && fdgcaimax != 0.0 ) {
1236 iout <<
iINFO <<
"INCONSISTENCY IN " << table_name <<
1237 " TABLE AVG VS INT FORCE: " << fdgcaimax <<
" AT " << fdgcaimax_r <<
"\n" <<
endi;
1243 for ( i=0; i<4*n; ++i ) {
1249 for ( i=0; i<n; ++i ) {
1250 for (
int j=0; j<4; ++j ) {
1261 for ( i=0; i<n; ++i ) {
1295 sprintf(fname,
"/tmp/namd.table.pe%d.dat",CkMyPe());
1296 FILE *f = fopen(fname,
"w");
1297 for ( i=0; i<(n-1); ++i ) {
1299 const BigReal r2_del = r2_base / 64.0;
1305 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1307 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1309 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1311 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1313 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1315 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1317 fprintf(f,
" %g %g %g %g", t[0], t[1], t[2], t[3]);
1324 for ( i=0; i<n; ++i ) {
1325 BigReal tmp0, tmp1, tmp2, tmp3;
1338 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_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 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 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_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 *)
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(* 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_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_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 *)
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 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 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 void(* calcFullPairEnergy)(nonbonded *)
static BigReal * corr_table
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_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 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_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 *)