Source code for solrat.atom_model.multi_term_atom_model.data.mock
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.engine.functions.decorators import log_function
[docs]
@log_function
def get_mock_atom_config(fine_structure: bool = True) -> MultiTermAtomConfig: # pragma: no cover
r"""
Ly-alpha-like structure for testing
:param fine_structure: whether the mock model should include fine structure splitting
:return: :any:`MultiTermAtomConfig` instance
"""
# Levels
level_registry = LevelRegistry()
level_registry.register_level(
beta="1s",
L=0,
S=0.5,
J=0.5,
energy_cmm1=200_000,
)
level_registry.register_level(
beta="2p",
L=1,
S=0.5,
J=0.5,
energy_cmm1=220_000,
)
level_registry.register_level(
beta="2p",
L=1,
S=0.5,
J=1.5,
energy_cmm1=220_001 if fine_structure else 220_000,
)
level_registry.validate()
# Transitions
transition_registry = TransitionRegistry()
transition_registry.register_transition(
term_upper=level_registry.get_term(beta="2p", L=1, S=0.5),
term_lower=level_registry.get_term(beta="1s", L=0, S=0.5),
einstein_a_ul_sm1=1e8,
)
return MultiTermAtomConfig(
level_registry=level_registry,
transition_registry=transition_registry,
reference_lambda_A_air=4998.4,
atomic_mass_amu=1.0,
)