BergEC-jl/calculations/B2R_Berggren_poles.jl

34 lines
1.2 KiB
Julia

include("../EC.jl")
include("../common.jl")
include("../p_space.jl")
# contour
p, w = get_mesh([0, 0.4 - 0.15im, 0.8, 6], [128, 128, 128])
μ = 0.5
V_system(c) = (p, q) -> c*(-5*g0(sqrt(3), p, q) + 2*g0(sqrt(10), p, q)) # ResonanceEC: Eq. (20)
# generating a Berggren basis with a pole using the same system
basis_c = 0.6
basis_E, berg_basis = eigen(get_H_matrix(V_system(basis_c), p, w); permute=false, scale=false)
basis_p = sqrt.(basis_E)
N_berg = sqrt.(diag(transpose(berg_basis .* w) * berg_basis))
berg_basis = berg_basis ./ transpose(N_berg)
berg_basis_w = berg_basis .* w
H0 = transpose(berg_basis_w) * get_T_matrix(p, μ) * berg_basis
V = transpose(berg_basis_w) * get_V_matrix(V_system(1), p, w) * berg_basis
training_c = range(1.1, 0.9, 5) # original: range(1.35, 0.9, 5)
extrapolating_c = range(0.78, 0.45, 7) # original: range(0.75, 0.40, 8)
training_ref = -0.26
extrapolating_ref = [quick_pole_E(V_system(c)) for c in extrapolating_c]
EC = affine_EC(H0, V)
train!(EC, training_c; ref_eval=training_ref, CAEC=true)
extrapolate!(EC, extrapolating_c; ref_eval=extrapolating_ref)
exportCSV(EC, "temp/2b_GSM_B2R.csv")
plot(EC, "temp/2b_GSM_B2R.pdf"; basis_points=basis_E, xlims=(0, 0.3), ylims=(-0.120, 0.020))