Coordination number#
Functions for calculating the coordination numbers.
Example
>>> import torch
>>> import tad_mctc as mctc
>>>
>>> # S22 system 4: formamide dimer
>>> numbers = mctc.batch.pack((
... mctc.utils.to_number("C C N N H H H H H H O O".split()),
... mctc.utils.to_number("C O N H H H".split()),
... ))
>>>
>>> # coordinates in Bohr
>>> positions = mctc.batch.pack((
... torch.tensor([
... [-3.81469488143921, +0.09993441402912, 0.00000000000000],
... [+3.81469488143921, -0.09993441402912, 0.00000000000000],
... [-2.66030049324036, -2.15898251533508, 0.00000000000000],
... [+2.66030049324036, +2.15898251533508, 0.00000000000000],
... [-0.73178529739380, -2.28237795829773, 0.00000000000000],
... [-5.89039325714111, -0.02589114569128, 0.00000000000000],
... [-3.71254944801331, -3.73605775833130, 0.00000000000000],
... [+3.71254944801331, +3.73605775833130, 0.00000000000000],
... [+0.73178529739380, +2.28237795829773, 0.00000000000000],
... [+5.89039325714111, +0.02589114569128, 0.00000000000000],
... [-2.74426102638245, +2.16115570068359, 0.00000000000000],
... [+2.74426102638245, -2.16115570068359, 0.00000000000000],
... ]),
... torch.tensor([
... [-0.55569743203406, +1.09030425468557, 0.00000000000000],
... [+0.51473634678469, +3.15152550263611, 0.00000000000000],
... [+0.59869690244446, -1.16861263789477, 0.00000000000000],
... [-0.45355203669134, -2.74568780438064, 0.00000000000000],
... [+2.52721209544999, -1.29200800956867, 0.00000000000000],
... [-2.63139587595376, +0.96447869452240, 0.00000000000000],
... ]),
... ))
>>>
>>> torch.set_printoptions(precision=7)
>>> print(mctc.cn_d4(numbers, positions))
tensor([[2.6886456, 2.6886456, 2.6314170, 2.6314168, 0.8594539, 0.9231414,
0.8605307, 0.8605307, 0.8594539, 0.9231414, 0.8568342, 0.8568342],
[2.6886456, 0.8568335, 2.6314168, 0.8605307, 0.8594532, 0.9231415,
0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000]])
- Coordination number: Common helpers
coordination_number()cut_coordination_number()- Coordination number: Counting functions
derf_count()dexp_count()dgfn2_count()erf_count()exp_count()gfn2_count()- Coordination number: DFT-D3
cn_d3()cn_d3_gradient()- Coordination number: DFT-D4
cn_d4()- Coordination number: Defaults
CUTOFF_D3CUTOFF_D4CUTOFF_EEQCUTOFF_EEQBCCUTOFF_EEQ_MAXCUTOFF_GFN2D4_K4D4_K5D4_K6KAKBKCN_D3KCN_D4KCN_EEQKCN_EEQ_ENR_SHIFT- Coordination number: EEQ
cn_eeq()cn_eeq_en()cut_coordination_number()- Coordination number: GFN2-xTB
cn_gfn2()