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
« 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
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)
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)
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])
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])
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])
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])
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])
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])
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])
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])