1 |
gezelter |
1342 |
Madelung Energy Sample Calculation |
2 |
|
|
|
3 |
|
|
The sample in this directory provides a way of checking the value of |
4 |
|
|
the Madelung Energy for a perfect crystal of NaCl. The relevant |
5 |
|
|
quantities are: |
6 |
|
|
|
7 |
|
|
M (Madelung constant) = 1.74756 |
8 |
|
|
a (lattice constant) = 5.65 Angstroms |
9 |
|
|
q^2 / (4 pi e0 a) = 58.77233 kcal / mol |
10 |
|
|
M q^2 / (4 pi e0 a) = 102.708173 kcal / mol |
11 |
|
|
|
12 |
|
|
The file NaCl.md contains 8000 ions, so the total electrostatic energy |
13 |
|
|
of the perfect crystal in this file should be: |
14 |
|
|
|
15 |
|
|
V_electrostatic = -821665.38 kcal / mol |
16 |
|
|
|
17 |
|
|
Using different electrostatic calculation methods, we can get quite |
18 |
|
|
close to this value. |
19 |
|
|
|
20 |
|
|
For example, with : |
21 |
|
|
electrostaticSummationMethod = "shifted_force"; |
22 |
|
|
electrostaticScreeningMethod = "damped"; |
23 |
|
|
cutoffRadius = 28; |
24 |
|
|
dampingAlpha = 0.14159292; |
25 |
|
|
switchingRadius = 28; |
26 |
|
|
|
27 |
|
|
The resultant electrostatic potential is: -821667.88 kcal / mol |
28 |
|
|
|
29 |
gezelter |
1390 |
To obtain values for the electrostatic potential in OpenMD, we add the |
30 |
gezelter |
1342 |
ELECTROSTATIC_POTENTIAL keyword to the end of the statFileFormat: |
31 |
|
|
|
32 |
|
|
statFileFormat = "TIME|TOTAL_ENERGY|POTENTIAL_ENERGY|KINETIC_ENERGY|TEMPERATURE|PRESSURE|VOLUME|CONSERVED_QUANTITY|ELECTROSTATIC_POTENTIAL"; |
33 |
|
|
|
34 |
|
|
Note: Converging the Madelung energy often requires quite the use of |
35 |
|
|
very large cutoff distances (on the order of 28 Angstroms). This can |
36 |
|
|
result in extremely large neighbor lists, well beyond the size |
37 |
gezelter |
1390 |
normally encountered by OpenMD. If you are interested in Madelung |
38 |
|
|
energy calculations, you may need to recompile OpenMD after making |
39 |
gezelter |
1342 |
changes to the following parameters in |
40 |
|
|
|
41 |
|
|
src/UseTheForce/DarkSide/neighborLists.F90 : |
42 |
|
|
|
43 |
|
|
integer, save :: listMultiplier = 200 |
44 |
|
|
integer, parameter :: maxAllocations = 25 |
45 |
|
|
|
46 |
|
|
|
47 |
gezelter |
1390 |
This recompilation should not be required in future versions of OpenMD. |