atmospheric_profileFitNonLTE
- Workspace.atmospheric_profileFitNonLTE(self, atmospheric_profile: pyarts.arts.ArrayOfAtmPoint | None = None, absorption_bands: pyarts.arts.AbsorptionBands | None = None, propagation_matrix_agenda: pyarts.arts.Agenda | None = None, surface_field: pyarts.arts.SurfaceField | None = None, frequency_grid: pyarts.arts.AscendingGrid | None = None, altitude_grid: pyarts.arts.AscendingGrid | None = None, latitude: pyarts.arts.Numeric | None = None, longitude: pyarts.arts.Numeric | None = None, collision_data: pyarts.arts.QuantumIdentifierGriddedField1Map | None = None, levels: pyarts.arts.ArrayOfQuantumIdentifier | None = None, pol: pyarts.arts.Stokvec | None = None, azimuth: pyarts.arts.Numeric | None = None, dza: pyarts.arts.Numeric | None = None, convergence_limit: pyarts.arts.Numeric | None = None, iteration_limit: pyarts.arts.Index | None = None, consider_limb: pyarts.arts.Index | None = None) None
Fits non-LTE distributions to the level data.
The spectral flux is computed from the pseudo-2D assumption.
This method fits non-LTE distributions to the level data in the atmospheric field. It only works for absorption band data that is separated by single-lines-per-band, and will produce nonsense for overlapping line data. If the lines overlap, the method will keep introducing more-and-more energy into the system, meaning that the method will not converge or turn to some extreme stable state.
The statistical equilibrium equation is given by finding valid set of energy level distribution \(n\) such that for all valid energy level combination of upper levels \(i\) and lower levels \(j\) the rate of change is zero for some \(n\) that satisfies the equation
\[\frac{d n_i}{dt} = \sum_{j > i} \left[ n_j A_{ji} - \left( n_i B_{ij} - n_j B_{ji} \right) J_{ij} \right] - \sum_{j < i} \left[ n_i A_{ij} - \left( n_j B_{ji} - n_i B_{ij} \right) J_{ij} \right] + \sum_{j} \left[ n_j C_{ji} - n_i C_{ij} \right],\]where \(A_{ij}\) is the spontaneous emission rate, \(B_{ij}\) is the stimulated emission rate, \(B_{ij}\) is the photon absorption rate, \(J_{ij}\) is the line-integrated flux, and \(C_{ij}\) is the collisional rate.
Generally, you need \(n\) to compute \(J_{ij}\), making the problem non-linear. Thus an iterative process is used to find the solution. The iteration is considered converged when the relative change in the energy level distribution is below the convergence criterion. Alternatively, the iteration is halted if the iteration count limit is breached.
Author(s): Richard Larsson
- Parameters:
atmospheric_profile (ArrayOfAtmPoint, optional) – An atmospheric point in ARTS. See
atmospheric_profile
, defaults toself.atmospheric_profile
[INOUT]absorption_bands (AbsorptionBands, optional) – Bands of absorption lines for LBL calculations. See
absorption_bands
, defaults toself.absorption_bands
[IN]propagation_matrix_agenda (Agenda, optional) – Compute the propagation matrix, the non-LTE source vector, and their derivatives. See
propagation_matrix_agenda
, defaults toself.propagation_matrix_agenda
[IN]surface_field (SurfaceField, optional) – The surface field describes the surface properties. See
surface_field
, defaults toself.surface_field
[IN]frequency_grid (AscendingGrid, optional) – A single frequency grid. See
frequency_grid
, defaults toself.frequency_grid
[IN]altitude_grid (AscendingGrid, optional) – An ascending list of
altitude
. Often related to a field or a profile. Seealtitude_grid
, defaults toself.altitude_grid
[IN]latitude (Numeric, optional) – A single latitude. See
latitude
, defaults toself.latitude
[IN]longitude (Numeric, optional) – A single longitude. See
longitude
, defaults toself.longitude
[IN]collision_data (QuantumIdentifierGriddedField1Map) – Collision data for the transitions - for \(C_{ij}\) and \(C_{ji}\). [IN]
levels (ArrayOfQuantumIdentifier) – The order of the energy levels. [IN]
pol (Stokvec, optional) – The polarization selection vector (use the default unless you know what you are doing). Defaults to
1 0 0 0
[IN]azimuth (Numeric, optional) – The azimuth of the radiation. Defaults to
0
[IN]dza (Numeric, optional) – The zenith angle limit for the internal call to
zenith_gridProfilePseudo2D()
. Defaults to5
[IN]convergence_limit (Numeric, optional) – Convergence criterion for the energy level distribution. Defaults to
1e-06
[IN]iteration_limit (Index, optional) – Maximum number of iterations. Defaults to
100
[IN]consider_limb (Index, optional) – Whether to add extra limb points in
zenith_gridProfilePseudo2D()
. Defaults to1
[IN]