Source code for solrat.atom_model.multi_term_atom_model.data.FeI

from solrat.atom_model.multi_term_atom_model.object.level_registry import LevelRegistry
from solrat.atom_model.multi_term_atom_model.object.multi_term_atom_config import MultiTermAtomConfig
from solrat.atom_model.multi_term_atom_model.object.transition_registry import TransitionRegistry
from solrat.atom_model.multi_term_atom_model.utility.paschen_back import get_artificial_S_scale_from_term_g
from solrat.engine.functions.decorators import log_function_experimental


[docs] @log_function_experimental def get_Fe_I_5434_config() -> MultiTermAtomConfig: # pragma: no cover r""" Atomic model for Fe I 5434.523 A line, constrained to :math:`J=0 \to J=1` transition. Additionally, the Lande factor is artificially deviated from pure LS coupling to model the experimental value of :math:`g=-0.014`. :return: :any:`MultiTermAtomConfig` instance Due to rather crude approximations applied, this atomic model is recommended to be used with LTE SEE only. """ level_registry = LevelRegistry() # --- lower term: a 5F (L=3, S=2), J = 1..5 level_registry.register_level(beta="a5F", L=3, S=2, J=5, energy_cmm1=6928.268) level_registry.register_level(beta="a5F", L=3, S=2, J=4, energy_cmm1=7376.764) level_registry.register_level(beta="a5F", L=3, S=2, J=3, energy_cmm1=7728.060) level_registry.register_level(beta="a5F", L=3, S=2, J=2, energy_cmm1=7985.785) level_registry.register_level(beta="a5F", L=3, S=2, J=1, energy_cmm1=8154.714) # --- upper term: z 5D (L=2, S=2), J = 0..4 level_registry.register_level(beta="z5Do", L=2, S=2, J=4, energy_cmm1=25899.989) level_registry.register_level(beta="z5Do", L=2, S=2, J=3, energy_cmm1=26140.179) level_registry.register_level(beta="z5Do", L=2, S=2, J=2, energy_cmm1=26339.696) level_registry.register_level(beta="z5Do", L=2, S=2, J=1, energy_cmm1=26479.381) level_registry.register_level(beta="z5Do", L=2, S=2, J=0, energy_cmm1=26550.479) level_registry.validate() level_registry.get_term(beta="a5F", L=3, S=2).set_artificial_spin_scale( get_artificial_S_scale_from_term_g(g=-0.014, L=3, S=2, J=1) ) transition_registry = TransitionRegistry() transition_registry.register_transition( term_lower=level_registry.get_term(beta="a5F", L=3, S=2), term_upper=level_registry.get_term(beta="z5Do", L=2, S=2), lower_J_constraint=[1], # Only compute J=0->J=1 in RTE (if j_constrained=True) upper_J_constraint=[0], einstein_a_ul_sm1=1.70e6 + 1.27e06 + 1.15e06 + 2.58e05 + 1.05e06 + 4.27e05 + 2.20e04 + 1.09e06 + 5.48e05 + 5.01e04 + 6.05e05 + 6.25e04, ) return MultiTermAtomConfig( level_registry=level_registry, transition_registry=transition_registry, reference_lambda_A_air=5434.523, atomic_mass_amu=55.8, j_constrained=True, )