Files
linemeasurement/playground.py
2024-09-17 11:42:44 +02:00

51 lines
1.1 KiB
Python

from collections import namedtuple
import itertools
from scipy.optimize import root
Args = namedtuple("Args", ["alpha", "w", "Te"])
ARG1 = Args(0.04, 0.00409, 5_000)
ARG2 = Args(0.032, 0.00537, 10_000)
ARG3 = Args(0.023, 0.00873, 40_000)
def L_stark(Ne: float, alpha: float, w: float, Te: float) -> float:
"""computes stark broadening
Parameters
----------
Ne : float
free electron density in 1e15 / cm^3
alpha : float
static ion-broadening parameter
w : float
electron impact parameter in nm/1e16/cm^3
Te : float
electron temperature in K
Returns
-------
float
Stark broadening in nm
"""
Ne = 1e15 * Ne
return (
2e-16
* (1 + 1.75e-4 * (Ne ** 0.25) * alpha * (1 - 0.068 * (Te ** -0.5) * (Ne ** (1 / 6))))
* w
* Ne
)
def main():
for ls, args in itertools.product([0.001, 0.003, 0.009], [ARG1, ARG2, ARG3]):
def to_root(Ne):
return L_stark(Ne, *args) - ls
print(ls, args.Te, root(to_root, 1.0).x)
if __name__ == "__main__":
main()