File: test_emt_stress.py

package info (click to toggle)
python-ase 3.21.1-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 13,936 kB
  • sloc: python: 122,428; xml: 946; makefile: 111; javascript: 47
file content (22 lines) | stat: -rw-r--r-- 788 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def test_emt_stress():
    import numpy as np
    from ase.build import bulk
    from ase.calculators.emt import EMT

    a = bulk('Cu', 'fcc')
    a.calc = EMT()
    a.set_cell(np.dot(a.cell,
                      [[1.02, 0, 0.03],
                       [0, 0.99, -0.02],
                       [0.1, -0.01, 1.03]]),
               scale_atoms=True)
    a *= (1, 2, 3)
    a.rattle()
    # Verify analytical stress tensor against numerical value
    s_analytical = a.get_stress()
    s_numerical = a.calc.calculate_numerical_stress(a, 1e-5)
    s_p_err = 100 * (s_numerical - s_analytical) / s_numerical
    print('Analytical stress:\n', s_analytical)
    print('Numerical stress:\n', s_numerical)
    print('Percent error in stress:\n', s_p_err)
    assert np.all(abs(s_p_err) < 1e-5)