13#include "base/base_uses.f90"
16 USE gx_ac,
ONLY: create_thiele_pade, &
17 evaluate_thiele_pade_at, &
27 cpabort(
"CP2K not compiled with GreenX library.")
31 COMPLEX(kind=dp) :: damp_one = (2, 0), &
33 center_one = (2, 0), &
34 center_two = (8, 0), &
37 min_source = (0, 0), &
39 max_source = (10, 0), &
41 INTEGER,
PARAMETER :: n_source = 20, &
45 COMPLEX(kind=dp) :: d_source, &
47 COMPLEX(kind=dp),
DIMENSION(n_source) :: x_source, &
49 COMPLEX(kind=dp),
DIMENSION(n_fit) :: x_fit, &
51 TYPE(params) :: fit_params
53 d_source = (max_source - min_source)/cmplx(n_source - 1, kind=
dp)
54 d_fit = (max_fit - min_fit)/cmplx(n_fit - 1, kind=
dp)
56 print
'(A12)',
"#Source data"
59 x_source(i) = min_source + cmplx(i - 1, 0.0, kind=
dp)*d_source
60 y_source(i) = amp_one/(damp_one*damp_one + (x_source(i) - center_one)*(x_source(i) - center_one))
61 y_source(i) = y_source(i) + amp_two/(damp_two*damp_two + (x_source(i) - center_two)*(x_source(i) - center_two))
62 print
'(E20.8E3,E20.8E3)', real(x_source(i), kind=
dp), real(y_source(i), kind=
dp)
65 print
'(A9)',
"#Fit data"
69 fit_params = create_thiele_pade(n_param, x_source, y_source)
73 x_fit(i) = min_fit + d_fit*cmplx(i - 1, 0, kind=
dp)
76 y_fit(1:n_fit) = evaluate_thiele_pade_at(fit_params, x_fit)
79 print
'(E20.8E3,E20.8E3)', real(x_fit(i), kind=
dp), real(y_fit(i), kind=
dp)
82 CALL free_params(fit_params)
program gx_ac_unittest
GreenX Analytic continuation unit test.
Defines the basic variable types.
integer, parameter, public dp