Coverage for gpaw/test/response/test_mpa_sampling.py: 100%

32 statements  

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

1import pytest 

2from gpaw.response.mpa_sampling import mpa_frequency_sampling 

3 

4 

5@pytest.mark.response 

6def test_mpa_sampling_errors(): 

7 with pytest.raises(ValueError): 

8 mpa_frequency_sampling(2, wrange=[0, 0], varpi=1, 

9 eta0=0.1, eta_rest=0.1, parallel_lines=3, 

10 alpha=1) 

11 with pytest.raises(ValueError): 

12 mpa_frequency_sampling(2, wrange=[0, 0], varpi=1, 

13 eta0=0.1, eta_rest=0.1, parallel_lines=1, 

14 alpha=1) 

15 

16 

17@pytest.mark.response 

18def test_mpa_sampling_1pole(): 

19 # print("npol=1, parallel_lines=1, w1=0.1j, w2=1j, alpha=1:") 

20 with pytest.raises(AssertionError): 

21 mpa_frequency_sampling(1, wrange=[0, 0], varpi=1, 

22 eta0=0.1, eta_rest=0.1, parallel_lines=1, 

23 alpha=1) 

24 

25 # print("npol=1, parallel_lines=2, w1=0.1j, w2=1j, alpha=0:") 

26 w_grid = mpa_frequency_sampling(1, wrange=[0, 0], varpi=1, 

27 eta0=0.1, eta_rest=0.1, parallel_lines=2, 

28 alpha=0) 

29 assert w_grid == pytest.approx([0. + 0.1j, 0. + 1.j]) 

30 

31 

32@pytest.mark.response 

33def test_mpa_sampling_2poles(): 

34 w_grid = mpa_frequency_sampling(2, wrange=[0, 1], varpi=1, 

35 eta0=0.1, eta_rest=0.1, parallel_lines=2, 

36 alpha=1) 

37 assert w_grid == pytest.approx([0. + 0.1j, 1. + 0.1j, 0 + 1j, 1 + 1j]) 

38 

39 # print("npol=2, parallel_lines=1, w1=0+1j, w2=2+1j, alpha=0:") 

40 w_grid = mpa_frequency_sampling(2, wrange=[0, 2], varpi=1, 

41 eta0=0.01, eta_rest=0.1, parallel_lines=1, 

42 alpha=0) 

43 assert w_grid == pytest.approx([0. + 1.j, 2 / 3. + 1.j, 4 / 3. + 1.j, 

44 2. + 1.j]) 

45 

46 # print("npol=2, parallel_lines=2, w1=0+1j, w2=2+1j, alpha=1:") 

47 w_grid = mpa_frequency_sampling(2, wrange=[0, 2], varpi=1, 

48 eta0=0.01, eta_rest=0.1) 

49 assert w_grid == pytest.approx([0. + 0.01j, 2. + 0.1j, 

50 0. + 1.j, 2. + 1.j]) 

51 

52 

53@pytest.mark.response 

54def test_mpa_sampling_multiple_poles(): 

55 # print("npol=3, parallel_lines=2, w1=0+1j, w2=2+1j, alpha=1:") 

56 w_grid = mpa_frequency_sampling(3, wrange=[0, 2], varpi=1, 

57 eta0=0.01, eta_rest=0.1) 

58 assert w_grid == pytest.approx([0. + 0.01j, 1 + 0.1j, 2. + 0.1j, 

59 0. + 1.j, 1 + 1.j, 2. + 1.j]) 

60 

61 # print("npol=4, parallel_lines=2, w1=0+1j, w2=2+1j, alpha=1:") 

62 w_grid = mpa_frequency_sampling(4, wrange=[0, 2], varpi=1, 

63 eta0=0.01, eta_rest=0.1) 

64 assert w_grid == pytest.approx([0. + 0.01j, 0.5 + 0.1j, 1. + 0.1j, 

65 2. + 0.1j, 0. + 1.j, 0.5 + 1.j, 1. + 1.j, 

66 2. + 1.j]) 

67 

68 # print("npol=5, parallel_lines=2, w1=0+1j, w2=2+1j, alpha=1:") 

69 w_grid = mpa_frequency_sampling(5, wrange=[0, 2], varpi=1, 

70 eta0=0.01, eta_rest=0.1) 

71 assert w_grid == pytest.approx([0. + 0.01j, 0.25 + 0.1j, 0.5 + 0.1j, 

72 1. + 0.1j, 2. + 0.1j, 0. + 1.j, 0.25 + 1.j, 

73 0.5 + 1.j, 1. + 1.j, 2. + 1.j]) 

74 

75 # print("npol=6, parallel_lines=2, w1=0+1j, w2=2+1j, alpha=1:") 

76 w_grid = mpa_frequency_sampling(6, wrange=[0, 2], varpi=1, 

77 eta0=0.01, eta_rest=0.1) 

78 assert w_grid == pytest.approx([0. + 0.01j, 0.25 + 0.1j, 0.5 + 0.1j, 

79 1. + 0.1j, 1.5 + 0.1j, 2. + 0.1j, 0. + 1.j, 

80 0.25 + 1.j, 0.5 + 1.j, 1. + 1.j, 1.5 + 1.j, 

81 2. + 1.j])