Correct barrier suppression logic + new mbar unit

This commit is contained in:
Benoît Sierro
2023-03-17 11:24:02 +01:00
parent 0d16e55927
commit 64d1a6edea
2 changed files with 37 additions and 1 deletions

View File

@@ -270,7 +270,36 @@ class Gas:
@property
def ionic_charge(self):
return self.atomic_number - 1
return 1
@property
def barrier_suppression(self) -> float:
"""
Compute the barrier suppression threshold (W/m^2)
"""
field_max = self.barrier_suppression_field
return 0.5 * units.c * units.epsilon0 * field_max**2
@property
def barrier_suppression_field(self) -> float:
"""
Barrier suppression threshold electric field
Reference
---------
[1] KRAINOV, V. P. Theory of barrier-suppression ionization of atoms. Journal of Nonlinear
Optical Physics & Materials, 1995, vol. 4, no 04, p. 775-798.
[2] BETHE, H. A. et SALPETER, E. E. Quantum mechanics of one-and two-electron atoms. 1977.
"""
# from [1-2] :
# field_max = 0.0625 / self.ionic_charge * (self.ionization_energy / 2.1787e-18) ** 2
# return field_max = 5.14220670712125e11
# from [3] :
Z = self.ionic_charge
Ip_au = self.ionization_energy / 4.359744650021498e-18
ns = Z / np.sqrt(2 * Ip_au)
return Z**3 / (16 * ns**4) * 5.14220670712125e11
def get(self, key, default=None):
return self.mat_dico.get(key, default)

View File

@@ -254,6 +254,13 @@ def bar(p: _T) -> _T:
def bar_inv(p):
return p * 1e-5
@unit("PRESSURE", "Pressure (mbar)")
def mbar(p: _T)->_T:
return 1e2 * p
@mbar.inverse
def mbar_inv(p):
return 1e-2 * p
@unit("OTHER", r"$\beta_2$ (fs$^2$/cm)")
def beta2_fs_cm(b2: _T) -> _T: