solrat.atom_model.multi_term_atom_model_legacy.radiative_transfer_equations_legacy module

class solrat.atom_model.multi_term_atom_model_legacy.radiative_transfer_equations_legacy.MultiTermAtomRTELegacy(transition_registry: TransitionRegistry, nu: ndarray, maximum_delta_v_thermal_units_cutoff=5, N=1)[source]

Bases: BaseRTE

This is a legacy RTE implementation. It is not vectorized and therefore the new RTE implementation should be preferred for synthesis/inversion. This one is kept for reference and testing purposes. It also contains analytical expressions under further assumptions, which are used for testing.

Note that there are some minor differences from the new vectorized implementation, such as cut-off condition. And the vectorized implementation has many features not available in this legacy implementation.

classmethod from_model_config(config: MultiTermAtomConfig, nu: ndarray) Self[source]

Constructor from the model config.

phi(nui, nu, atmosphere_parameters: AtmosphereParameters)[source]

Reference: (5.43 - 5.45)

cutoff_condition(term_upper: Term, term_lower: Term, nu: ndarray, atmosphere_parameters)[source]

If the transition is far away from the requested frequency range, it does not contribute to RTE.

eta_a(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles)[source]

Reference: (7.47a)

eta_s(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles)[source]

Reference: (7.47b)

rho_a(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles)[source]

Reference: (7.47a)

rho_s(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles)[source]

Reference: (7.47b)

static epsilon(eta_s: ndarray, nu: ndarray)[source]

Reference: (7.47e)

eta_rho_a(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles)[source]

eta_a = real(eta_rho_a) rho_a = imag(eta_rho_a)

eta_rho_s(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles) ndarray[source]

eta_s = real(eta_rho_s) rho_s = imag(eta_rho_s)

eta_a_no_field_no_fine_structure(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles)[source]

Reference: (7.48a)

eta_s_no_field_no_fine_structure(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles)[source]

No magnetic field, no fine structure splitting. Reference: (7.48d)

rho_a_no_field_no_fine_structure(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles)[source]

Reference: (7.48a)

rho_s_no_field_no_fine_structure(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles)[source]

No magnetic field, no fine structure splitting. Reference: (7.48d)

eta_s_no_field(rho: Rho, stokes_component_index: int, atmosphere_parameters: AtmosphereParameters, angles: Angles)[source]

No magnetic field. Reference: (10.127)

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)