Source code for ase2sprkkr.asr.test.test_hse

import pytest


[docs] @pytest.mark.ci def test_hse(asr_tmpdir_w_params, test_material, mockgpaw, mocker, get_webcontent): import gpaw from pathlib import Path import numpy as np from asr.hse import main test_material.write('structure.json') def non_self_consistent_eigenvalues(calc, xcname, n1, n2, kpt_indices=None, snapshot=None, ftol=42.0): Path(snapshot).write_text('{}') e_skn = calc.eigenvalues[np.newaxis, :, n1:n2].copy() v_skn = np.zeros_like(e_skn) v_hyb_skn = np.zeros_like(e_skn) v_hyb_skn[:, :, :2] = 0.0 v_hyb_skn[:, :, 2:] = 1.0 return e_skn, v_skn, v_hyb_skn mocker.patch.object(gpaw.GPAW, "_get_band_gap") mocker.patch.object(gpaw.GPAW, "_get_fermi_level") gpaw.GPAW._get_fermi_level.return_value = 0.5 gpaw.GPAW._get_band_gap.return_value = 1 mocker.patch('gpaw.hybrids.eigenvalues.non_self_consistent_eigenvalues', create=True, new=non_self_consistent_eigenvalues) def vxc(calc, xc): return calc.eigenvalues[np.newaxis] mocker.patch('gpaw.xc.tools.vxc', create=True, new=vxc) results = main() assert results['gap_hse_nosoc'] == pytest.approx(2.0) assert results['gap_dir_hse_nosoc'] == pytest.approx(2.0) html = get_webcontent() assert 'hse-bs.png' in html