solrat.atom_model.multi_term_atom_model.object.transition_registry module

class solrat.atom_model.multi_term_atom_model.object.transition_registry.TransitionRegistry[source]

Bases: object

This class serves as a registry for all transitions. The transitions are defined as ones occurring between terms, not levels, so the Einstein coefficients need to be adjusted accordingly.

Only pure E1 \(LS\) transitions are fully supported.

einstein_b_lu(transition_id: str) float[source]
einstein_b_ul(transition_id: str) float[source]
einstein_a_ul(transition_id: str) float[source]
register_transition(term_upper: Term, term_lower: Term, einstein_a_ul_sm1: float, lower_J_constraint: List[float] | None = None, upper_J_constraint: List[float] | None = None)[source]

Einstein coefficients are on \(\beta LS \to \beta LS\) level, so need to sum over \(J\) in advance.

Parameters:
  • term_upper – upper Term instance

  • term_lower – lower Term instance

  • einstein_a_ul_sm1 – spontaneous emission in [1/s]

  • lower_J_constraint – constrain lower term \(J\) values in RTE to these values

  • upper_J_constraint – constrain upper term \(J\) values in RTE to these values

is_transition_registered(term_upper: Term, term_lower: Term)[source]

Checks if the transition between the terms is registered.

get_transition(term_upper: Term, term_lower: Term)[source]

Get the transition between the two terms - assume it is registered.

class solrat.atom_model.multi_term_atom_model.object.transition_registry.Transition(transition_id: str, term_upper: Term, term_lower: Term, einstein_a_ul: float, einstein_b_ul: float, einstein_b_lu: float, lower_J_constraint: List[float] | None = None, upper_J_constraint: List[float] | None = None)[source]

Bases: object

Transition coefficients are registered between terms, not levels.

Parameters:
  • transition_id – Unique transition ID

  • term_upper – upper Term instance

  • term_lower – lower Term instance

  • einstein_a_ul – Einstein coefficient \(A_{ul}\)

  • einstein_b_ul – Einstein coefficient \(B_{ul}\)

  • einstein_b_lu – Einstein coefficient \(B_{lu}\)

  • lower_J_constraint – constrain lower term \(J\) values in RTE to these values

  • upper_J_constraint – constrain lower term \(J\) values in RTE to these values

get_mean_transition_frequency_sm1()[source]

A crude approximation for the ‘central’ frequency of the transition. Should be used only in non-frequency-sensitive expressions like filling out Planck’s function in LTE.