Source code for ase2sprkkr.asr.test.acceptance.test_borncharges

import pytest
import numpy as np


[docs] @pytest.mark.acceptance_test def test_gpaw_berry_get_berry_phases_integration(asr_tmpdir_w_params): from .materials import BN from asr.borncharges import main from asr.setup.params import main as setupparams calculator_params = { 'name': 'gpaw', 'mode': {'name': 'pw', 'ecut': 300}, 'xc': 'PBE', 'basis': 'dzp', 'kpts': {'density': 2.0, 'gamma': True}, 'occupations': {'name': 'fermi-dirac', 'width': 0.05}, 'convergence': {'bands': 'CBM+3.0'}, 'nbands': '100%', 'txt': 'gs.txt', 'charge': 0, } formal_calculator = { 'name': 'gpaw', 'mode': {'name': 'pw', 'ecut': 300}, 'xc': 'PBE', 'basis': 'dzp', 'kpts': {'density': 2.0}, 'occupations': {'name': 'fermi-dirac', 'width': 0.05}, 'txt': 'formalpol.txt', 'charge': 0 } setupparams(params={'asr.gs@calculate': {'calculator': calculator_params}, 'asr.formalpolarization': {'calculator': formal_calculator}}) BN.write('structure.json') results = main() ZB_vv = np.eye(3) diag = np.eye(3, dtype=bool) ZB_vv[diag] = [2.71, 2.71, 0.27] for Z_vv, sym in zip(results['Z_avv'], results['sym_a']): if sym == 'B': sign = 1 else: sign = -1 assert np.all(sign * Z_vv[diag] > 0) assert Z_vv[~diag] == pytest.approx(0, abs=0.001) assert Z_vv == pytest.approx(sign * ZB_vv, abs=0.5)