Coverage for gpaw/test/nlopt/test_mme.py: 100%

20 statements  

« prev     ^ index     » next       coverage.py v7.7.1, created at 2025-07-14 00:18 +0000

1import pytest 

2 

3import numpy as np 

4 

5from gpaw.nlopt.matrixel import make_nlodata 

6 

7 

8@pytest.mark.serial 

9def test_mme_Ni(gpw_files): 

10 

11 # Collinear calculation 

12 nlodata = make_nlodata(gpw_files['fcc_Ni_col'], ni=0, nf=3).distribute() 

13 

14 data1 = nlodata[34] # k = (0.5, 0.5, 0.25), s = 0 

15 E1_col_n = data1[2] 

16 p1_col_vnn = np.abs(data1[3]) 

17 

18 data2 = nlodata[70] # k = (0.5, 0.5, 0.25), s = 1 

19 E2_col_n = data2[2] 

20 p2_col_vnn = np.abs(data2[3]) 

21 

22 # Noncollinear calculation 

23 nlodata = make_nlodata(gpw_files['fcc_Ni_ncol'], ni=0, nf=6).distribute() 

24 

25 data = nlodata[62] # k = (0.5, 0.5, 0.25), s = 0 

26 E_ncol_n = data[2] 

27 p_ncol_vnn = np.abs(data[3]) 

28 

29 assert E_ncol_n[0:3] == pytest.approx(E1_col_n, abs=3.0e-6) 

30 assert E_ncol_n[3:6] == pytest.approx(E2_col_n, abs=5.0e-6) 

31 assert p_ncol_vnn[:, 0:3, 0:3] == pytest.approx(p1_col_vnn, abs=2.0e-6) 

32 assert p_ncol_vnn[:, 3:6, 3:6] == pytest.approx(p2_col_vnn, abs=2.0e-6)