solrat.atom_model.multi_term_atom_model.radiative_transfer_equations module¶
- class solrat.atom_model.multi_term_atom_model.radiative_transfer_equations.MultiTermAtomRTE(level_registry: LevelRegistry, transition_registry: TransitionRegistry, nu: ndarray, custom_delta_nu_cutoff=None, N: float = 1.0, j_constrained=False)[source]¶
Bases:
BaseRTERadiative Transfer Coefficients within Multi-Term atom model.
- Parameters:
level_registry – LevelRegistry instance for the multi-term atom under study.
transition_registry – TransitionRegistry instance for the multi-term atom under study.
nu – frequencies [Hz]
custom_delta_nu_cutoff – distance in frequency for cutting off irrelevant transitions. Leave None for a conservative default value.
N – atom numeric concentration for d/dz transfer modeling. Can be left equal to 1 for d/dtau modeling.
j_constrained – constrain J values to the ones specified in transition_registry. This parameter is useful for modeling lines like Fe5434 where fine structure components are scattered over a very broad spectral interval, while the user is interested only in a specific transition.
Reference: (LL04 7.47)
- classmethod from_model_config(config: MultiTermAtomConfig, nu: ndarray) Self[source]¶
Constructor from the model config.
- calculate_eta_rho_a(angles: Angles, rho: Rho, atmosphere_parameters: AtmosphereParameters) ndarray[source]¶
Calculate etaA and rhoA for all Stokes components simultaneously.
- Parameters:
angles – Angles instance with LOS and magnetic field angles
rho – density tensor Rho
atmosphere_parameters – AtmosphereParameters instance
- Returns:
complex array of \(\eta_A + i \rho_A\) vs frequency, shape [4, len(nu)] for I, Q, U, V
Reference: (LL04 7.47 ac)
- calculate_eta_rho_s(angles: Angles, rho: Rho, atmosphere_parameters: AtmosphereParameters) ndarray[source]¶
Calculate etaS and rhoS for all Stokes components simultaneously.
- Parameters:
angles – Angles instance with LOS and magnetic field angles
rho – density tensor Rho
atmosphere_parameters – AtmosphereParameters instance
- Returns:
complex array of \(\eta_S + i \rho_S\) vs frequency, shape [4, len(nu)] for I, Q, U, V
Reference: (LL04 7.47 bd)
- static calculate_epsilon(eta_s: ndarray, nu: ndarray) ndarray[source]¶
Compute \(\epsilon\) given \(\eta_S\)
Reference: (LL04 7.47e)
- create_base_frame() DataFrame[source]¶
Generate a base frame, listing all transitions. This frame will be used as a starting point to determine the ranges for all other summation indexes.
- Returns:
base frame
- calculate_all_coefficients(atmosphere_parameters: AtmosphereParameters, angles: Angles, rho: Rho) RadiativeTransferCoefficients[source]¶
Compute all radiative transfer coefficients.
- Parameters:
angles – Angles instance with LOS and magnetic field angles
rho – density tensor Rho
atmosphere_parameters – AtmosphereParameters instance
- Returns:
RadiativeTransferCoefficients instance
Reference: (LL04 7.47)
- cutoff_condition(term_upper: Term, term_lower: Term, nu: ndarray)[source]¶
Check the cut-off condition. If a transition is way outside the spectral region of interest, it does not contribute to RTE (due to the phi profile).
- class AFrameSumLimits[source]¶
Bases:
SumLimitsSummation limits for the \(\eta_A\) and \(\rho_A\) calculation. See SumLimits for reference.
- term_lower_id = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- term_upper_id = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- Ll = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- Lu = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- S = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- jl = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Jl = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Jʹl = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Jʹʹl = <solrat.engine.generators.merge_loopers.Triangular object>¶
- ju = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Ju = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Jʹu = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Ml = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Mʹl = <solrat.engine.generators.merge_loopers.Projection object>¶
- Mu = <solrat.engine.generators.merge_loopers.Intersection object>¶
- K = <solrat.engine.generators.merge_loopers.FromTo object>¶
- Kl = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Ql = <solrat.engine.generators.merge_loopers.Intersection object>¶
- q = <solrat.engine.generators.merge_loopers.Difference object>¶
- qʹ = <solrat.engine.generators.merge_loopers.Difference object>¶
- Q = <solrat.engine.generators.merge_loopers.Intersection object>¶
- class AFrameSumLimitsConstrained[source]¶
Bases:
SumLimitsSummation limits for the \(\eta_A\) and \(\rho_A\) calculation, with constraint on \(J\). See SumLimits for reference.
- term_lower_id = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- term_upper_id = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- Ll = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- Lu = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- S = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- lower_J_constraint = <solrat.engine.generators.merge_loopers.Constraint object>¶
- upper_J_constraint = <solrat.engine.generators.merge_loopers.Constraint object>¶
- jl = <solrat.engine.generators.merge_loopers.ApplyConstraint object>¶
- Jl = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Jʹl = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Jʹʹl = <solrat.engine.generators.merge_loopers.Triangular object>¶
- ju = <solrat.engine.generators.merge_loopers.ApplyConstraint object>¶
- Ju = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Jʹu = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Ml = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Mʹl = <solrat.engine.generators.merge_loopers.Projection object>¶
- Mu = <solrat.engine.generators.merge_loopers.Intersection object>¶
- K = <solrat.engine.generators.merge_loopers.FromTo object>¶
- Kl = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Ql = <solrat.engine.generators.merge_loopers.Intersection object>¶
- q = <solrat.engine.generators.merge_loopers.Difference object>¶
- qʹ = <solrat.engine.generators.merge_loopers.Difference object>¶
- Q = <solrat.engine.generators.merge_loopers.Intersection object>¶
- class SFrameSumLimits[source]¶
Bases:
SumLimitsSummation limits for the \(\eta_S\) and \(\rho_S\) calculation. See SumLimits for reference.
- term_lower_id = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- term_upper_id = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- Ll = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- Lu = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- S = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- ju = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Ju = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Jʹu = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Jʹʹu = <solrat.engine.generators.merge_loopers.Triangular object>¶
- jl = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Jl = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Jʹl = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Mu = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Mʹu = <solrat.engine.generators.merge_loopers.Projection object>¶
- Ml = <solrat.engine.generators.merge_loopers.Intersection object>¶
- K = <solrat.engine.generators.merge_loopers.FromTo object>¶
- Ku = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Qu = <solrat.engine.generators.merge_loopers.Intersection object>¶
- q = <solrat.engine.generators.merge_loopers.Difference object>¶
- qʹ = <solrat.engine.generators.merge_loopers.Difference object>¶
- Q = <solrat.engine.generators.merge_loopers.Intersection object>¶
- class SFrameSumLimitsConstrained[source]¶
Bases:
SumLimitsSummation limits for the \(\eta_S\) and \(\rho_S\) calculation, with constraint on \(J\). See SumLimits for reference.
- term_lower_id = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- term_upper_id = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- Ll = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- Lu = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- S = <solrat.engine.generators.merge_loopers.DummyOrAlreadyMerged object>¶
- lower_J_constraint = <solrat.engine.generators.merge_loopers.Constraint object>¶
- upper_J_constraint = <solrat.engine.generators.merge_loopers.Constraint object>¶
- ju = <solrat.engine.generators.merge_loopers.ApplyConstraint object>¶
- Ju = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Jʹu = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Jʹʹu = <solrat.engine.generators.merge_loopers.Triangular object>¶
- jl = <solrat.engine.generators.merge_loopers.ApplyConstraint object>¶
- Jl = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Jʹl = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Mu = <solrat.engine.generators.merge_loopers.Intersection object>¶
- Mʹu = <solrat.engine.generators.merge_loopers.Projection object>¶
- Ml = <solrat.engine.generators.merge_loopers.Intersection object>¶
- K = <solrat.engine.generators.merge_loopers.FromTo object>¶
- Ku = <solrat.engine.generators.merge_loopers.Triangular object>¶
- Qu = <solrat.engine.generators.merge_loopers.Intersection object>¶
- q = <solrat.engine.generators.merge_loopers.Difference object>¶
- qʹ = <solrat.engine.generators.merge_loopers.Difference object>¶
- Q = <solrat.engine.generators.merge_loopers.Intersection object>¶