20 if (!soluteScalingOn) {
26 table_alloc =
new char[2*table_dim*table_dim*
sizeof(
TableEntry) + 31];
27 char *table_align = table_alloc;
28 while ( (
long)table_align % 32 ) table_align++;
31 for (
register int i=0; i < table_dim; i++)
32 for (
register int j=i; j < table_dim; j++)
34 TableEntry *curij = &(table[2*(i*table_dim+j)]);
35 TableEntry *curji = &(table[2*(j*table_dim+i)]);
36 compute_vdw_params(i,j,curij,curij+1);
40 *(curji + 1) = *(curij + 1);
48 delete [] table_alloc;
52 void LJTable::compute_vdw_params(
int i,
int j,
74 #if defined(NAMD_CUDA) || defined(NAMD_HIP)
75 NAMD_die(
"Tabulated energies are not supported in CUDA-enabled NAMD");
78 "LJTable::compute_vdw_params: energy table index is negative");
82 cur_scaled->
A = -1 - K;
92 if ( tabulatedEnergies && ( cur->
A < 0 || cur_scaled->
A < 0 ) )
93 NAMD_die(
"LJ A is negative with tabulatedEnergies enabled");
110 Real sigma_i, sigma_i14, epsilon_i, epsilon_i14;
111 Real sigma_j, sigma_j14, epsilon_j, epsilon_j14;
113 if (!soluteScalingOn) {
120 int i_type = (i >= table_dim_org)? ss_vdw_type[i-table_dim_org]:i;
121 int j_type = (j >= table_dim_org)? ss_vdw_type[j-table_dim_org]:j;
123 &epsilon_i14,i_type);
125 &epsilon_j14,j_type);
128 useGeom ? sqrt(sigma_i*sigma_j) : 0.5*(sigma_i+sigma_j);
130 useGeom ? sqrt(sigma_i14*sigma_j14) : 0.5 * (sigma_i14+sigma_j14);
131 BigReal epsilon_ij = sqrt(epsilon_i*epsilon_j);
132 BigReal epsilon_ij14 = sqrt(epsilon_i14*epsilon_j14);
137 sigma_ij *= sigma_ij*sigma_ij;
138 sigma_ij *= sigma_ij;
139 sigma_ij14 *= sigma_ij14*sigma_ij14;
140 sigma_ij14 *= sigma_ij14;
143 cur->
B = 4.0 * sigma_ij * epsilon_ij;
144 cur->
A = cur->
B * sigma_ij;
145 cur_scaled->
B = 4.0 * sigma_ij14 * epsilon_ij14;
146 cur_scaled->
A = cur_scaled->
B * sigma_ij14;
148 if (soluteScalingOn) {
149 if (i >= table_dim_org && i < (table_dim_org+ss_dim) && j < table_dim_org) {
150 cur->
A *= sqrt(soluteScalingFactor);
151 cur->
B *= sqrt(soluteScalingFactor);
152 cur_scaled->
A *= sqrt(soluteScalingFactor);
153 cur_scaled->
B *= sqrt(soluteScalingFactor);
155 if (i < table_dim_org && j >= table_dim_org && j < (table_dim_org+ss_dim)) {
156 cur->
A *= sqrt(soluteScalingFactor);
157 cur->
B *= sqrt(soluteScalingFactor);
158 cur_scaled->
A *= sqrt(soluteScalingFactor);
159 cur_scaled->
B *= sqrt(soluteScalingFactor);
161 if (i >=table_dim_org && i < (table_dim_org+ss_dim) && j >= table_dim_org && j < (table_dim_org+ss_dim)) {
162 cur->
A *= soluteScalingFactor;
163 cur->
B *= soluteScalingFactor;
164 cur_scaled->
A *= soluteScalingFactor;
165 cur_scaled->
B *= soluteScalingFactor;
169 if ( tabulatedEnergies && ( cur->
A < 0 || cur_scaled->
A < 0 ) )
170 NAMD_die(
"LJ A is negative with tabulatedEnergies enabled");
SimParameters * simParameters
void NAMD_bug(const char *err_msg)
int get_vdw_pair_params(Index ind1, Index ind2, Real *, Real *, Real *, Real *)
void NAMD_die(const char *err_msg)
BigReal soluteScalingFactorVdw
int get_num_vdw_params(void)
int get_table_pair_params(Index, Index, int *)
void get_vdw_params(Real *sigma, Real *epsilon, Real *sigma14, Real *epsilon14, Index index)