thunder4d.cell
The multipass cell. See Simulation for the unfolded picture, the eigenmode and the nonlinear mode matching.
- class thunder4d.cell.MPC(R, d, medium, n_passes, *, mirror_gdd_fs2=0.0, mirror_tod_fs3=0.0, mirror_reflectivity=1.0, mirror_phase=None, mirror_diameter=None)[source]
Symmetric two-mirror cell.
- Parameters:
R (float) – mirror radius of curvature [m]
d (float) – mirror separation [m], \(0 < d < 2R\)
medium –
Materialn_passes (int) – passes = bounces (transit over d + bounce, starting right after a mirror)
mirror_gdd_fs2 (float) – GDD per bounce [fs²]
mirror_tod_fs3 (float) – TOD per bounce [fs³]
mirror_reflectivity – intensity reflectivity, scalar or callable
R(lambda_m)mirror_phase (callable) –
phi(lambda_m)[rad] per bounce (e.g. a measured GDD curve)mirror_diameter (float) – clear aperture [m] (soft super-Gaussian edge, order 30);
None= infinite
Attributes:
R,d,medium,n_passes,g(\(1 - d/R\)),theta(Gouy phase per pass [rad]).- classmethod herriott(R, N, k, medium, branch='concentric', n_passes=None, **kw)[source]
Re-entrant Herriott cell that closes on itself after
Npasses: \(d = R[1+\cos(2\pi k/N)]\) (branch="concentric", default) or \(d = R[1-\cos(2\pi k/N)]\) (branch="planar"). The concentric branch requires an evenN.n_passesdefaults toN(one re-entrant cycle); set it to simulate any other number of passes in the same cell.
- linear_mode(lam)[source]
Linear eigenmode at wavelength
lam.- Returns:
dict with
w0,w_mirror,zR,gouy_per_pass
- nonlinear_mode(P, lam, verbose=False)[source]
Kerr-matched eigenmode for power
P[W] at wavelengthlam[m]. RaisesValueErrorif \(P \ge P_c\).- Returns:
dict
P, Pc, P_over_Pcpower, critical power, ratio
w0, w_mirrormatched waist and mirror spot [m]
w0_linear, w_mirror_linearlinear values [m]
B_per_pass, B_totalon-axis peak B-integral estimates [rad]
I_peak_center_W_cm2peak intensity at the waist [W/cm²]
- match(pulse, power='peak', verbose=True, lam=None)[source]
Same as
nonlinear_mode(), with the power and the wavelength taken from aPulse:"peak"usespeak_power(),"weighted"usesweighted_power(). A number in W is also accepted, with its wavelengthlam.
- mirror_spectrum(grid)[source]
Spectral transfer of one bounce on
grid.Omega: GDD, TOD, reflectivity andmirror_phase, zero outside the valid spectral window. Shape(Nt,).
- mirror_aperture(r)[source]
Amplitude transmission of the clear aperture at radius
r[m] (soft super-gaussian edge of order 30); ones ifmirror_diameteris None.
- bounce_factor(grid)[source]
Complex transfer of one mirror, shape
grid.shape(cached): curvature,mirror_spectrum()andmirror_aperture().