Coverage for gpaw/test/tddft/test_fxc_linearize.py: 100%

19 statements  

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

1import pytest 

2import numpy as np 

3 

4from gpaw.tddft import TDDFT, DipoleMomentWriter 

5from gpaw.mpi import world 

6 

7 

8@pytest.mark.gllb 

9@pytest.mark.libxc 

10def test_tddft_fxc_linearize(in_tmp_dir, gpw_files): 

11 

12 fxc = 'LDA' 

13 # Time-propagation calculation with linearize_to_fxc() 

14 td_calc = TDDFT(gpw_files['sih4_xc_gllbsc_fd'], txt='td.out') 

15 td_calc.linearize_to_xc(fxc) 

16 DipoleMomentWriter(td_calc, 'dm.dat') 

17 td_calc.absorption_kick(np.ones(3) * 1e-5) 

18 td_calc.propagate(20, 4) 

19 world.barrier() 

20 

21 # Test the absolute values 

22 data = np.loadtxt('dm.dat').ravel() 

23 if 0: 

24 from gpaw.test import print_reference 

25 print_reference(data, 'ref', '%.12le') 

26 

27 ref = [0.000000000000e+00, 

28 -1.578005120000e-15, 

29 -7.044387182078e-15, 

30 -1.863704251170e-14, 

31 5.661102599682e-15, 

32 0.000000000000e+00, 

33 5.675065320000e-16, 

34 1.468753200587e-10, 

35 1.579510728549e-10, 

36 1.480745858862e-10, 

37 8.268274700000e-01, 

38 9.001411310000e-16, 

39 5.997264413918e-05, 

40 5.996562448975e-05, 

41 5.996489353702e-05, 

42 1.653654930000e+00, 

43 -3.560336050000e-15, 

44 1.059270665342e-04, 

45 1.059358921818e-04, 

46 1.059367170602e-04, 

47 2.480482400000e+00, 

48 3.100362540000e-15, 

49 1.338025167034e-04, 

50 1.338146631769e-04, 

51 1.338165200102e-04, 

52 3.307309870000e+00, 

53 3.279248870000e-15, 

54 1.423796525306e-04, 

55 1.423871979410e-04, 

56 1.423890659304e-04] 

57 

58 tol = 1e-7 

59 assert data == pytest.approx(ref, abs=tol)