"platforms/opencl/include/OpenCLIntegrationUtilities.h" did not exist on "fa2c41927c878332b7f9bc5856025fd04f6d95ba"
Commit fd64ac97 authored by Rossen Apostolov's avatar Rossen Apostolov
Browse files

Ewald method potential is now compared to the exact value of the Madelung energy.

parent 68ef42c0
......@@ -84,8 +84,21 @@ void testEwaldExact() {
State state = context.getState(State::Forces | State::Energy);
const vector<Vec3>& forces = state.getForces();
// Compare against Gromacs result for now
ASSERT_EQUAL_TOL(-430494.0, state.getPotentialEnergy(), 10*TOL);
// The potential energy of an ion in a crystal is
// E = - (M*e/ 4*pi*epsilon0*a0),
// where
// M : Madelung constant (dimensionless, for FCC cells such as NaCl it is 1.7476)
// e : 1.6022 × 10−19 C
// 4*pi*epsilon0 : 1.112 × 10−10 C²/(J m)
// a0 : 0.282 x 10-9 m (perfect cell)
// Therefore
double exactEnergy = -8.9290; // eV
exactEnergy = -4.4645; // eV per 1 ion
exactEnergy = -7.15292069e-19; // J per ion
exactEnergy = -430.820; // kJ/mol per ion
ASSERT_EQUAL_TOL(exactEnergy * numParticles , state.getPotentialEnergy(), 100*TOL);
// Gromacs result
// ASSERT_EQUAL_TOL(-430494.0, state.getPotentialEnergy(), 10*TOL);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment