nothing fancy
This commit is contained in:
1443
src/scgenerator/data/k_silica.txt
Normal file
1443
src/scgenerator/data/k_silica.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,271 +1,262 @@
|
||||
[silica.sellmeier]
|
||||
B = [0.6961663, 0.4079426, 0.8974794]
|
||||
C = [4.67914826e-15, 1.35120631e-14, 9.79340025e-11]
|
||||
kind = 1
|
||||
reference = [
|
||||
"I. H. Malitson. Interspecimen comparison of the refractive index of fused silica, J. Opt. Soc. Am. 55, 1205-1208 (1965)",
|
||||
"C. Z. Tan. Determination of refractive index of silica glass for infrared wavelengths by IR spectroscopy, J. Non-Cryst. Solids 223, 158-163 (1998)",
|
||||
]
|
||||
B = [0.6961663, 0.4079426, 0.8974794]
|
||||
C = [4.67914826e-15, 1.35120631e-14, 9.79340025e-11]
|
||||
kind = 1
|
||||
reference = [
|
||||
"I. H. Malitson. Interspecimen comparison of the refractive index of fused silica, J. Opt. Soc. Am. 55, 1205-1208 (1965)",
|
||||
"C. Z. Tan. Determination of refractive index of silica glass for infrared wavelengths by IR spectroscopy, J. Non-Cryst. Solids 223, 158-163 (1998)",
|
||||
]
|
||||
|
||||
[nbk7.sellmeier]
|
||||
B = [1.03961212, 0.231792344, 1.01046945]
|
||||
C = [6.00069867e-15, 2.00179144e-14, 1.03560653e-10]
|
||||
kind = 1
|
||||
reference = [
|
||||
"SCHOTT Zemax catalog 2017-01-20b (obtained from http://www.schott.com)",
|
||||
]
|
||||
B = [1.03961212, 0.231792344, 1.01046945]
|
||||
C = [6.00069867e-15, 2.00179144e-14, 1.03560653e-10]
|
||||
kind = 1
|
||||
reference = ["SCHOTT Zemax catalog 2017-01-20b (obtained from http://www.schott.com)"]
|
||||
|
||||
[e7.sellmeier]
|
||||
B = [0.0, 7.2e-15, 3e-28]
|
||||
C = []
|
||||
kind = 3
|
||||
reference = [
|
||||
"J. Li, C. H. Wen, S. Gauza, R. Lu and S. T. Wu. Refractive indices of liquid crystals for display applications, J. Disp. Technol. 1, 51-61, 2005",
|
||||
]
|
||||
B = [0.0, 7.2e-15, 3e-28]
|
||||
C = []
|
||||
kind = 3
|
||||
reference = [
|
||||
"J. Li, C. H. Wen, S. Gauza, R. Lu and S. T. Wu. Refractive indices of liquid crystals for display applications, J. Disp. Technol. 1, 51-61, 2005",
|
||||
]
|
||||
|
||||
[d-zlaf52la.sellmeier]
|
||||
B = [
|
||||
-8.48750283e9,
|
||||
3.1753525,
|
||||
3.71301651e-14,
|
||||
-1.09609062e-27,
|
||||
2.4418582e-40,
|
||||
-8.94583294e-54,
|
||||
]
|
||||
C = []
|
||||
kind = 3
|
||||
reference = ["CDGM Zemax catalog 2017-09 (obtained from http://www.cdgmgd.com)"]
|
||||
B = [-8.48750283e9, 3.1753525, 3.71301651e-14, -1.09609062e-27, 2.4418582e-40, -8.94583294e-54]
|
||||
C = []
|
||||
kind = 3
|
||||
reference = ["CDGM Zemax catalog 2017-09 (obtained from http://www.cdgmgd.com)"]
|
||||
|
||||
# -----
|
||||
# GASES
|
||||
# -----
|
||||
# -----
|
||||
# GASES
|
||||
# -----
|
||||
|
||||
[air]
|
||||
a = 0.1358
|
||||
b = 3.64e-5
|
||||
atomic_mass = 4.809e-26
|
||||
a = 0.1358
|
||||
atomic_mass = 4.809e-26
|
||||
b = 3.64e-5
|
||||
|
||||
[air.sellmeier]
|
||||
B = [57921050000.0, 1679170000.0]
|
||||
C = [238018500000000.0, 57362000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 288.15
|
||||
kind = 2
|
||||
B = [57921050000.0, 1679170000.0]
|
||||
C = [238018500000000.0, 57362000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 288.15
|
||||
kind = 2
|
||||
|
||||
[air.kerr]
|
||||
P0 = 101325
|
||||
T0 = 293.15
|
||||
n2 = 4.0e-23
|
||||
source = "Pigeon, J. J., Tochitsky, S. Y., Welch, E. C., & Joshi, C. (2016). Measurements of the nonlinear refractive index of air, N 2, and O 2 at 10 μm using four-wave mixing. Optics letters, 41(17), 3924-3927."
|
||||
P0 = 101325
|
||||
T0 = 293.15
|
||||
n2 = 4.0e-23
|
||||
source = "Pigeon, J. J., Tochitsky, S. Y., Welch, E. C., & Joshi, C. (2016). Measurements of the nonlinear refractive index of air, N 2, and O 2 at 10 μm using four-wave mixing. Optics letters, 41(17), 3924-3927."
|
||||
|
||||
[nitrogen]
|
||||
a = 0.137
|
||||
b = 1.709e-5
|
||||
atomic_mass = 2.3259e-26
|
||||
a = 0.137
|
||||
atomic_mass = 2.3259e-26
|
||||
b = 1.709e-5
|
||||
|
||||
[nitrogen.sellmeier]
|
||||
B = [32431570000.0]
|
||||
C = [144000000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
const = 6.8552e-5
|
||||
kind = 2
|
||||
B = [32431570000.0]
|
||||
C = [144000000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
const = 6.8552e-5
|
||||
kind = 2
|
||||
|
||||
[nitrogen.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 2.2e-23
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 2.2e-23
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
|
||||
[helium]
|
||||
a = 0.00346
|
||||
b = 2.38e-5
|
||||
ionization_energy = 3.9393356074281e-18
|
||||
atomic_number = 2
|
||||
atomic_mass = 6.646477e-27
|
||||
a = 0.00346
|
||||
atomic_mass = 6.646477e-27
|
||||
atomic_number = 2
|
||||
b = 2.38e-5
|
||||
ionization_energy = 3.9393356074281e-18
|
||||
|
||||
[helium.sellmeier]
|
||||
B = [2.16463842e-5, 2.10561127e-7, 4.7509272e-5]
|
||||
C = [-6.80769781e-16, 5.13251289e-15, 3.18621354e-15]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 1
|
||||
source = "A. Ermolov, K. F. Mak, M. H. Frosz, J. C. Travers, P. St. J. Russell, Supercontinuum generation in the vacuum ultraviolet through dispersive-wave and soliton-plasma interaction in a noble-gas-filled hollow-core photonic crystal fiber, Phys. Rev. A 92, 033821 (2015)"
|
||||
B = [2.16463842e-5, 2.10561127e-7, 4.7509272e-5]
|
||||
C = [-6.80769781e-16, 5.13251289e-15, 3.18621354e-15]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 1
|
||||
source = "A. Ermolov, K. F. Mak, M. H. Frosz, J. C. Travers, P. St. J. Russell, Supercontinuum generation in the vacuum ultraviolet through dispersive-wave and soliton-plasma interaction in a noble-gas-filled hollow-core photonic crystal fiber, Phys. Rev. A 92, 033821 (2015)"
|
||||
|
||||
[helium.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 3.1e-25
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 3.1e-25
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
|
||||
[helium_alt]
|
||||
a = 0.00346
|
||||
b = 2.38e-5
|
||||
a = 0.00346
|
||||
b = 2.38e-5
|
||||
|
||||
[helium_alt.sellmeier]
|
||||
B = [14755297000.0]
|
||||
C = [426297400000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
source = " C. Cuthbertson and M. Cuthbertson. The refraction and dispersion of neon and helium. Proc. R. Soc. London A 135, 40-47 (1936)"
|
||||
B = [14755297000.0]
|
||||
C = [426297400000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
source = " C. Cuthbertson and M. Cuthbertson. The refraction and dispersion of neon and helium. Proc. R. Soc. London A 135, 40-47 (1936)"
|
||||
|
||||
[helium_alt.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 3.1e-25
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 3.1e-25
|
||||
|
||||
[hydrogen]
|
||||
a = 0.02453
|
||||
b = 2.651e-5
|
||||
atomic_mass = 1.674e-27
|
||||
a = 0.02453
|
||||
atomic_mass = 1.674e-27
|
||||
b = 2.651e-5
|
||||
|
||||
[hydrogen.sellmeier]
|
||||
B = [0.0148956, 0.0049037]
|
||||
C = [1.807e-10, 9.2e-11]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
source = "E. R. Peck and S. Hung. Refractivity and dispersion of hydrogen in the visible and near infrared, J. Opt. Soc. Am. 67, 1550-1554 (1977)"
|
||||
B = [0.0148956, 0.0049037]
|
||||
C = [1.807e-10, 9.2e-11]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
source = "E. R. Peck and S. Hung. Refractivity and dispersion of hydrogen in the visible and near infrared, J. Opt. Soc. Am. 67, 1550-1554 (1977)"
|
||||
|
||||
[hydrogen.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 6.36e-24
|
||||
source = "Shelton, D. P., & Rice, J. E. (1994). Measurements and calculations of the hyperpolarizabilities of atoms and small molecules in the gas phase. Chemical Reviews, 94(1), 3-29"
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 6.36e-24
|
||||
source = "Shelton, D. P., & Rice, J. E. (1994). Measurements and calculations of the hyperpolarizabilities of atoms and small molecules in the gas phase. Chemical Reviews, 94(1), 3-29"
|
||||
|
||||
[neon]
|
||||
a = 0.02135
|
||||
b = 1.709e-5
|
||||
ionization_energy = 3.45501365359425e-18
|
||||
atomic_number = 10
|
||||
atomic_mass = 3.35092e-26
|
||||
a = 0.02135
|
||||
atomic_mass = 3.35092e-26
|
||||
atomic_number = 10
|
||||
b = 1.709e-5
|
||||
ionization_energy = 3.45501365359425e-18
|
||||
|
||||
[neon.sellmeier]
|
||||
B = [1281450000.0, 22048600000.0]
|
||||
C = [184661000000000.0, 376840000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
B = [1281450000.0, 22048600000.0]
|
||||
C = [184661000000000.0, 376840000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
|
||||
[neon.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 8.7e-25
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 8.7e-25
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
|
||||
[argon]
|
||||
a = 0.1355
|
||||
b = 3.201e-5
|
||||
ionization_energy = 2.5249661793774e-18
|
||||
atomic_number = 18
|
||||
atomic_mass = 6.6338e-26
|
||||
a = 0.1355
|
||||
atomic_mass = 6.6338e-26
|
||||
atomic_number = 18
|
||||
b = 3.201e-5
|
||||
ionization_energy = 2.5249661793774e-18
|
||||
|
||||
[argon.sellmeier]
|
||||
B = [2501410000.0, 500283000.0, 52234300000.0]
|
||||
C = [91012000000000.0, 87892000000000.0, 214020000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
source = "A. Bideau-Mehu, Y. Guern, R. Abjean, A. Johannin-Gilles. Measurement of refractive indices of neon, argon, krypton and xenon in the 253.7-140.4 nm wavelength range. Dispersion relations and estimated oscillator strengths of the resonance lines. J. Quant. Spectrosc. Rad. Transfer 25, 395-402 (1981)"
|
||||
B = [2501410000.0, 500283000.0, 52234300000.0]
|
||||
C = [91012000000000.0, 87892000000000.0, 214020000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
source = "A. Bideau-Mehu, Y. Guern, R. Abjean, A. Johannin-Gilles. Measurement of refractive indices of neon, argon, krypton and xenon in the 253.7-140.4 nm wavelength range. Dispersion relations and estimated oscillator strengths of the resonance lines. J. Quant. Spectrosc. Rad. Transfer 25, 395-402 (1981)"
|
||||
|
||||
[argon.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 9.7e-24
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 9.7e-24
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
|
||||
[argon_alt]
|
||||
a = 0.1355
|
||||
b = 3.201e-5
|
||||
a = 0.1355
|
||||
b = 3.201e-5
|
||||
|
||||
[argon_alt.sellmeier]
|
||||
B = [0.0002033229, 0.0003445831]
|
||||
C = [2.0612e-16, 8.066e-15]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 1
|
||||
source = "A. Börzsönyi, Z. Heiner, M. P. Kalashnikov, A. P. Kovács, and K. Osvay, Dispersion measurement of inert gases and gas mixtures at 800 nm, Appl. Opt. 47, 4856-4863 (2008)"
|
||||
B = [0.0002033229, 0.0003445831]
|
||||
C = [2.0612e-16, 8.066e-15]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 1
|
||||
source = "A. Börzsönyi, Z. Heiner, M. P. Kalashnikov, A. P. Kovács, and K. Osvay, Dispersion measurement of inert gases and gas mixtures at 800 nm, Appl. Opt. 47, 4856-4863 (2008)"
|
||||
|
||||
[argon_alt.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 9.7e-24
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 9.7e-24
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
|
||||
[argon_alt2]
|
||||
a = 0.1355
|
||||
b = 3.201e-5
|
||||
a = 0.1355
|
||||
b = 3.201e-5
|
||||
|
||||
[argon_alt2.sellmeier]
|
||||
B = [0.030182943]
|
||||
C = [144000000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
const = 6.7867e-5
|
||||
kind = 2
|
||||
source = "E. R. Peck and D. J. Fisher. Dispersion of argon, J. Opt. Soc. Am. 54, 1362-1364 (1964)"
|
||||
B = [0.030182943]
|
||||
C = [144000000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
const = 6.7867e-5
|
||||
kind = 2
|
||||
source = "E. R. Peck and D. J. Fisher. Dispersion of argon, J. Opt. Soc. Am. 54, 1362-1364 (1964)"
|
||||
|
||||
[argon_alt2.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 9.7e-24
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 9.7e-24
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
|
||||
[krypton]
|
||||
a = 0.2349
|
||||
b = 3.978e-5
|
||||
ionization_energy = 2.2429831039374e-18
|
||||
atomic_number = 36
|
||||
atomic_mass = 1.3915e-25
|
||||
a = 0.2349
|
||||
atomic_mass = 1.3915e-25
|
||||
atomic_number = 36
|
||||
b = 3.978e-5
|
||||
ionization_energy = 2.2429831039374e-18
|
||||
|
||||
[krypton.sellmeier]
|
||||
B = [2536370000.0, 2736490000.0, 62080200000.0]
|
||||
C = [65474200000000.0, 73698000000000.0, 181080000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
B = [2536370000.0, 2736490000.0, 62080200000.0]
|
||||
C = [65474200000000.0, 73698000000000.0, 181080000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
|
||||
[krypton.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 2.2e-23
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 2.2e-23
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
|
||||
[xenon]
|
||||
a = 0.425
|
||||
b = 5.105e-5
|
||||
ionization_energy = 1.94342415157935
|
||||
atomic_number = 54
|
||||
atomic_mass = 2.18017e-25
|
||||
a = 0.425
|
||||
atomic_mass = 2.18017e-25
|
||||
atomic_number = 54
|
||||
b = 5.105e-5
|
||||
ionization_energy = 1.94342415157935
|
||||
|
||||
[xenon.sellmeier]
|
||||
B = [3228690000.0, 3553930000.0, 60676400000.0]
|
||||
C = [46301000000000.0, 59578000000000.0, 112740000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
B = [3228690000.0, 3553930000.0, 60676400000.0]
|
||||
C = [46301000000000.0, 59578000000000.0, 112740000000000.0]
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 2
|
||||
|
||||
[xenon.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 5.8e-23
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 5.8e-23
|
||||
source = "Wahlstrand, J. K., Cheng, Y. H., & Milchberg, H. M. (2012). High field optical nonlinearity and the Kramers-Kronig relations. Physical review letters, 109(11), 113904."
|
||||
|
||||
[vacuum]
|
||||
a = 0
|
||||
b = 0
|
||||
atomic_mass = 0
|
||||
a = 0
|
||||
atomic_mass = 0
|
||||
b = 0
|
||||
|
||||
[vacuum.sellmeier]
|
||||
B = []
|
||||
C = []
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 1
|
||||
B = []
|
||||
C = []
|
||||
P0 = 101325
|
||||
T0 = 273.15
|
||||
kind = 1
|
||||
|
||||
[vacuum.kerr]
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 0
|
||||
source = "none"
|
||||
P0 = 30400.0
|
||||
T0 = 273.15
|
||||
n2 = 0
|
||||
source = "none"
|
||||
|
||||
1198
src/scgenerator/data/n_silica.txt
Normal file
1198
src/scgenerator/data/n_silica.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2,12 +2,14 @@
|
||||
series of helper functions
|
||||
"""
|
||||
|
||||
from scgenerator.physics.materials import n_gas_2
|
||||
from scgenerator.physics.fiber import n_eff_marcatili, beta2, beta2_to_D
|
||||
from scgenerator.physics.units import c
|
||||
import numpy as np
|
||||
|
||||
__all__ = ["capillary_dispersion"]
|
||||
from scgenerator.math import all_zeros
|
||||
from scgenerator.physics.fiber import beta2, n_eff_marcatili, n_eff_hasan
|
||||
from scgenerator.physics.materials import n_gas_2
|
||||
from scgenerator.physics.units import c
|
||||
|
||||
__all__ = ["capillary_dispersion", "capillary_zdw", "revolver_dispersion"]
|
||||
|
||||
|
||||
def capillary_dispersion(
|
||||
@@ -43,11 +45,100 @@ def capillary_dispersion(
|
||||
return beta2(w, n)[2:-2]
|
||||
|
||||
|
||||
def extend_axis(wl):
|
||||
dwl_left = wl[1] - wl[0]
|
||||
dwl_right = wl[-1] - wl[-2]
|
||||
wl = np.concatenate(
|
||||
([wl[0] - 2 * dwl_left, wl[0] - dwl_left], wl, [wl[-1] + dwl_right, wl[-1] + 2 * dwl_right])
|
||||
def capillary_zdw(
|
||||
radius: float,
|
||||
gas_name: str,
|
||||
pressure=None,
|
||||
temperature=None,
|
||||
search_range: tuple[float, float] = (200e-9, 3000e-9),
|
||||
) -> np.ndarray:
|
||||
"""find the zero dispersion wavelength of a capilally
|
||||
|
||||
Parameters
|
||||
----------
|
||||
radius : float
|
||||
in mnm
|
||||
gas_name : str
|
||||
gas name (case insensitive)
|
||||
pressure : float, optional
|
||||
pressure in Pa (multiply mbar by 100 to get Pa), by default atm pressure
|
||||
temperature : float, optional
|
||||
temperature in K, by default 20°C
|
||||
search_range : (float, float), optional
|
||||
range of wavelength (in m) in which to search for the ZDW, by default (200e-9, 3000e-9)
|
||||
|
||||
Returns
|
||||
-------
|
||||
np.ndarray
|
||||
array of zero dispersion wavelength(s)
|
||||
"""
|
||||
wl = np.linspace(*search_range[:2], 1024)
|
||||
disp = capillary_dispersion(wl, radius, gas_name, pressure, temperature)
|
||||
return all_zeros(wl, disp)
|
||||
|
||||
|
||||
def revolver_dispersion(
|
||||
wl: np.ndarray,
|
||||
core_radius: float,
|
||||
gas_name: str,
|
||||
capillary_num: int,
|
||||
capillary_thickness: float,
|
||||
capillary_spacing: float,
|
||||
capillary_nested: int = 0,
|
||||
capillary_resonance_strengths: list[float] = None,
|
||||
pressure=None,
|
||||
temperature=None,
|
||||
) -> np.ndarray:
|
||||
"""computes the dispersion (beta2) of a capillary tube
|
||||
|
||||
Parameters
|
||||
----------
|
||||
wl : np.ndarray
|
||||
wavelength in m
|
||||
radius : float
|
||||
core radius in m
|
||||
gas_name : str
|
||||
gas name (case insensitive)
|
||||
pressure : float, optional
|
||||
pressure in Pa (multiply mbar by 100 to get Pa), by default atm pressure
|
||||
temperature : float, optional
|
||||
temperature in K, by default 20°C
|
||||
|
||||
Returns
|
||||
-------
|
||||
np.ndarray
|
||||
D parameter
|
||||
"""
|
||||
capillary_resonance_strengths = capillary_resonance_strengths or []
|
||||
wl = extend_axis(wl)
|
||||
if pressure is None:
|
||||
pressure = 101325
|
||||
if temperature is None:
|
||||
temperature = 293.15
|
||||
n = n_eff_hasan(
|
||||
wl,
|
||||
n_gas_2(wl, gas_name.lower(), pressure, temperature, False),
|
||||
core_radius,
|
||||
capillary_num,
|
||||
capillary_nested,
|
||||
capillary_thickness,
|
||||
capillary_spacing,
|
||||
capillary_resonance_strengths,
|
||||
)
|
||||
w = 2 * np.pi * c / wl
|
||||
return beta2(w, n)[2:-2]
|
||||
|
||||
|
||||
def extend_axis(axis: np.ndarray) -> np.ndarray:
|
||||
"""add 4 values to an array, 2 on each 'side'"""
|
||||
dwl_left = axis[1] - axis[0]
|
||||
dwl_right = axis[-1] - axis[-2]
|
||||
axis = np.concatenate(
|
||||
(
|
||||
[axis[0] - 2 * dwl_left, axis[0] - dwl_left],
|
||||
axis,
|
||||
[axis[-1] + dwl_right, axis[-1] + 2 * dwl_right],
|
||||
)
|
||||
)
|
||||
|
||||
return wl
|
||||
return axis
|
||||
|
||||
@@ -4,15 +4,14 @@ import numpy as np
|
||||
from numpy import e
|
||||
from numpy.fft import fft
|
||||
from numpy.polynomial.chebyshev import Chebyshev, cheb2poly
|
||||
from scgenerator import utils
|
||||
from scgenerator.cache import np_cache
|
||||
from scgenerator.math import argclosest, u_nm
|
||||
from scgenerator.physics import materials as mat
|
||||
from scgenerator.physics import units
|
||||
from scgenerator.physics.units import c, pi
|
||||
from scipy.interpolate import interp1d
|
||||
|
||||
from .. import utils
|
||||
from ..cache import np_cache
|
||||
from ..math import argclosest, u_nm
|
||||
from . import materials as mat
|
||||
from . import units
|
||||
from .units import c, pi
|
||||
|
||||
pipi = 2 * pi
|
||||
T = TypeVar("T")
|
||||
|
||||
@@ -112,12 +111,12 @@ def gvd_from_n_eff(n_eff: np.ndarray, wl_for_disp: np.ndarray):
|
||||
|
||||
def beta2_to_D(beta2, wl_for_disp):
|
||||
"""returns the D parameter corresponding to beta2(wl_for_disp)"""
|
||||
return -(pipi * c) / (wl_for_disp ** 2) * beta2
|
||||
return -(pipi * c) / (wl_for_disp**2) * beta2
|
||||
|
||||
|
||||
def D_to_beta2(D, wl_for_disp):
|
||||
"""returns the beta2 parameters corresponding to D(wl_for_disp)"""
|
||||
return -(wl_for_disp ** 2) / (pipi * c) * D
|
||||
return -(wl_for_disp**2) / (pipi * c) * D
|
||||
|
||||
|
||||
def A_to_C(A: np.ndarray, A_eff_arr: np.ndarray) -> np.ndarray:
|
||||
@@ -147,9 +146,9 @@ def plasma_dispersion(wl_for_disp, number_density, simple=False):
|
||||
w = units.m(wl_for_disp)
|
||||
if simple:
|
||||
w_pl = number_density * e2_me_e0
|
||||
return -(w_pl ** 2) / (c * w ** 2)
|
||||
return -(w_pl**2) / (c * w**2)
|
||||
|
||||
beta2_arr = beta2(w, np.sqrt(1 - number_density * e2_me_e0 / w ** 2))
|
||||
beta2_arr = beta2(w, np.sqrt(1 - number_density * e2_me_e0 / w**2))
|
||||
return beta2_arr
|
||||
|
||||
|
||||
@@ -224,7 +223,7 @@ def A_eff_marcatili(core_radius: float) -> float:
|
||||
float
|
||||
effective mode field area
|
||||
"""
|
||||
return 1.5 * core_radius ** 2
|
||||
return 1.5 * core_radius**2
|
||||
|
||||
|
||||
def capillary_spacing_hasan(
|
||||
@@ -261,7 +260,7 @@ def resonance_thickness(
|
||||
wl_for_disp
|
||||
/ (4 * np.sqrt(n_si_2))
|
||||
* (2 * order + 1)
|
||||
* (1 - n_gas_2 / n_si_2 + wl_for_disp ** 2 / (4 * n_si_2 * core_radius ** 2)) ** -0.5
|
||||
* (1 - n_gas_2 / n_si_2 + wl_for_disp**2 / (4 * n_si_2 * core_radius**2)) ** -0.5
|
||||
)
|
||||
|
||||
|
||||
@@ -328,7 +327,9 @@ def n_eff_hasan(
|
||||
|
||||
Reference
|
||||
----------
|
||||
Hasan, Md Imran, Nail Akhmediev, and Wonkeun Chang. "Empirical formulae for dispersion and effective mode area in hollow-core antiresonant fibers." Journal of Lightwave Technology 36.18 (2018): 4060-4065.
|
||||
Hasan, Md Imran, Nail Akhmediev, and Wonkeun Chang. "Empirical formulae for dispersion and
|
||||
effective mode area in hollow-core antiresonant fibers." Journal of Lightwave Technology 36.18
|
||||
(2018): 4060-4065.
|
||||
"""
|
||||
u = u_nm(1, 1)
|
||||
alpha = 5e-12
|
||||
@@ -340,7 +341,7 @@ def n_eff_hasan(
|
||||
if capillary_nested > 0:
|
||||
f2 += 0.0045 * np.exp(-4.1589 / (capillary_nested * Rg))
|
||||
|
||||
R_eff = f1 * core_radius * (1 - f2 * wl_for_disp ** 2 / (core_radius * capillary_thickness))
|
||||
R_eff = f1 * core_radius * (1 - f2 * wl_for_disp**2 / (core_radius * capillary_thickness))
|
||||
|
||||
n_eff_2 = n_gas_2 - (u * wl_for_disp / (pipi * R_eff)) ** 2
|
||||
|
||||
@@ -350,8 +351,8 @@ def n_eff_hasan(
|
||||
for m, strength in enumerate(capillary_resonance_strengths):
|
||||
n_eff_2 += (
|
||||
strength
|
||||
* wl_for_disp ** 2
|
||||
/ (alpha + wl_for_disp ** 2 - chi_sil * (2 * capillary_thickness / (m + 1)) ** 2)
|
||||
* wl_for_disp**2
|
||||
/ (alpha + wl_for_disp**2 - chi_sil * (2 * capillary_thickness / (m + 1)) ** 2)
|
||||
)
|
||||
|
||||
return np.sqrt(n_eff_2)
|
||||
@@ -374,7 +375,7 @@ def A_eff_hasan(core_radius, capillary_num, capillary_spacing):
|
||||
A_eff : float
|
||||
"""
|
||||
M_f = 1.5 / (1 - 0.5 * np.exp(-0.245 * capillary_num))
|
||||
return M_f * core_radius ** 2 * np.exp((capillary_spacing / 22e-6) ** 2.5)
|
||||
return M_f * core_radius**2 * np.exp((capillary_spacing / 22e-6) ** 2.5)
|
||||
|
||||
|
||||
def V_eff_step_index(
|
||||
@@ -437,8 +438,8 @@ def V_parameter_koshiba(l: np.ndarray, pitch: float, pitch_ratio: float) -> floa
|
||||
|
||||
V = A[0] + A[1] / (1 + A[2] * np.exp(A[3] * ratio_l))
|
||||
|
||||
n_FSM2 = 1.45 ** 2 - (l * V / (pi2a)) ** 2
|
||||
V_eff = pi2a / l * np.sqrt(n_co ** 2 - n_FSM2)
|
||||
n_FSM2 = 1.45**2 - (l * V / (pi2a)) ** 2
|
||||
V_eff = pi2a / l * np.sqrt(n_co**2 - n_FSM2)
|
||||
|
||||
return V_eff
|
||||
|
||||
@@ -627,7 +628,6 @@ def beta2(w_for_disp: np.ndarray, n_eff: np.ndarray) -> np.ndarray:
|
||||
return np.gradient(np.gradient(beta(w_for_disp, n_eff), w_for_disp), w_for_disp)
|
||||
|
||||
|
||||
|
||||
def frame_velocity(beta1_arr: np.ndarray, w0_ind: int) -> float:
|
||||
return 1.0 / beta1_arr[w0_ind]
|
||||
|
||||
@@ -719,7 +719,7 @@ def dynamic_HCPCF_dispersion(
|
||||
in the fiber
|
||||
"""
|
||||
|
||||
A_eff = 1.5 * core_radius ** 2
|
||||
A_eff = 1.5 * core_radius**2
|
||||
|
||||
# defining function instead of storing every possilble value
|
||||
def pressure(r):
|
||||
@@ -811,7 +811,7 @@ def n_eff_pcf(wl_for_disp: np.ndarray, pitch: float, pitch_ratio: float) -> np.n
|
||||
V = A[0] + A[1] / (1 + A[2] * np.exp(A[3] * ratio_l))
|
||||
W = B[0] + B[1] / (1 + B[2] * np.exp(B[3] * ratio_l))
|
||||
|
||||
n_FSM2 = 1.45 ** 2 - (wl_for_disp * V / (pi2a)) ** 2
|
||||
n_FSM2 = 1.45**2 - (wl_for_disp * V / (pi2a)) ** 2
|
||||
n_eff2 = (wl_for_disp * W / (pi2a)) ** 2 + n_FSM2
|
||||
n_eff = np.sqrt(n_eff2)
|
||||
|
||||
@@ -845,8 +845,8 @@ def saitoh_paramters(pitch_ratio: float) -> tuple[float, float]:
|
||||
di2 = np.array([9, 6.58, 10, 0.41])
|
||||
di3 = np.array([10, 24.8, 15, 6])
|
||||
|
||||
A = ai0 + ai1 * pitch_ratio ** bi1 + ai2 * pitch_ratio ** bi2 + ai3 * pitch_ratio ** bi3
|
||||
B = ci0 + ci1 * pitch_ratio ** di1 + ci2 * pitch_ratio ** di2 + ci3 * pitch_ratio ** di3
|
||||
A = ai0 + ai1 * pitch_ratio**bi1 + ai2 * pitch_ratio**bi2 + ai3 * pitch_ratio**bi3
|
||||
B = ci0 + ci1 * pitch_ratio**di1 + ci2 * pitch_ratio**di2 + ci3 * pitch_ratio**di3
|
||||
return A, B
|
||||
|
||||
|
||||
@@ -960,7 +960,7 @@ def dispersion_from_coefficients(
|
||||
coef = np.array(beta2_coefficients) / np.cumprod([1] + list(range(1, len(beta2_coefficients))))
|
||||
beta_arr = np.zeros_like(w_c)
|
||||
for k, b in reversed(list(enumerate(coef))):
|
||||
beta_arr = beta_arr + b * w_c ** k
|
||||
beta_arr = beta_arr + b * w_c**k
|
||||
return beta_arr
|
||||
|
||||
|
||||
@@ -985,12 +985,12 @@ def delayed_raman_t(t: np.ndarray, raman_type: str) -> np.ndarray:
|
||||
t_ = t - t[0]
|
||||
t = t_
|
||||
if raman_type == "stolen":
|
||||
hr_arr = (tau1 / tau2 ** 2 + 1 / tau1) * np.exp(-t_ / tau2) * np.sin(t_ / tau1)
|
||||
hr_arr = (tau1 / tau2**2 + 1 / tau1) * np.exp(-t_ / tau2) * np.sin(t_ / tau1)
|
||||
|
||||
elif raman_type == "agrawal":
|
||||
taub = 96e-15
|
||||
h_a = (tau1 / tau2 ** 2 + 1 / tau1) * np.exp(-t_ / tau2) * np.sin(t_ / tau1)
|
||||
h_b = (2 * taub - t_) / taub ** 2 * np.exp(-t_ / taub)
|
||||
h_a = (tau1 / tau2**2 + 1 / tau1) * np.exp(-t_ / tau2) * np.sin(t_ / tau1)
|
||||
h_b = (2 * taub - t_) / taub**2 * np.exp(-t_ / taub)
|
||||
hr_arr = 0.79 * h_a + 0.21 * h_b
|
||||
|
||||
elif raman_type == "measured":
|
||||
@@ -1096,12 +1096,12 @@ def effective_core_radius(wl_for_disp, core_radius, s=0.08, h=200e-9):
|
||||
-------
|
||||
effective_core_radius : ndarray, shape (n, )
|
||||
"""
|
||||
return core_radius / (1 + s * wl_for_disp ** 2 / (core_radius * h))
|
||||
return core_radius / (1 + s * wl_for_disp**2 / (core_radius * h))
|
||||
|
||||
|
||||
def effective_radius_HCARF(core_radius, t, f1, f2, wl_for_disp):
|
||||
"""eq. 3 in Hasan 2018"""
|
||||
return f1 * core_radius * (1 - f2 * wl_for_disp ** 2 / (core_radius * t))
|
||||
return f1 * core_radius * (1 - f2 * wl_for_disp**2 / (core_radius * t))
|
||||
|
||||
|
||||
def capillary_loss(wl: np.ndarray, he_mode: tuple[int, int], core_radius: float) -> np.ndarray:
|
||||
@@ -1123,7 +1123,7 @@ def capillary_loss(wl: np.ndarray, he_mode: tuple[int, int], core_radius: float)
|
||||
"""
|
||||
chi_silica = abs(mat.sellmeier(wl, utils.load_material_dico("silica")))
|
||||
nu_n = 0.5 * (chi_silica + 2) / np.sqrt(chi_silica)
|
||||
return nu_n * (u_nm(*he_mode) * wl / pipi) ** 2 * core_radius ** -3
|
||||
return nu_n * (u_nm(*he_mode) * wl / pipi) ** 2 * core_radius**-3
|
||||
|
||||
|
||||
def extinction_distance(loss: T, ratio=1 / e) -> T:
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import functools
|
||||
from dataclasses import dataclass, field
|
||||
from typing import Any, TypeVar
|
||||
|
||||
import numpy as np
|
||||
|
||||
from .. import utils
|
||||
from ..cache import np_cache
|
||||
from ..logger import get_logger
|
||||
from . import units
|
||||
from .units import NA, c, epsilon0, kB
|
||||
from scgenerator import utils
|
||||
from scgenerator.cache import np_cache
|
||||
from scgenerator.logger import get_logger
|
||||
from scgenerator.physics import units
|
||||
from scgenerator.physics.units import NA, c, epsilon0, kB
|
||||
|
||||
T = TypeVar("T", np.floating, np.ndarray)
|
||||
|
||||
@@ -22,6 +23,21 @@ class Sellmeier:
|
||||
kind: int = 2
|
||||
constant: float = 0
|
||||
|
||||
@classmethod
|
||||
def load(cls, name: str) -> Sellmeier:
|
||||
mat_dico = utils.load_material_dico(name)
|
||||
s = mat_dico.get("sellmeier", {})
|
||||
return cls(
|
||||
**{
|
||||
newk: s.get(k, None)
|
||||
for newk, k in zip(
|
||||
["B", "C", "pressure_ref", "temperature_ref", "kind", "constant"],
|
||||
["B", "C", "P0", "T0", "kind", "const"],
|
||||
)
|
||||
if k in s
|
||||
}
|
||||
)
|
||||
|
||||
def chi(self, wl: T) -> T:
|
||||
"""n^2 - 1"""
|
||||
if isinstance(wl, np.ndarray):
|
||||
@@ -30,10 +46,10 @@ class Sellmeier:
|
||||
chi = 0
|
||||
if self.kind == 1:
|
||||
for b, c_ in zip(self.B, self.C):
|
||||
chi += wl ** 2 * b / (wl ** 2 - c_)
|
||||
chi += wl**2 * b / (wl**2 - c_)
|
||||
elif self.kind == 2: # gives n-1
|
||||
for b, c_ in zip(self.B, self.C):
|
||||
chi += b / (c_ - 1 / wl ** 2)
|
||||
chi += b / (c_ - 1 / wl**2)
|
||||
chi += self.constant
|
||||
chi = (chi + 1) ** 2 - 1
|
||||
elif self.kind == 3: # Schott formula
|
||||
@@ -201,7 +217,7 @@ def pressure_from_gradient(ratio, p0, p1):
|
||||
----------
|
||||
the pressure (float)
|
||||
"""
|
||||
return np.sqrt(p0 ** 2 - ratio * (p0 ** 2 - p1 ** 2))
|
||||
return np.sqrt(p0**2 - ratio * (p0**2 - p1**2))
|
||||
|
||||
|
||||
def number_density_van_der_waals(
|
||||
@@ -241,7 +257,7 @@ def number_density_van_der_waals(
|
||||
pressure = 101325 if pressure is None else pressure
|
||||
temperature = 273.15 if temperature is None else temperature
|
||||
|
||||
ap = a / NA ** 2
|
||||
ap = a / NA**2
|
||||
bp = b / NA
|
||||
|
||||
# setup van der Waals equation for the number density
|
||||
@@ -306,11 +322,11 @@ def sellmeier(
|
||||
if kind == 1:
|
||||
logger.debug("materials : using Sellmeier 1st kind equation")
|
||||
for b, c_ in zip(B, C):
|
||||
chi[ind] += temp_l ** 2 * b / (temp_l ** 2 - c_)
|
||||
chi[ind] += temp_l**2 * b / (temp_l**2 - c_)
|
||||
elif kind == 2: # gives n-1
|
||||
logger.debug("materials : using Sellmeier 2nd kind equation")
|
||||
for b, c_ in zip(B, C):
|
||||
chi[ind] += b / (c_ - 1 / temp_l ** 2)
|
||||
chi[ind] += b / (c_ - 1 / temp_l**2)
|
||||
chi += const
|
||||
chi = (chi + 1) ** 2 - 1
|
||||
elif kind == 3: # Schott formula
|
||||
@@ -433,8 +449,8 @@ def gas_chi3(gas_name: str, wavelength: float, pressure: float, temperature: flo
|
||||
|
||||
|
||||
def n2_to_chi3(n2: float, n0: float) -> float:
|
||||
return n2 * 4 * epsilon0 * n0 ** 2 * c / 3
|
||||
return n2 * 4 * epsilon0 * n0**2 * c / 3
|
||||
|
||||
|
||||
def chi3_to_n2(chi3: float, n0: float) -> float:
|
||||
return 3.0 * chi3 / (4.0 * epsilon0 * c * n0 ** 2)
|
||||
return 3.0 * chi3 / (4.0 * epsilon0 * c * n0**2)
|
||||
|
||||
@@ -14,16 +14,16 @@ from dataclasses import dataclass
|
||||
from functools import cache, lru_cache
|
||||
from pathlib import Path
|
||||
from string import printable as str_printable
|
||||
from typing import Any, Callable, MutableMapping, Sequence, TypeVar, Set, Union
|
||||
from typing import Any, Callable, MutableMapping, Sequence, TypeVar, Union
|
||||
|
||||
import numpy as np
|
||||
import pkg_resources as pkg
|
||||
import tomli
|
||||
import tomli_w
|
||||
|
||||
from .const import PARAM_FN, PARAM_SEPARATOR, SPEC1_FN, Z_FN, ROOT_PARAMETERS
|
||||
from .logger import get_logger
|
||||
from .errors import DuplicateParameterError
|
||||
from scgenerator.const import PARAM_FN, PARAM_SEPARATOR, ROOT_PARAMETERS, SPEC1_FN, Z_FN
|
||||
from scgenerator.errors import DuplicateParameterError
|
||||
from scgenerator.logger import get_logger
|
||||
|
||||
T_ = TypeVar("T_")
|
||||
|
||||
@@ -85,8 +85,8 @@ class Paths:
|
||||
class SubConfig:
|
||||
fixed: dict[str, Any]
|
||||
variable: list[dict[str, list]]
|
||||
fixed_keys: Set[str]
|
||||
variable_keys: Set[str]
|
||||
fixed_keys: set[str]
|
||||
variable_keys: set[str]
|
||||
|
||||
def __init__(self, dico: dict[str, Any]):
|
||||
dico = dico.copy()
|
||||
|
||||
Reference in New Issue
Block a user