Database: H-bond and electric field correlations for water in highly hydrated crystals
Anik Sen, Pavlin D. Mitev, Anders Eriksson, and Kersti Hermansson,
International Journal of Quantum Chemistry, 116, ( 2016), 67-80
DOI: 10.1002/qua.25022
ASE format database with all structures, Bader and Wannier analysis, and OH stretching frequency published.
$> ase db IJQC.116.db -c id,name,method,pbc,charge,volume,energy
id|name |method|pbc|charge| volume| energy
1|Al(NO3)3.9H2O|PBE-D2|TTT| 0.000|1421.939|-882.352
2|MgSO4.11H2O |PBE-D2|TTT| 0.000| 680.318|-405.280
3|MgSO4.7H2O |PBE-D2|TTT| 0.000| 933.902|-571.405
4|Na2CO3.10H2O |PBE-D2|TTT| 0.000|1219.089|-752.414
You can use web browser to look on common prperties
$> ase db IJQC.116.db -w * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
Here are some Python scripts with examples to extract/calculate properties from the database.
Download the package, and setup the environmental variables to use the tools.
export PATH=/path_to/ase.db/bin:$PATH export PYTHONPATH=/path_to/ase.db/bin:$PYTHONPATH
ASE-db-bader-H2O_dipole.py will calculate the dipole moment for each water molecule of selected structure from the Bader analysis data saved in the database.
$> echo 'core_charges= {"H":1., "O":6., "W":-2., "Al":3., "N":5.}' > core_charges.py
$> ASE-db-bader-H2O_dipole.py IJQC.116.db 1
Origin at atom idx: 89 core_charge: 6.0
==========================================
idx: 165 Chg: -0.3572 dist: 0.999387
idx: 249 Chg: -7.3174 dist: 0.000008
idx: 6 Chg: 1.0000 dist: 1.000710
idx: 166 Chg: -0.3630 dist: 1.000718
idx: 5 Chg: 1.0000 dist: 0.999393
==========================================
Total Dipole= 2.9927 [Debye]
Total Charge= -0.0375 [e]
...
Similar for the Wannier dipole moments
$> echo 'core_charges= {"H":1., "O":6., "W":-2., "Al":3., "N":5.}' > core_charges.py
$> ASE-db-wannier-H2O_dipole.py IJQC.116.db 1
Origin at atom idx: 89 core_charge: 6.0
============================================
idx: 214 Chg: -2.0 dist: 0.478127
idx: 287 Chg: -2.0 dist: 0.293650
idx: 6 Chg: 1.0 dist: 1.000710
idx: 303 Chg: -2.0 dist: 0.479148
idx: 338 Chg: -2.0 dist: 0.359560
idx: 5 Chg: 1.0 dist: 0.999393
============================================
Total Dipole= 3.9117 [Debye]
...
EF at hydrogen positions of all water molecules can be calculated from Bader and Wannier data in a similar way. Note: ASE-db-wannier-H2O_EF.py and ASE-db-bader-H2O_EF.py require pymatgen Python library.
$> echo 'core_charges= {"H":1., "O":6., "W":-2., "Al":3., "N":5.}' > core_charges.py
$> ASE-db-wannier-H2O_EF.py IJQC.116.db 1
Running Ewald ...
Done
Ow idx: 89
==================================================
H5 H5 dist: 0.000000 chg5 1.0000
H5 H6 dist: 1.661998 chg6 1.0000
H5 W214 dist: 0.521994 chg214 -2.0000
H5 W287 dist: 1.119922 chg287 -2.0000
H5 W303 dist: 1.252862 chg303 -2.0000
H5 W338 dist: 1.190344 chg338 -2.0000
--------------------------------------------------
H5 rOH= 0.999393 EF@H_along_bisector= 0.068833 a.u.
EF@H_along_OH_bond= 0.104850 a.u.
H6 H6 dist: 0.000000 chg6 1.0000
H6 H5 dist: 1.661998 chg5 1.0000
H6 W214 dist: 1.255014 chg214 -2.0000
H6 W287 dist: 1.116823 chg287 -2.0000
H6 W303 dist: 0.522386 chg303 -2.0000
H6 W338 dist: 1.185104 chg338 -2.0000
--------------------------------------------------
H6 rOH= 1.000710 EF@H_along_bisector= 0.112705 a.u.
EF@H_along_OH_bond= 0.116978 a.u.
...
ASE-db-read-data.py is a handy tool to extract data stored in the database:
$> ASE-db-read-data.py IJQC.116.db 1 "BADER_charges"
1 -0.47735
2 -0.47836
3 -0.47735
4 -0.47836
5 -0.35715
6 -0.36297
7 -0.356
8 -0.36382
...
To check what additional data is available
$> ase db IJQC.116.db id=1 -l
Al4H72N12O72:
============================== Basic properties ==============================
Unit cell in Ang:
axis|periodic| x| y| z
1| yes| 13.973| 0.000| -0.053
2| yes| 0.000| 9.463| 0.000
3| yes| -1.123| 0.000| 10.758
...
...
Data: OH_PES_O95.H17, OH_PES_O89.H06, INCAR, KPOINTS, BADER_KPOINTS,
OH_PES_O89.H05, OH_PES_O95.H18, ATOM_labels, BADER_INCAR, WANNIER_path,
BADER_path, WANNIER_xyz, OH_PES_O92.H12, BADER_charges, OH_PES_O91.H10,
OH_PES_O91.H09, OH_PES_O94.H16, OH_PES_O96.H19, BADER_dipoles,
OH_PES_O94.H15, OH_PES_O92.H11, OH_PES_O90.H07, OH_PES_O90.H08,
CONTCAR, POTCAR_TITEL, BADER_xyz, OH_PES_O97.H21, OH_PES_O97.H22,
WANNIER_frac, OH_PES_O96.H20, OH_PES_O93.H14, DVR_data, OH_PES_O93.H13
Most keys are intuitive and here are some specific:
OH_PES_O92.H12 – contains the Potential Energy Surface for the OH stretch as decribed in the paper for the O91 and H12 pair. Indexes are running from 1…N while Python indexes 0..N-1 are used only internally.
DVR_data is a matrix (N x 4) containing harmonic frequency, E0, E1, E2 levels for H that were involved in a stretch in [cm-1] unit . The corresponding anharmonic frequency = E1-E0. The rest of the elements are 0 (zeroes).
$> ASE-db-read-data.py IJQC.116.db 1 DVR_data | awk '{if ($4>1) print ($5-$4)}'
2864.13
2803.75
2685.09
2715.34
2992.91
2566.12
2784.76
2712.4
...