|
74 | 74 |
|
75 | 75 | #include <tuple> |
76 | 76 |
|
77 | | -inline ParticleForce calc_non_bonded_pair_force( |
78 | | - Particle const &p1, Particle const &p2, IA_parameters const &ia_params, |
79 | | - Utils::Vector3d const &d, double const dist, |
80 | | - Coulomb::ShortRangeForceKernel::kernel_type const *coulomb_kernel) { |
| 77 | +inline ParticleForce calc_central_radial_force(Particle const &p1, |
| 78 | + Particle const &p2, |
| 79 | + IA_parameters const &ia_params, |
| 80 | + Utils::Vector3d const &d, |
| 81 | + double const dist) { |
81 | 82 |
|
82 | 83 | ParticleForce pf{}; |
83 | 84 | double force_factor = 0; |
@@ -133,19 +134,39 @@ inline ParticleForce calc_non_bonded_pair_force( |
133 | 134 | #ifdef LJCOS2 |
134 | 135 | force_factor += ljcos2_pair_force_factor(ia_params, dist); |
135 | 136 | #endif |
136 | | -/* Thole damping */ |
137 | | -#ifdef THOLE |
138 | | - pf.f += thole_pair_force(p1, p2, ia_params, d, dist, coulomb_kernel); |
139 | | -#endif |
140 | 137 | /* tabulated */ |
141 | 138 | #ifdef TABULATED |
142 | 139 | force_factor += tabulated_pair_force_factor(ia_params, dist); |
143 | 140 | #endif |
| 141 | + pf.f += force_factor * d; |
| 142 | + return pf; |
| 143 | +} |
| 144 | + |
| 145 | +inline ParticleForce calc_central_radial_charge_force( |
| 146 | + Particle const &p1, Particle const &p2, IA_parameters const &ia_params, |
| 147 | + Utils::Vector3d const &d, double const dist, |
| 148 | + Coulomb::ShortRangeForceKernel::kernel_type const *coulomb_kernel) { |
| 149 | + |
| 150 | + ParticleForce pf{}; |
| 151 | +/* Thole damping */ |
| 152 | +#ifdef THOLE |
| 153 | + pf.f += thole_pair_force(p1, p2, ia_params, d, dist, coulomb_kernel); |
| 154 | +#endif |
| 155 | + |
| 156 | + return pf; |
| 157 | +} |
| 158 | + |
| 159 | +inline ParticleForce calc_non_central_force(Particle const &p1, |
| 160 | + Particle const &p2, |
| 161 | + IA_parameters const &ia_params, |
| 162 | + Utils::Vector3d const &d, |
| 163 | + double const dist) { |
| 164 | + |
| 165 | + ParticleForce pf{}; |
144 | 166 | /* Gay-Berne */ |
145 | 167 | #ifdef GAY_BERNE |
146 | 168 | pf += gb_pair_force(p1.quat(), p2.quat(), ia_params, d, dist); |
147 | 169 | #endif |
148 | | - pf.f += force_factor * d; |
149 | 170 | return pf; |
150 | 171 | } |
151 | 172 |
|
@@ -189,10 +210,15 @@ inline void add_non_bonded_pair_force( |
189 | 210 |
|
190 | 211 | if (dist < ia_params.max_cut) { |
191 | 212 | #ifdef EXCLUSIONS |
192 | | - if (do_nonbonded(p1, p2)) |
| 213 | + if (do_nonbonded(p1, p2)) { |
| 214 | +#endif |
| 215 | + pf += calc_central_radial_force(p1, p2, ia_params, d, dist); |
| 216 | + pf += calc_central_radial_charge_force(p1, p2, ia_params, d, dist, |
| 217 | + coulomb_kernel); |
| 218 | + pf += calc_non_central_force(p1, p2, ia_params, d, dist); |
| 219 | +#ifdef EXCLUSIONS |
| 220 | + } |
193 | 221 | #endif |
194 | | - pf += calc_non_bonded_pair_force(p1, p2, ia_params, d, dist, |
195 | | - coulomb_kernel); |
196 | 222 | } |
197 | 223 |
|
198 | 224 | /***********************************************/ |
|
0 commit comments