working direct dispersion

This commit is contained in:
Benoît Sierro
2021-10-21 14:28:34 +02:00
parent 4c60835d3d
commit 039357bff2
7 changed files with 9359 additions and 102 deletions

37
make_new_dispersion.py Normal file
View File

@@ -0,0 +1,37 @@
import numpy as np
import scgenerator as sc
import matplotlib.pyplot as plt
def main():
params = sc.Configuration(
"/Users/benoitsierro/tests/test_sc/Travers2019 Fig2 dev/initial_config.toml"
).first
evalu = sc.Evaluator.default()
evalu.set(**params.prepare_for_dump())
n_eff = evalu.compute("n_eff")
wl = evalu.compute("wl_for_disp")
w = evalu.compute("w_for_disp")
print(w.max(), w.min())
disp_inf = evalu.compute("dispersion_ind")
# quit()
params.interpolation_degree = 6
params.compute()
current_disp = params.linear_operator.dispersion_op
beta = n_eff * w / 3e8
beta1 = np.gradient(beta, w)
ind = sc.argclosest(w, params.w0)
disp = -1j * (beta - beta1[ind] * (w - params.w0) - beta[ind])
disp2 = sc.fiber.fast_direct_dispersion(w, params.w0, n_eff, ind)
plt.plot(params.l * 1e9, current_disp(None).imag)
plt.plot(wl * 1e9, disp.imag)
plt.plot(wl * 1e9, disp2.imag)
plt.xlim(100, 3000)
plt.ylim(-1000, 4000)
plt.show()
if __name__ == "__main__":
main()