Source code for ase2sprkkr.asr.test.test_berry

import pytest
from pytest import approx


[docs] @pytest.mark.ci def test_berry(asr_tmpdir_w_params, test_material, mockgpaw, mocker, get_webcontent): import numpy as np test_material.write('structure.json') kpar = 10 nbands = 2 def parallel_transport(calc='gs_berry.gpw', direction=0, theta=0, phi=0): phi_km = np.zeros([kpar, nbands]) s_km = np.zeros([kpar, nbands]) return phi_km, s_km from asr.berry import calculate, plot_phases mocker.patch('gpaw.berryphase.parallel_transport', create=True, new=parallel_transport) results = calculate() # check that all phi_km and s_km are returned by asr.berry@calculate # note that asr.berry@calculate does not return any phi_km, s_km for 1D materials nd = np.sum(test_material.pbc) directions = [] if nd == 3: directions = ['0', '1', '2', '0_pi'] elif nd == 2: directions = ['0'] for d in directions: assert results[f'phi{d}_km'] == approx(np.zeros([kpar, nbands])) assert results[f's{d}_km'] == approx(np.zeros([kpar, nbands])) plot_phases(name=d) from asr.berry import main results = main() assert results['Topology'] == 'Not checked' get_webcontent()
[docs] @pytest.mark.ci @pytest.mark.parametrize('topology', ['Z2=1,C_M=1']) def test_berry_nontrivial(asr_tmpdir_w_params, topology, get_webcontent): from asr.core import ASRResult from ase.build.surface import graphene structure = graphene() structure.write('structure.json') from asr.core import write_file res = ASRResult() res.metadata = {'asr_name': 'asr.berry@calculate'} write_file('results-asr.berry@calculate.json', res.format_as('json')) # write topology.dat from ase.parallel import paropen f = paropen('topology.dat', 'w') print(topology, file=f) f.close() from asr.berry import main results = main() assert results['Topology'] == topology + '\n' content = get_webcontent() assert f"<td>Bandtopology</td><td>{topology}</td>" in \ content, content