atm_profileFitNonLTE

Workspace.atm_profileFitNonLTE(self, atm_profile: pyarts3.arts.ArrayOfAtmPoint | None = None, abs_bands: pyarts3.arts.AbsorptionBands | None = None, spectral_propmat_agenda: pyarts3.arts.Agenda | None = None, surf_field: pyarts3.arts.SurfaceField | None = None, freq_grid: pyarts3.arts.AscendingGrid | None = None, alt_grid: pyarts3.arts.AscendingGrid | None = None, lat: pyarts3.arts.Numeric | None = None, lon: pyarts3.arts.Numeric | None = None, collision_data: pyarts3.arts.QuantumIdentifierGriddedField1Map | None = None, levels: pyarts3.arts.ArrayOfQuantumLevelIdentifier | None = None, pol: pyarts3.arts.Stokvec | None = None, azi: pyarts3.arts.Numeric | None = None, dzen: pyarts3.arts.Numeric | None = None, convergence_limit: pyarts3.arts.Numeric | None = None, iteration_limit: pyarts3.arts.Index | None = None, consider_limb: pyarts3.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.

The method used here is based on Yamada, T. et al. [38]

Author: Richard Larsson

Used by wrapper method

Parameters:
  • atm_profile (ArrayOfAtmPoint, optional) – An atmospheric profile in ARTS. See atm_profile, defaults to self.atm_profile [INOUT]

  • abs_bands (AbsorptionBands, optional) – Bands of absorption lines for line-by-line (LBL) calculations. See abs_bands, defaults to self.abs_bands [IN]

  • spectral_propmat_agenda (Agenda, optional) – Computes the propagation matrix, the non-LTE source vector, and their derivatives. See spectral_propmat_agenda, defaults to self.spectral_propmat_agenda [IN]

  • surf_field (SurfaceField, optional) – The surface field. See surf_field, defaults to self.surf_field [IN]

  • freq_grid (AscendingGrid, optional) – A frequency grid. Unit: Hz. See freq_grid, defaults to self.freq_grid [IN]

  • alt_grid (AscendingGrid, optional) – An ascending list of alt. Often related to a field or a profile. See alt_grid, defaults to self.alt_grid [IN]

  • lat (Numeric, optional) – A single latitude. See lat, defaults to self.lat [IN]

  • lon (Numeric, optional) – A single longitude. See lon, defaults to self.lon [IN]

  • collision_data (QuantumIdentifierGriddedField1Map) – Collision data for the transitions - for \(C_{ij}\) and \(C_{ji}\). [IN]

  • levels (ArrayOfQuantumLevelIdentifier) – 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]

  • azi (Numeric, optional) – The azimuth of the radiation. Defaults to 0 [IN]

  • dzen (Numeric, optional) – The zenith angle limit for the internal call to zen_gridProfilePseudo2D(). Defaults to 5 [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 zen_gridProfilePseudo2D(). Defaults to 1 [IN]