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 to self.atmospheric_profile [INOUT]

  • absorption_bands (AbsorptionBands, optional) – Bands of absorption lines for LBL calculations. See absorption_bands, defaults to self.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 to self.propagation_matrix_agenda [IN]

  • surface_field (SurfaceField, optional) – The surface field describes the surface properties. See surface_field, defaults to self.surface_field [IN]

  • frequency_grid (AscendingGrid, optional) – A single frequency grid. See frequency_grid, defaults to self.frequency_grid [IN]

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

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

  • longitude (Numeric, optional) – A single longitude. See longitude, defaults to self.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 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 zenith_gridProfilePseudo2D(). Defaults to 1 [IN]