51 lines
1.1 KiB
Python
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()
|