Files
scgenerator/tests.py
Benoît Sierro bf8e2ec0b1 initial commit
2021-01-28 22:43:54 +01:00

84 lines
2.3 KiB
Python

import numpy as np
import scgenerator as sc
import matplotlib.pyplot as plt
def convert(l, beta2):
return l[2:-2] * 1e9, sc.units.beta2_fs_cm.inv(beta2[2:-2])
def test_empty_marcatili():
l = np.linspace(250, 1200, 500) * 1e-9
beta2 = sc.fiber.HCPCF_dispersion(l, 15e-6)
plt.plot(*convert(l, beta2))
plt.show()
def test_empty_hasan_no_resonance():
l = np.linspace(250, 1200, 500) * 1e-9
beta2 = sc.fiber.HCPCF_dispersion(
l, 12e-6, model="hasan", model_params=dict(t=0.2e-6, g=1e-6, n=6)
)
plt.plot(*convert(l, beta2))
plt.show()
def test_empty_hasan():
l = np.linspace(250, 1200, 500) * 1e-9
fig, (ax, ax2) = plt.subplots(2, 1, figsize=(6, 7), gridspec_kw=dict(height_ratios=[3, 1]))
ax.set_ylim(-40, 20)
ax2.set_ylim(-100, 0)
beta2 = sc.fiber.HCPCF_dispersion(
l,
12e-6,
model="hasan",
model_params=dict(t=0.2e-6, g=1e-6, n=6, resonance_strength=(2e-6,)),
)
ax.plot(*convert(l, beta2))
beta2 = sc.fiber.HCPCF_dispersion(
l, 12e-6, model="hasan", model_params=dict(t=0.2e-6, g=1e-6, n=6)
)
ax.plot(*convert(l, beta2))
l = np.linspace(500, 1500, 500) * 1e-9
beta2 = sc.fiber.HCPCF_dispersion(
l, 12e-6, model="hasan", model_params=dict(t=0.2e-6, g=1e-6, n=10)
)
ax2.plot(*convert(l, beta2))
plt.show()
def test_custom_initial_field():
param = {
"name": "test",
"lambda0": [1030, "nm"],
"E0": [6, "uJ"],
"T0_FWHM": [27, "fs"],
"frep": 151e3,
"z_targets": [0, 0.07, 128],
"gas": "argon",
"pressure": 4e5,
"temperature": 293,
"pulse_shape": "sech",
"behaviors": [],
"fiber_model": "marcatili",
"model_params": {"core_radius": 18e-6},
"field_0": "exp(-(t/t0)**2)*P0 + P0/10 * cos(t/t0)*2*exp(-(0.05*t/t0)**2)",
"nt": 16384,
"T": 2e-12,
"adapt_step_size": True,
"error_ok": 1e-10,
"interp_range": [120, 2000],
"n_percent": 2,
}
p = sc.compute_init_parameters(dictionary=param)
fig, ax = plt.subplots()
ax.plot(p["t"], abs(p["field_0"]))
plt.show()
if __name__ == "__main__":
# test_empty_marcatili()
# test_empty_hasan()
test_custom_initial_field()