ARTS  2.4.0(git:4fb77825)
rte.cc File Reference

Functions to solve radiative transfer tasks. More...

#include "rte.h"
#include <cmath>
#include <stdexcept>
#include "auto_md.h"
#include "check_input.h"
#include "legacy_continua.h"
#include "geodetic.h"
#include "lin_alg.h"
#include "logic.h"
#include "math_funcs.h"
#include "montecarlo.h"
#include "physics_funcs.h"
#include "ppath.h"
#include "refraction.h"
#include "special_interp.h"

Go to the source code of this file.

Functions

void adapt_stepwise_partial_derivatives (ArrayOfPropagationMatrix &dK_dx, ArrayOfStokesVector &dS_dx, const ArrayOfRetrievalQuantity &jacobian_quantities, ConstVectorView ppath_f_grid, ConstVectorView ppath_line_of_sight, ConstVectorView ppath_vmrs, const Numeric &ppath_temperature, const Numeric &ppath_pressure, const ArrayOfIndex &jacobian_species, const ArrayOfIndex &jacobian_wind, const Index &lte, const Index &atmosphere_dim, const bool &jacobian_do)
 Adapts clearsky partial derivatives. More...
 
void adjust_los (VectorView los, const Index &atmosphere_dim)
 Ensures that the zenith and azimuth angles of a line-of-sight vector are inside defined ranges. More...
 
void apply_iy_unit (MatrixView iy, const String &iy_unit, ConstVectorView f_grid, const Numeric &n, const ArrayOfIndex &i_pol)
 Performs conversion from radiance to other units, as well as applies refractive index to fulfill the n2-law of radiance. More...
 
void apply_iy_unit2 (Tensor3View J, ConstMatrixView iy, const String &iy_unit, ConstVectorView f_grid, const Numeric &n, const ArrayOfIndex &i_pol)
 Largely as apply_iy_unit but operates on jacobian data. More...
 
void bending_angle1d (Numeric &alpha, const Ppath &ppath)
 Calculates the bending angle for a 1D atmosphere. More...
 
void defocusing_general_sub (Workspace &ws, Vector &pos, Vector &rte_los, Index &background, ConstVectorView rte_pos, const Numeric &lo0, const Agenda &ppath_step_agenda, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, const Index &atmosphere_dim, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstVectorView f_grid, ConstVectorView refellipsoid, ConstMatrixView z_surface, const Verbosity &verbosity)
 Just to avoid duplicatuion of code in defocusing_general. More...
 
void defocusing_general (Workspace &ws, Numeric &dlf, const Agenda &ppath_step_agenda, const Index &atmosphere_dim, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstVectorView f_grid, ConstVectorView refellipsoid, ConstMatrixView z_surface, const Ppath &ppath, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, const Numeric &dza, const Verbosity &verbosity)
 Defocusing for arbitrary geometry (zenith angle part only) More...
 
void defocusing_sat2sat (Workspace &ws, Numeric &dlf, const Agenda &ppath_step_agenda, const Index &atmosphere_dim, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstVectorView f_grid, ConstVectorView refellipsoid, ConstMatrixView z_surface, const Ppath &ppath, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, const Numeric &dza, const Verbosity &verbosity)
 Calculates defocusing for limb measurements between two satellites. More...
 
Numeric dotprod_with_los (ConstVectorView los, const Numeric &u, const Numeric &v, const Numeric &w, const Index &atmosphere_dim)
 Calculates the dot product between a field and a LOS. More...
 
void ext_mat_case (Index &icase, ConstMatrixView ext_mat, const Index stokes_dim)
 
void ext2trans (MatrixView trans_mat, Index &icase, ConstMatrixView ext_mat, const Numeric &lstep)
 Converts an extinction matrix to a transmission matrix. More...
 
void get_iy (Workspace &ws, Matrix &iy, const Index &cloudbox_on, ConstVectorView f_grid, const EnergyLevelMap &nlte_field, ConstVectorView rte_pos, ConstVectorView rte_los, ConstVectorView rte_pos2, const String &iy_unit, const Agenda &iy_main_agenda)
 Basic call of iy_main_agenda. More...
 
void get_iy_of_background (Workspace &ws, Matrix &iy, ArrayOfTensor3 &diy_dx, ConstTensor3View iy_transmission, const Index &iy_id, const Index &jacobian_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const Ppath &ppath, ConstVectorView rte_pos2, const Index &atmosphere_dim, const EnergyLevelMap &nlte_field, const Index &cloudbox_on, const Index &stokes_dim, ConstVectorView f_grid, const String &iy_unit, ConstTensor3View surface_props_data, const Agenda &iy_main_agenda, const Agenda &iy_space_agenda, const Agenda &iy_surface_agenda, const Agenda &iy_cloudbox_agenda, const Index &iy_agenda_call1, const Verbosity &verbosity)
 Determines iy of the "background" of a propgation path. More...
 
void get_ppath_atmvars (Vector &ppath_p, Vector &ppath_t, EnergyLevelMap &ppath_nlte, Matrix &ppath_vmr, Matrix &ppath_wind, Matrix &ppath_mag, const Ppath &ppath, const Index &atmosphere_dim, ConstVectorView p_grid, ConstTensor3View t_field, const EnergyLevelMap &nlte_field, ConstTensor4View vmr_field, ConstTensor3View wind_u_field, ConstTensor3View wind_v_field, ConstTensor3View wind_w_field, ConstTensor3View mag_u_field, ConstTensor3View mag_v_field, ConstTensor3View mag_w_field)
 Determines pressure, temperature, VMR, winds and magnetic field for each propgataion path point. More...
 
void get_ppath_cloudvars (ArrayOfIndex &clear2cloudy, Matrix &ppath_pnd, ArrayOfMatrix &ppath_dpnd_dx, const Ppath &ppath, const Index &atmosphere_dim, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const ArrayOfTensor4 &dpnd_field_dx)
 Determines the particle fields along a propagation path. More...
 
void get_ppath_f (Matrix &ppath_f, const Ppath &ppath, ConstVectorView f_grid, const Index &atmosphere_dim, const Numeric &rte_alonglos_v, ConstMatrixView ppath_wind)
 Determines the Doppler shifted frequencies along the propagation path. More...
 
Range get_rowindex_for_mblock (const Sparse &sensor_response, const Index &mblock_index)
 Returns the "range" of y corresponding to a measurement block. More...
 
void get_stepwise_blackbody_radiation (VectorView B, VectorView dB_dT, ConstVectorView ppath_f_grid, const Numeric &ppath_temperature, const bool &do_temperature_derivative)
 Get the blackbody radiation at propagation path point. More...
 
void get_stepwise_clearsky_propmat (Workspace &ws, PropagationMatrix &K, StokesVector &S, Index &lte, ArrayOfPropagationMatrix &dK_dx, ArrayOfStokesVector &dS_dx, const Agenda &propmat_clearsky_agenda, const ArrayOfRetrievalQuantity &jacobian_quantities, ConstVectorView ppath_f_grid, ConstVectorView ppath_magnetic_field, ConstVectorView ppath_line_of_sight, const EnergyLevelMap &ppath_nlte, ConstVectorView ppath_vmrs, const Numeric &ppath_temperature, const Numeric &ppath_pressure, const ArrayOfIndex &jacobian_species, const bool &jacobian_do)
 Gets the clearsky propgation matrix and NLTE contributions. More...
 
void get_stepwise_effective_source (MatrixView J, Tensor3View dJ_dx, const PropagationMatrix &K, const StokesVector &a, const StokesVector &S, const ArrayOfPropagationMatrix &dK_dx, const ArrayOfStokesVector &da_dx, const ArrayOfStokesVector &dS_dx, ConstVectorView B, ConstVectorView dB_dT, const ArrayOfRetrievalQuantity &jacobian_quantities, const bool &jacobian_do)
 Gets the effective source at propagation path point. More...
 
void get_stepwise_frequency_grid (VectorView ppath_f_grid, ConstVectorView f_grid, ConstVectorView ppath_wind, ConstVectorView ppath_line_of_sight, const Numeric &rte_alonglos_v, const Index &atmosphere_dim)
 Inverse of get_stepwise_f_partials. More...
 
void get_stepwise_f_partials (Vector &f_partials, const Index &component, ConstVectorView &line_of_sight, ConstVectorView f_grid, const Index &atmosphere_dim)
 Computes the ratio that a partial derivative with regards to frequency relates to the wind of come component. More...
 
void get_stepwise_scattersky_propmat (StokesVector &ap, PropagationMatrix &Kp, ArrayOfStokesVector &dap_dx, ArrayOfPropagationMatrix &dKp_dx, const ArrayOfRetrievalQuantity &jacobian_quantities, ConstMatrixView ppath_1p_pnd, const ArrayOfMatrix &ppath_dpnd_dx, const Index ppath_1p_id, const ArrayOfArrayOfSingleScatteringData &scat_data, ConstVectorView ppath_line_of_sight, ConstVectorView ppath_temperature, const Index &atmosphere_dim, const bool &jacobian_do)
 Computes the contribution by scattering at propagation path point. More...
 
void get_stepwise_scattersky_source (StokesVector &Sp, ArrayOfStokesVector &dSp_dx, const ArrayOfRetrievalQuantity &jacobian_quantities, ConstVectorView ppath_1p_pnd, const ArrayOfMatrix &ppath_dpnd_dx, const Index ppath_1p_id, const ArrayOfArrayOfSingleScatteringData &scat_data, ConstTensor7View cloudbox_field, ConstVectorView za_grid, ConstVectorView aa_grid, ConstMatrixView ppath_line_of_sight, const GridPos &ppath_pressure, const Vector &temperature, const Index &atmosphere_dim, const bool &jacobian_do, const Index &t_interp_order)
 Calculates the stepwise scattering source terms. More...
 
void get_stepwise_transmission_matrix (Tensor3View cumulative_transmission, Tensor3View T, Tensor4View dT_close_dx, Tensor4View dT_far_dx, ConstTensor3View cumulative_transmission_close, const PropagationMatrix &K_close, const PropagationMatrix &K_far, const ArrayOfPropagationMatrix &dK_close_dx, const ArrayOfPropagationMatrix &dK_far_dx, const Numeric &ppath_distance, const bool &first_level, const Numeric &dppath_distance_dT_HSE_close, const Numeric &dppath_distance_dT_HSE_far, const Index &temperature_derivative_position_if_hse_is_active)
 Computes layer transmission matrix and cumulative transmission. More...
 
void iyb_calc_body (bool &failed, String &fail_msg, ArrayOfArrayOfMatrix &iy_aux_array, Workspace &ws, Ppath &ppath, Vector &iyb, ArrayOfMatrix &diyb_dx, const Index &mblock_index, const Index &atmosphere_dim, const EnergyLevelMap &nlte_field, const Index &cloudbox_on, const Index &stokes_dim, ConstMatrixView sensor_pos, ConstMatrixView sensor_los, ConstMatrixView transmitter_pos, ConstMatrixView mblock_dlos_grid, const String &iy_unit, const Agenda &iy_main_agenda, const Index &j_analytical_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const ArrayOfArrayOfIndex &jacobian_indices, ConstVectorView f_grid, const ArrayOfString &iy_aux_vars, const Index &ilos, const Index &nf)
 
void iyb_calc (Workspace &ws, Vector &iyb, ArrayOfVector &iyb_aux, ArrayOfMatrix &diyb_dx, Matrix &geo_pos_matrix, const Index &mblock_index, const Index &atmosphere_dim, const EnergyLevelMap &nlte_field, const Index &cloudbox_on, const Index &stokes_dim, ConstVectorView f_grid, ConstMatrixView sensor_pos, ConstMatrixView sensor_los, ConstMatrixView transmitter_pos, ConstMatrixView mblock_dlos_grid, const String &iy_unit, const Agenda &iy_main_agenda, const Agenda &geo_pos_agenda, const Index &j_analytical_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const ArrayOfArrayOfIndex &jacobian_indices, const ArrayOfString &iy_aux_vars, const Verbosity &verbosity)
 Performs calculations for one measurement block, on iy-level. More...
 
void iy_transmission_mult (Tensor3 &iy_trans_total, ConstTensor3View iy_trans_old, ConstTensor3View iy_trans_new)
 Multiplicates iy_transmission with transmissions. More...
 
void iy_transmission_mult (Matrix &iy_new, ConstTensor3View iy_trans, ConstMatrixView iy_old)
 Multiplicates iy_transmission with iy-variable. More...
 
void mirror_los (Vector &los_mirrored, ConstVectorView los, const Index &atmosphere_dim)
 Determines the backward direction for a given line-of-sight. More...
 
void pos2true_latlon (Numeric &lat, Numeric &lon, const Index &atmosphere_dim, ConstVectorView lat_grid, ConstVectorView lat_true, ConstVectorView lon_true, ConstVectorView pos)
 Determines the true alt and lon for an "ARTS position". More...
 
void rtmethods_jacobian_init (ArrayOfIndex &jac_species_i, ArrayOfIndex &jac_scat_i, ArrayOfIndex &jac_is_t, ArrayOfIndex &jac_wind_i, ArrayOfIndex &jac_mag_i, ArrayOfIndex &jac_other, ArrayOfTensor3 &diy_dx, ArrayOfTensor3 &diy_dpath, const Index &ns, const Index &nf, const Index &np, const Index &nq, const ArrayOfArrayOfSpeciesTag &abs_species, const Index &cloudbox_on, const ArrayOfString &scat_species, const ArrayOfTensor4 &dpnd_field_dx, const ArrayOfRetrievalQuantity &jacobian_quantities, const Index &iy_agenda_call1, const bool is_active)
 This function fixes the initial steps around Jacobian calculations, to be done inside radiative transfer WSMs. More...
 
void rtmethods_jacobian_finalisation (Workspace &ws, ArrayOfTensor3 &diy_dx, ArrayOfTensor3 &diy_dpath, const Index &ns, const Index &nf, const Index &np, const Index &atmosphere_dim, const Ppath &ppath, const Vector &ppvar_p, const Vector &ppvar_t, const Matrix &ppvar_vmr, const Index &iy_agenda_call1, const Tensor3 &iy_transmission, const Agenda &water_p_eq_agenda, const ArrayOfRetrievalQuantity &jacobian_quantities, const ArrayOfIndex jac_species_i, const ArrayOfIndex jac_is_t)
 This function fixes the last steps to made on the Jacobian in some radiative transfer WSMs. More...
 
void rtmethods_unit_conversion (Matrix &iy, ArrayOfTensor3 &diy_dx, Tensor3 &ppvar_iy, const Index &ns, const Index &np, const Vector &f_grid, const Ppath &ppath, const ArrayOfRetrievalQuantity &jacobian_quantities, const Index &j_analytical_do, const String &iy_unit)
 This function handles the unit conversion to be done at the end of some radiative transfer WSMs. More...
 
void yCalc_mblock_loop_body (bool &failed, String &fail_msg, ArrayOfArrayOfVector &iyb_aux_array, Workspace &ws, Vector &y, Vector &y_f, ArrayOfIndex &y_pol, Matrix &y_pos, Matrix &y_los, Matrix &y_geo, Matrix &jacobian, const Index &atmosphere_dim, const EnergyLevelMap &nlte_field, const Index &cloudbox_on, const Index &stokes_dim, const Vector &f_grid, const Matrix &sensor_pos, const Matrix &sensor_los, const Matrix &transmitter_pos, const Matrix &mblock_dlos_grid, const Sparse &sensor_response, const Vector &sensor_response_f, const ArrayOfIndex &sensor_response_pol, const Matrix &sensor_response_dlos, const String &iy_unit, const Agenda &iy_main_agenda, const Agenda &geo_pos_agenda, const Agenda &jacobian_agenda, const Index &jacobian_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const ArrayOfArrayOfIndex &jacobian_indices, const ArrayOfString &iy_aux_vars, const Verbosity &verbosity, const Index &mblock_index, const Index &n1y, const Index &j_analytical_do)
 Performs calculations for one measurement block, on y-level. More...
 
void ze_cfac (Vector &fac, const Vector &f_grid, const Numeric &ze_tref, const Numeric &k2)
 Calculates factor to convert back-scattering to Ze. More...
 

Variables

const String SURFACE_MAINTAG
 
const String PROPMAT_SUBSUBTAG
 
const String TEMPERATURE_MAINTAG
 
const String SCATSPECIES_MAINTAG
 
const Numeric SPEED_OF_LIGHT
 
const Numeric TEMP_0_C
 

Detailed Description

Functions to solve radiative transfer tasks.

Author
Patrick Eriksson Patri.nosp@m.ck.E.nosp@m.rikss.nosp@m.on@c.nosp@m.halme.nosp@m.rs.s.nosp@m.e
Date
2002-05-29

Definition in file rte.cc.

Function Documentation

◆ adapt_stepwise_partial_derivatives()

void adapt_stepwise_partial_derivatives ( ArrayOfPropagationMatrix dK_dx,
ArrayOfStokesVector dS_dx,
const ArrayOfRetrievalQuantity jacobian_quantities,
ConstVectorView  ppath_f_grid,
ConstVectorView  ppath_line_of_sight,
ConstVectorView  ppath_vmrs,
const Numeric ppath_temperature,
const Numeric ppath_pressure,
const ArrayOfIndex jacobian_species,
const ArrayOfIndex jacobian_wind,
const Index lte,
const Index atmosphere_dim,
const bool &  jacobian_do 
)

Adapts clearsky partial derivatives.

The following fields:

Wind VMR

Adaptation means changing unit by user input

Parameters
[in,out]dK_dxPropagation matrix derivatives at propagation path point, adapted for wind and VMR units
[in,out]dS_dxNLTE source adjustment derivatives at propagation path point, adapted for wind and VMR units
[in]jacobian_quantitiesas WSV
[in]ppath_f_gridWind-adjusted frequency grid at propagation path point
[in]ppath_line_of_sightLine of sight at propagation path point
[in]ppath_vmrsVolume mixing ratio of atmospheric species at propagation path point
[in]ppath_temperatureTemperature of atmosphere at propagation path point
[in]ppath_pressurePressure of atmosphere at propagation path point
[in]jacobian_speciesIndex list showing where and how the Jacobian needs to compute VMRs
[in]jacobian_windIndex list showing where and how the Jacobian needs to compute Wind
[in]lteBoolean index for whether or not the atmosphere is in LTE at propagation path point
[in]atmosphere_dimAs WSV
[in]jacobian_doAs WSV
Author
Richard Larsson
Date
2017-09-21

Definition at line 59 of file rte.cc.

References ARTS::Var::atmosphere_dim(), dxdvmrscf(), get_stepwise_f_partials(), ARTS::Var::jacobian_do(), ARTS::Var::jacobian_quantities(), PROPMAT_SUBSUBTAG, and vmrunitscf().

Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().

◆ adjust_los()

void adjust_los ( VectorView  los,
const Index atmosphere_dim 
)

Ensures that the zenith and azimuth angles of a line-of-sight vector are inside defined ranges.

This function should not be used blindly, just when you know that the out-of-bounds values are obtained by an OK operation. As when making a disturbance calculation where e.g. the zenith angle is shifted with a small value. This function then handles the case when the original zenith angle is 0 or 180 and the disturbance then moves the angle outside the defined range.

Parameters
[in,out]losLOS vector, defined as e.g. rte_los.
[in]atmosphere_dimAs the WSV.
Author
Patrick Eriksson
Date
2012-04-11

Definition at line 140 of file rte.cc.

References abs, ARTS::Var::atmosphere_dim(), cart2zaaa(), dx, and zaaa2cart().

Referenced by defocusing_general_sub(), defocusing_sat2sat(), iyb_calc_body(), raytrace_3d_linear_basic(), and surfaceSemiSpecularBy3beams().

◆ apply_iy_unit()

void apply_iy_unit ( MatrixView  iy,
const String iy_unit,
ConstVectorView  f_grid,
const Numeric n,
const ArrayOfIndex i_pol 
)

Performs conversion from radiance to other units, as well as applies refractive index to fulfill the n2-law of radiance.

Use apply_iy_unit2 for conversion of jacobian data.

Parameters
[in,out]iyTensor3 with data to be converted, where column dimension corresponds to Stokes dimensionality and row dimension corresponds to frequency.
[in]iy_unitAs the WSV.
[in]f_gridAs the WSV.
[in]nRefractive index at the observation position.
[in]i_polPolarisation indexes. See documentation of y_pol.
Author
Patrick Eriksson
Date
2010-04-07

Definition at line 163 of file rte.cc.

References ARTS::Var::f_grid(), invplanck(), invrayjean(), ARTS::Var::iy(), ARTS::Var::iy_unit(), Array< base >::nelem(), ns, and SPEED_OF_LIGHT.

Referenced by rtmethods_unit_conversion().

◆ apply_iy_unit2()

void apply_iy_unit2 ( Tensor3View  J,
ConstMatrixView  iy,
const String iy_unit,
ConstVectorView  f_grid,
const Numeric n,
const ArrayOfIndex i_pol 
)

Largely as apply_iy_unit but operates on jacobian data.

The associated spectrum data iy must be in radiance. That is, the spectrum can only be converted to Tb after the jacobian data.

Parameters
[in,out]JTensor3 with data to be converted, where column dimension corresponds to Stokes dimensionality and row dimension corresponds to frequency.
[in]iyAssociated radiance data.
[in]iy_unitAs the WSV.
[in]f_gridAs the WSV.
[in]nRefractive index at the observation position.
[in]i_polPolarisation indexes. See documentation of y_pol.
Author
Patrick Eriksson
Date
2010-04-10

Definition at line 238 of file rte.cc.

References dinvplanckdI(), ARTS::Var::f_grid(), invrayjean(), ARTS::Var::iy(), ARTS::Var::iy_unit(), ConstTensor3View::ncols(), Array< base >::nelem(), ConstTensor3View::npages(), ConstTensor3View::nrows(), ns, and SPEED_OF_LIGHT.

Referenced by rtmethods_unit_conversion().

◆ bending_angle1d()

void bending_angle1d ( Numeric alpha,
const Ppath ppath 
)

Calculates the bending angle for a 1D atmosphere.

The expression used assumes a 1D atmosphere, that allows the bending angle to be calculated by start and end LOS. This is an approximation for 2D and 3D, but a very small one and the function should in general be OK also for 2D and 3D.

The expression is taken from Kursinski et al., The GPS radio occultation technique, TAO, 2000.

FIXMEDOC@Patrick, if this function only returns a numeric, have it defined as "Numeric bending_angle1d(ppath)" since this is better code.

Parameters
[in]ppathPropagation path.
Returns
alpha Bending angle
Author
Patrick Eriksson
Date
2012-04-05

Definition at line 327 of file rte.cc.

Referenced by defocusing_sat2sat().

◆ defocusing_general()

void defocusing_general ( Workspace ws,
Numeric dlf,
const Agenda ppath_step_agenda,
const Index atmosphere_dim,
ConstVectorView  p_grid,
ConstVectorView  lat_grid,
ConstVectorView  lon_grid,
ConstTensor3View  z_field,
ConstVectorView  f_grid,
ConstVectorView  refellipsoid,
ConstMatrixView  z_surface,
const Ppath ppath,
const Numeric ppath_lmax,
const Numeric ppath_lraytrace,
const Numeric dza,
const Verbosity verbosity 
)

Defocusing for arbitrary geometry (zenith angle part only)

Estimates the defocusing loss factor by calculating two paths with zenith angle off-sets. The distance between the two path at the optical path length between the transmitter and the receiver, divided with the corresponding distance for free space propagation, gives the defocusing loss.

The azimuth (gain) factor is not calculated. The path calculations are here done starting from the transmitter, which is the reversed direction compared to the ordinary path calculations starting at the receiver.

Parameters
[in,out]wsThe workspace.
[out]dlfDefocusing loss factor (1 for no loss)
[in]ppath_step_agendaAs the WSV with the same name.
[in]atmosphere_dimAs the WSV with the same name.
[in]p_gridAs the WSV with the same name.
[in]lat_gridAs the WSV with the same name.
[in]lon_gridAs the WSV with the same name.
[in]z_fieldAs the WSV with the same name.
[in]f_gridAs the WSV with the same name.
[in]refellipsoidAs the WSV with the same name.
[in]z_surfaceAs the WSV with the same name.
[in]ppathAs the WSV with the same name.
[in]ppath_lmaxAs the WSV with the same name.
[in]ppath_lraytraceAs the WSV with the same name.
[in]dzaSize of angular shift to apply.
[in]verbosityAs the WSV with the same name.
Author
Patrick Eriksson
Date
2012-04-11

Definition at line 494 of file rte.cc.

References ARTS::Var::atmosphere_dim(), defocusing_general_sub(), DEG2RAD, distance2D(), distance3D(), ARTS::Var::f_grid(), ARTS::Var::lat_grid(), ARTS::Var::lo(), ARTS::Var::lon_grid(), max, mirror_los(), ARTS::Var::p_grid(), ARTS::Var::ppath(), ARTS::Var::ppath_lmax(), ARTS::Var::ppath_lraytrace(), ARTS::Var::ppath_step_agenda(), refell2r(), ARTS::Var::refellipsoid(), ARTS::Var::rte_los(), ARTS::Var::rte_pos(), ARTS::Var::verbosity(), ARTS::Var::z_field(), and ARTS::Var::z_surface().

◆ defocusing_general_sub()

void defocusing_general_sub ( Workspace ws,
Vector pos,
Vector rte_los,
Index background,
ConstVectorView  rte_pos,
const Numeric lo0,
const Agenda ppath_step_agenda,
const Numeric ppath_lmax,
const Numeric ppath_lraytrace,
const Index atmosphere_dim,
ConstVectorView  p_grid,
ConstVectorView  lat_grid,
ConstVectorView  lon_grid,
ConstTensor3View  z_field,
ConstVectorView  f_grid,
ConstVectorView  refellipsoid,
ConstMatrixView  z_surface,
const Verbosity verbosity 
)

Just to avoid duplicatuion of code in defocusing_general.

rte_los is mainly an input, but is also returned "adjusted" (with zenith and azimuth angles inside defined ranges)

Parameters
[out]posPosition of ppath at optical distance lo0
[in,out]rte_losDirection for transmitted signal (disturbed from nominal value)
[out]rte_posPosition of transmitter.
[out]backgroundRaditaive background of ppath.
[in]lo0Optical path length between transmitter and receiver.
[in]ppath_step_agendaAs the WSV with the same name.
[in]atmosphere_dimAs the WSV with the same name.
[in]p_gridAs the WSV with the same name.
[in]lat_gridAs the WSV with the same name.
[in]lon_gridAs the WSV with the same name.
[in]z_fieldAs the WSV with the same name.
[in]f_gridAs the WSV with the same name.
[in]refellipsoidAs the WSV with the same name.
[in]z_surfaceAs the WSV with the same name.
[in]verbosityAs the WSV with the same name.
Author
Patrick Eriksson
Date
2012-04-11

Definition at line 372 of file rte.cc.

References adjust_los(), ARTS::Var::atmosphere_dim(), cart2pol(), cart2sph(), dx, Ppath::end_lstep, ARTS::Var::f_grid(), gridpos(), interp(), interpweights(), joker, ARTS::Var::lat_grid(), ARTS::Var::lon_grid(), Ppath::los, Ppath::lstep, max, Ppath::np, Ppath::nreal, ARTS::Var::p_grid(), Ppath::pos, poslos2cart(), ppath_calc(), ARTS::Var::ppath_lmax(), ARTS::Var::ppath_lraytrace(), ARTS::Var::ppath_step_agenda(), ppath_what_background(), Ppath::r, ARTS::Var::refellipsoid(), Vector::resize(), ARTS::Var::rte_los(), ARTS::Var::rte_pos(), ARTS::Var::verbosity(), ARTS::Var::x(), ARTS::Var::y(), ARTS::Var::z_field(), and ARTS::Var::z_surface().

Referenced by defocusing_general().

◆ defocusing_sat2sat()

void defocusing_sat2sat ( Workspace ws,
Numeric dlf,
const Agenda ppath_step_agenda,
const Index atmosphere_dim,
ConstVectorView  p_grid,
ConstVectorView  lat_grid,
ConstVectorView  lon_grid,
ConstTensor3View  z_field,
ConstVectorView  f_grid,
ConstVectorView  refellipsoid,
ConstMatrixView  z_surface,
const Ppath ppath,
const Numeric ppath_lmax,
const Numeric ppath_lraytrace,
const Numeric dza,
const Verbosity verbosity 
)

Calculates defocusing for limb measurements between two satellites.

The expressions used assume a 1D atmosphere, and can only be applied on limb sounding geometry. The function works for 2D and 3D and should give OK estimates. Both the zenith angle (loss) and azimuth angle (gain) terms are considered.

The expressions is taken from Kursinski et al., The GPS radio occultation technique, TAO, 2000.

Parameters
[in,out]wsThe workspace.
[out]dlfDefocusing loss factor (1 for no loss)
[in]ppath_step_agendaAs the WSV with the same name.
[in]atmosphere_dimAs the WSV with the same name.
[in]p_gridAs the WSV with the same name.
[in]lat_gridAs the WSV with the same name.
[in]lon_gridAs the WSV with the same name.
[in]z_fieldAs the WSV with the same name.
[in]f_gridAs the WSV with the same name.
[in]refellipsoidAs the WSV with the same name.
[in]z_surfaceAs the WSV with the same name.
[in]ppathAs the WSV with the same name.
[in]ppath_lmaxAs the WSV with the same name.
[in]ppath_lraytraceAs the WSV with the same name.
[in]dzaSize of angular shift to apply.
[in]verbosityAs the WSV with the same name.
Author
Patrick Eriksson
Date
2012-04-11

Definition at line 613 of file rte.cc.

References a1, a2, adjust_los(), ARTS::Var::atmosphere_dim(), bending_angle1d(), Ppath::constant, DEG2RAD, ARTS::Var::f_grid(), find_tanpoint(), ARTS::Var::lat_grid(), ARTS::Var::lon_grid(), ARTS::Var::p_grid(), ARTS::Var::ppath(), ppath_calc(), ARTS::Var::ppath_lmax(), ARTS::Var::ppath_lraytrace(), ARTS::Var::ppath_step_agenda(), ppath_what_background(), ARTS::Var::refellipsoid(), ARTS::Var::rte_los(), ARTS::Var::rte_pos(), ARTS::Var::verbosity(), ARTS::Var::z_field(), and ARTS::Var::z_surface().

◆ dotprod_with_los()

Numeric dotprod_with_los ( ConstVectorView  los,
const Numeric u,
const Numeric v,
const Numeric w,
const Index atmosphere_dim 
)

Calculates the dot product between a field and a LOS.

The line-of-sight shall be given as in the ppath structure (i.e. the viewing direction), but the dot product is calculated for the photon direction. The field is specified by its three components.

The returned value can be written as |f|*cos(theta), where |f| is the field strength, and theta the angle between the field and photon vectors.

Parameters
[in]losPppath line-of-sight.
[in]uU-component of field.
[in]vV-component of field.
[in]wW-component of field.
[in]atmosphere_dimAs the WSV.
Returns
The result of the dot product
Author
Patrick Eriksson
Date
2012-12-12

Definition at line 730 of file rte.cc.

References ARTS::Var::atmosphere_dim(), DEG2RAD, mirror_los(), sqrt(), and w().

Referenced by get_ppath_f(), get_stepwise_f_partials(), get_stepwise_frequency_grid(), and propmat_clearskyAddFaraday().

◆ ext2trans()

void ext2trans ( MatrixView  trans_mat,
Index icase,
ConstMatrixView  ext_mat_av,
const Numeric l_step 
)

Converts an extinction matrix to a transmission matrix.

The function performs the calculations differently depending on the conditions, to improve the speed. There are three cases:

  1. Scalar RT and/or the matrix ext_mat_av is diagonal.
  2. Special expression for "azimuthally_random" case.
  3. The total general case.

If the structure of ext_mat is known, icase can be set to "case index" (1, 2 or 3) and some time is saved. This includes that no asserts are performed on ext_mat.

Otherwise, icase must be set to 0. ext_mat is then analysed and icase is set by the function and is returned.

trans_mat must be sized before calling the function.

Parameters
[out]trans_matTransmission matrix of slab.
[out]icaseIndex giving ext_mat case.
[in]ext_matAveraged extinction matrix.
[in]lstepThe length of the RTE step.
Author
Patrick Eriksson (based on earlier version started by Claudia)
Date
2013-05-17

Definition at line 800 of file rte.cc.

References cayley_hamilton_fitted_method_4x4_propmat_to_transmat__eigen(), ARTS::Var::ext_mat(), ext_mat_case(), is_singular(), matrix_exp(), ConstMatrixView::ncols(), ConstMatrixView::nrows(), q, and ARTS::Var::stokes_dim().

Referenced by get_ppath_transmat(), main(), and mcPathTraceRadar().

◆ ext_mat_case()

void ext_mat_case ( Index icase,
ConstMatrixView  ext_mat,
const Index  stokes_dim 
)

Definition at line 751 of file rte.cc.

References ARTS::Var::ext_mat(), and ARTS::Var::stokes_dim().

Referenced by ext2trans().

◆ get_iy()

void get_iy ( Workspace ws,
Matrix iy,
const Index cloudbox_on,
ConstVectorView  f_grid,
const EnergyLevelMap nlte_field,
ConstVectorView  rte_pos,
ConstVectorView  rte_los,
ConstVectorView  rte_pos2,
const String iy_unit,
const Agenda iy_main_agenda 
)

Basic call of iy_main_agenda.

This function is an interface to iy_main_agenda that can be used when only iy is of interest. That is, jacobian and auxilary parts are deactivated/ignored.

Parameters
[in,out]wsThe workspace
[out]iyAs the WSV.
[in]cloudbox_onAs the WSV.
[in]f_gridAs the WSV.
[in]nlte_fieldAs the WSV.
[in]rte_posAs the WSV.
[in]rte_losAs the WSV.
[in]iy_unitAs the WSV.
[in]iy_main_agendaAs the WSV.
Author
Patrick Eriksson
Date
2012-08-08

Definition at line 877 of file rte.cc.

References ARTS::Var::cloudbox_on(), ARTS::Var::diy_dx(), ARTS::Var::f_grid(), ARTS::Var::iy(), ARTS::Var::iy_agenda_call1(), ARTS::Var::iy_aux(), ARTS::Var::iy_aux_vars(), ARTS::Var::iy_id(), ARTS::Var::iy_main_agenda(), iy_main_agendaExecute(), ARTS::Var::iy_transmission(), ARTS::Var::iy_unit(), ARTS::Var::jacobian_do(), ARTS::Var::nlte_field(), ARTS::Var::ppath(), ARTS::Var::rte_los(), ARTS::Var::rte_pos(), and ARTS::Var::rte_pos2().

Referenced by DoitGetIncoming(), and DoitGetIncoming1DAtm().

◆ get_iy_of_background()

void get_iy_of_background ( Workspace ws,
Matrix iy,
ArrayOfTensor3 diy_dx,
ConstTensor3View  iy_transmission,
const Index iy_id,
const Index jacobian_do,
const ArrayOfRetrievalQuantity jacobian_quantities,
const Ppath ppath,
ConstVectorView  rte_pos2,
const Index atmosphere_dim,
const EnergyLevelMap nlte_field,
const Index cloudbox_on,
const Index stokes_dim,
ConstVectorView  f_grid,
const String iy_unit,
ConstTensor3View  surface_props_data,
const Agenda iy_main_agenda,
const Agenda iy_space_agenda,
const Agenda iy_surface_agenda,
const Agenda iy_cloudbox_agenda,
const Index iy_agenda_call1,
const Verbosity verbosity 
)

Determines iy of the "background" of a propgation path.

The task is to determine iy and related variables for the background, or to continue the raditiave calculations "backwards". The details here depends on the method selected for the agendas.

Each background is handled by an agenda. Several of these agandes can involve recursive calls of iy_main_agenda.

Parameters
[in,out]wsThe workspace
[out]iyAs the WSV.
[out]diy_dxAs the WSV.
[in]iy_transmissionAs the WSV.
[in]jacobian_doAs the WSV.
[in]ppathAs the WSV.
[in]atmosphere_dimAs the WSV.
[in]cloudbox_onAs the WSV.
[in]stokes_dimAs the WSV.
[in]f_gridAs the WSV.
[in]iy_unitAs the WSV.
[in]surface_props_dataAs the WSV.
[in]iy_main_agendaAs the WSV.
[in]iy_space_agendaAs the WSV.
[in]iy_surface_agendaAs the WSV.
[in]iy_cloudbox_agendaAs the WSV.
Author
Patrick Eriksson
Date
2009-10-08

Definition at line 916 of file rte.cc.

References ARTS::Var::atmosphere_dim(), chk_not_empty(), ARTS::Var::cloudbox_on(), CREATE_OUT3, ARTS::Var::diy_dx(), ARTS::Var::dsurface_emission_dx(), ARTS::Var::dsurface_names(), ARTS::Var::dsurface_rmatrix_dx(), ARTS::Var::f_grid(), ARTS::Var::iy(), ARTS::Var::iy_agenda_call1(), ARTS::Var::iy_cloudbox_agenda(), iy_cloudbox_agendaExecute(), ARTS::Var::iy_id(), ARTS::Var::iy_main_agenda(), ARTS::Var::iy_space_agenda(), iy_space_agendaExecute(), ARTS::Var::iy_surface_agenda(), iy_surface_agendaExecute(), ARTS::Var::iy_transmission(), ARTS::Var::iy_unit(), ARTS::Var::jacobian_do(), ARTS::Var::jacobian_quantities(), joker, ARTS::Var::nlte_field(), ARTS::Var::Ppath::pos(), ARTS::Var::ppath(), ppath_what_background(), ARTS::Var::rte_pos2(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::stokes_dim(), SURFACE_MAINTAG, and ARTS::Var::surface_props_data().

Referenced by emission_from_propmat_field(), iyEmissionStandardSequential(), iyHybrid(), and iyHybrid2().

◆ get_ppath_atmvars()

void get_ppath_atmvars ( Vector ppath_p,
Vector ppath_t,
EnergyLevelMap ppath_nlte,
Matrix ppath_vmr,
Matrix ppath_wind,
Matrix ppath_mag,
const Ppath ppath,
const Index atmosphere_dim,
ConstVectorView  p_grid,
ConstTensor3View  t_field,
const EnergyLevelMap nlte_field,
ConstTensor4View  vmr_field,
ConstTensor3View  wind_u_field,
ConstTensor3View  wind_v_field,
ConstTensor3View  wind_w_field,
ConstTensor3View  mag_u_field,
ConstTensor3View  mag_v_field,
ConstTensor3View  mag_w_field 
)

Determines pressure, temperature, VMR, winds and magnetic field for each propgataion path point.

The output variables are sized inside the function. For VMR the dimensions are [ species, propagation path point ].

Parameters
[out]ppath_pPressure for each ppath point.
[out]ppath_tTemperature for each ppath point.
[out]ppath_vmrVMR values for each ppath point.
[out]ppath_windWind vector for each ppath point.
[out]ppath_magMag. field vector for each ppath point.
[in]ppathAs the WSV.
[in]atmosphere_dimAs the WSV.
[in]p_gridAs the WSV.
[in]lat_gridAs the WSV.
[in]lon_gridAs the WSV.
[in]t_fieldAs the WSV.
[in]vmr_fieldAs the WSV.
[in]wind_u_fieldAs the WSV.
[in]wind_v_fieldAs the WSV.
[in]wind_w_fieldAs the WSV.
[in]mag_u_fieldAs the WSV.
[in]mag_v_fieldAs the WSV.
[in]mag_w_fieldAs the WSV.
Author
Patrick Eriksson
Date
2009-10-05

Definition at line 1034 of file rte.cc.

References ARTS::Var::atmosphere_dim(), interp_atmfield_by_itw(), interp_atmfield_gp2itw(), interpweights(), itw2p(), joker, ARTS::Var::mag_u_field(), ARTS::Var::mag_v_field(), ARTS::Var::mag_w_field(), ARTS::Var::nlte_field(), ns, ARTS::Var::p_grid(), ARTS::Var::ppath(), Vector::resize(), Matrix::resize(), ARTS::Var::t_field(), ARTS::Var::vmr_field(), ARTS::Var::wind_u_field(), ARTS::Var::wind_v_field(), and ARTS::Var::wind_w_field().

Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().

◆ get_ppath_cloudvars()

void get_ppath_cloudvars ( ArrayOfIndex clear2cloudy,
Matrix ppath_pnd,
ArrayOfMatrix ppath_dpnd_dx,
const Ppath ppath,
const Index atmosphere_dim,
const ArrayOfIndex cloudbox_limits,
const Tensor4 pnd_field,
const ArrayOfTensor4 dpnd_field_dx 
)

Determines the particle fields along a propagation path.

Parameters
[out]clear2cloudyMapping of index. See code for details.
[out]ppath_pndThe particle number density for each path point (also outside cloudbox).
[out]ppath_dpnd_dxdpnd_field_dx for each path point (also outside cloudbox).
[in]ppathAs the WSV.
[in]cloubox_limitsAs the WSV.
[in]pnd_fieldAs the WSV.
[in]dpnd_field_dxAs the WSV.
Author
Jana Mendrok, Patrick Eriksson
Date
2017-09-18

Definition at line 1153 of file rte.cc.

References ARTS::Var::atmosphere_dim(), ARTS::Var::cloudbox_limits(), ARTS::Var::dpnd_field_dx(), gridpos_copy(), interp_atmfield_by_itw(), interp_cloudfield_gp2itw(), is_gp_inside_cloudbox(), joker, max, min, ARTS::Var::pnd_field(), pow(), ARTS::Var::ppath(), and Matrix::resize().

Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().

◆ get_ppath_f()

void get_ppath_f ( Matrix ppath_f,
const Ppath ppath,
ConstVectorView  f_grid,
const Index atmosphere_dim,
const Numeric rte_alonglos_v,
ConstMatrixView  ppath_wind 
)

Determines the Doppler shifted frequencies along the propagation path.

ppath_doppler[ nf,np]

Parameters
[out]ppath_fDoppler shifted f_grid
[in]ppathPropagation path.
[in]f_gridOriginal f_grid.
[in]atmosphere_dimAs the WSV.
[in]rte_alonglos_vAs the WSV.
[in]ppath_windSee get_ppath_atmvars.
Author
Patrick Eriksson
Date
2013-02-21

Definition at line 1257 of file rte.cc.

References ARTS::Var::atmosphere_dim(), dotprod_with_los(), ARTS::Var::f_grid(), joker, ARTS::Var::ppath(), Matrix::resize(), ARTS::Var::rte_alonglos_v(), and SPEED_OF_LIGHT.

Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().

◆ get_rowindex_for_mblock()

Range get_rowindex_for_mblock ( const Sparse sensor_response,
const Index imblock 
)

Returns the "range" of y corresponding to a measurement block.

Parameters
[in]sensor_responseAs the WSV.
[in]mblock_indexIndex of the measurement block.
Returns
The range.
Author
Patrick Eriksson
Date
2009-10-16

Definition at line 1301 of file rte.cc.

References ARTS::Var::mblock_index(), and ARTS::Var::sensor_response().

Referenced by jacobianCalcFreqShift(), jacobianCalcFreqStretch(), jacobianCalcPointingZaInterp(), jacobianCalcPointingZaRecalc(), jacobianCalcPolyfit(), yCalc(), and yCalc_mblock_loop_body().

◆ get_stepwise_blackbody_radiation()

void get_stepwise_blackbody_radiation ( VectorView  B,
VectorView  dB_dT,
ConstVectorView  ppath_f_grid,
const Numeric ppath_temperature,
const bool &  do_temperature_derivative 
)

Get the blackbody radiation at propagation path point.

Parameters
[in,out]BBlackbody radiation at propagation path point
[in,out]dB_dTBlackbody radiation temperature derivative at propagation path point
[in]ppath_f_gridWind-adjusted frequency grid at propagation path point
[in]ppath_temperatureTemperature of atmosphere at propagation path point
[in]do_temperature_derivativeFill dB_dT?
Author
Richard Larsson
Date
2017-09-21

Definition at line 1307 of file rte.cc.

References dplanck_dt(), ConstVectorView::nelem(), and planck().

Referenced by emission_from_propmat_field(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), and iyHybrid2().

◆ get_stepwise_clearsky_propmat()

void get_stepwise_clearsky_propmat ( Workspace ws,
PropagationMatrix K,
StokesVector S,
Index lte,
ArrayOfPropagationMatrix dK_dx,
ArrayOfStokesVector dS_dx,
const Agenda propmat_clearsky_agenda,
const ArrayOfRetrievalQuantity jacobian_quantities,
ConstVectorView  ppath_f_grid,
ConstVectorView  ppath_magnetic_field,
ConstVectorView  ppath_line_of_sight,
const EnergyLevelMap ppath_nlte,
ConstVectorView  ppath_vmrs,
const Numeric ppath_temperature,
const Numeric ppath_pressure,
const ArrayOfIndex jacobian_species,
const bool &  jacobian_do 
)

Gets the clearsky propgation matrix and NLTE contributions.

Basically a wrapper for calls to the propagation clearsky agenda

Parameters
[in]wsThe workspace
[in,out]KPropagation matrix at propagation path point
[in,out]SNLTE source adjustment at propagation path point
[in,out]lteBoolean index for whether or not the atmosphere is in LTE at propagation path point
[in,out]dK_dxPropagation matrix derivatives at propagation path point
[in,out]dS_dxNLTE source adjustment derivatives at propagation path point
[in]propmat_clearsky_agendaAs WSA
[in]jacobian_quantitiesAs WSV
[in]ppath_f_gridWind-adjusted frequency grid at propagation path point
[in]ppath_mag_fieldMagnetic field at propagation path point
[in]ppath_line_of_sightLine of sight at propagation path point
[in]ppath_nlteNLTE distribution at propagation path point
[in]ppath_vmrsVolume mixing ratio of atmospheric species at propagation path point
[in]ppath_temperatureTemperature of atmosphere at propagation path point
[in]ppath_pressurePressure of atmosphere at propagation path point
[in]jacobian_speciesIndex list showing where and how the Jacobian needs to compute VMRs
[in]jacobian_doAs WSV
Author
Richard Larsson
Date
2017-09-21

Definition at line 1322 of file rte.cc.

References ARTS::Var::dnlte_dx_source(), ARTS::Var::dpropmat_clearsky_dx(), equivalent_propmattype_index(), ARTS::Var::jacobian_do(), ARTS::Var::jacobian_quantities(), ARTS::Var::nlte_source(), ARTS::Var::propmat_clearsky(), ARTS::Var::propmat_clearsky_agenda(), propmat_clearsky_agendaExecute(), PROPMAT_SUBSUBTAG, SCATSPECIES_MAINTAG, and PropagationMatrix::SetZero().

Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().

◆ get_stepwise_effective_source()

void get_stepwise_effective_source ( MatrixView  J,
Tensor3View  dJ_dx,
const PropagationMatrix K,
const StokesVector a,
const StokesVector S,
const ArrayOfPropagationMatrix dK_dx,
const ArrayOfStokesVector da_dx,
const ArrayOfStokesVector dS_dx,
ConstVectorView  B,
ConstVectorView  dB_dT,
const ArrayOfRetrievalQuantity jacobian_quantities,
const bool &  jacobian_do 
)

Gets the effective source at propagation path point.

Computes

J = K^-1 (a B + S)

and

dJ = - K^-1 dK/dx K^-1 (a B + S) + K^-1 (da B + a dB + dS)

Assumes zeroes for the a and K if nothing is happening but checks all other variables

FIXME: This function should be removed

Parameters
[in,out]JSource term for RTE at propagation path point
[in,out]dJ_dxSource term derivative for RTE at propagation path point
[in]KPropagation matrix, clearsky+scattersky, at propagation path point
[in]aAbsorption vector, clearsky+scattersky, at propagation path point
[in]SNLTE source adjustment, clearsky+scattersky, at propagation path point
[in]dK_dxPropagation matrix derivatives, clearsky+scattersky, at propagation path point
[in]da_dxAbsorption vector derivatives, clearsky+scattersky, at propagation path point
[in]dS_dxNLTE source adjustment derivatives, clearsky+scattersky, at propagation path point
[in]BBlackbody radiation at propagation path point
[in]dB_dTBlackbody radiation temperature derivative at propagation path point
[in]jacobian_quantitiesAs WSV
[in]jacobian_doAs WSV
Author
Richard Larsson
Date
2017-09-21

Definition at line 1427 of file rte.cc.

References PropagationMatrix::IsEmpty(), PropagationMatrix::IsRotational(), ARTS::Var::jacobian_do(), ARTS::Var::jacobian_quantities(), joker, PropagationMatrix::MatrixInverseAtPosition(), mult(), ns, PropagationMatrix::NumberOfFrequencies(), PropagationMatrix::StokesDimensions(), TEMPERATURE_MAINTAG, and StokesVector::VectorAtPosition().

Referenced by iyHybrid().

◆ get_stepwise_f_partials()

void get_stepwise_f_partials ( Vector f_partials,
const Index component,
ConstVectorView ppath_line_of_sight,
ConstVectorView  f_grid,
const Index atmosphere_dim 
)

Computes the ratio that a partial derivative with regards to frequency relates to the wind of come component.

Parameters
[in,out]ppath_f_gridWind-adjusted frequency grid wind derivative at propagation path point
[in]componentThe wind component [0 is full, 1 is u, 2 is v, 3 is w, rest are undefined]
[in]ppath_line_of_sightLine of sight at propagation path point
[in]f_gridAs WSV
[in]atmosphere_dimAs WSV
Author
Richard Larsson
Date
2017-09-21

Definition at line 1541 of file rte.cc.

References ARTS::Var::atmosphere_dim(), dotprod_with_los(), ARTS::Var::f_grid(), Vector::resize(), and SPEED_OF_LIGHT.

Referenced by adapt_stepwise_partial_derivatives().

◆ get_stepwise_frequency_grid()

void get_stepwise_frequency_grid ( VectorView  ppath_f_grid,
ConstVectorView  f_grid,
ConstVectorView  ppath_wind,
ConstVectorView  ppath_line_of_sight,
const Numeric rte_alonglos_v,
const Index atmosphere_dim 
)

Inverse of get_stepwise_f_partials.

Computes practical frequency grid due to wind for propmat_clearsky_agenda

Parameters
[in,out]ppath_f_gridWind-adjusted frequency grid at propagation path point
[in]f_gridAs WSV
[in]ppath_windWind vector at propagation path point
[in]ppath_line_of_sightLine of sight at propagation path point
[in]rte_alonglos_vAs WSV
[in]atmosphere_dimAs WSV
Author
Richard Larsson
Date
2017-09-21

Definition at line 1521 of file rte.cc.

References ARTS::Var::atmosphere_dim(), dotprod_with_los(), ARTS::Var::f_grid(), ARTS::Var::rte_alonglos_v(), and SPEED_OF_LIGHT.

◆ get_stepwise_scattersky_propmat()

void get_stepwise_scattersky_propmat ( StokesVector ap,
PropagationMatrix Kp,
ArrayOfStokesVector dap_dx,
ArrayOfPropagationMatrix dKp_dx,
const ArrayOfRetrievalQuantity jacobian_quantities,
ConstMatrixView  ppath_1p_pnd,
const ArrayOfMatrix ppath_dpnd_dx,
const Index  ppath_1p_id,
const ArrayOfArrayOfSingleScatteringData scat_data,
ConstVectorView  ppath_line_of_sight,
ConstVectorView  ppath_temperature,
const Index atmosphere_dim,
const bool &  jacobian_do 
)

Computes the contribution by scattering at propagation path point.

Parameters
[in,out]apAbsorption vector scattersky at propagation path point
[in,out]KpPropagation matrix scattersky at propagation path point
[in,out]dap_dxAbsorption vector scattersky derivatives at propagation path point
[in,out]dKp_dxPropagation matrix scattersky derivatives at propagation path point
[in]jacobian_quantitiesAs WSV
[in]ppath_1p_pndParticulate number density at propagation path point
[in]scat_dataAs WSV
[in]ppath_line_of_sightLine of sight at propagation path point
[in]ppath_temperatureTemperature at propagation path point
[in]atmosphere_dimAs WSV
[in]jacobian_doAs WSV
Author
Jana Mendrok, Richard Larsson
Date
2017-09-21

Definition at line 1591 of file rte.cc.

References ARTS::Var::atmosphere_dim(), FOR_ANALYTICAL_JACOBIANS_DO, ARTS::Var::jacobian_do(), joker, mirror_los(), ConstTensor4View::nbooks(), PropagationMatrix::NumberOfFrequencies(), opt_prop_Bulk(), opt_prop_NScatElems(), opt_prop_ScatSpecBulk(), ARTS::Var::scat_data(), ARTS::Var::scat_data_mono(), PropagationMatrix::SetAtPosition(), StokesVector::SetAtPosition(), ARTS::Var::stokes_dim(), and PropagationMatrix::StokesDimensions().

Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().

◆ get_stepwise_scattersky_source()

void get_stepwise_scattersky_source ( StokesVector Sp,
ArrayOfStokesVector dSp_dx,
const ArrayOfRetrievalQuantity jacobian_quantities,
ConstVectorView  ppath_1p_pnd,
const ArrayOfMatrix ppath_dpnd_dx,
const Index  ppath_1p_id,
const ArrayOfArrayOfSingleScatteringData scat_data,
ConstTensor7View  cloudbox_field,
ConstVectorView  za_grid,
ConstVectorView  aa_grid,
ConstMatrixView  ppath_line_of_sight,
const GridPos ppath_pressure,
const Vector temperature,
const Index atmosphere_dim,
const bool &  jacobian_do,
const Index t_interp_order = 1 
)

Calculates the stepwise scattering source terms.

Uses new, unified phase matrix extraction scheme.

Parameters
[in]SpOut: The scattering source term
[in]dSp_dxOut: The derivative of the scattering source term ...
Author
Jana Mendrok \adapted from non-stepwise function
Date
2018-03-29

Definition at line 1708 of file rte.cc.

References ARTS::Var::aa_grid(), AngIntegrate_trapezoid(), ARTS::Var::atmosphere_dim(), ARTS::Var::cloudbox_field(), FOR_ANALYTICAL_JACOBIANS_DO, gridpos_copy(), interp(), interpweights(), ARTS::Var::jacobian_do(), ARTS::Var::jacobian_quantities(), joker, ConstVectorView::nelem(), PropagationMatrix::NumberOfFrequencies(), pha_mat_1ScatElem(), ARTS::Var::scat_data(), StokesVector::SetAtPosition(), ARTS::Var::stokes_dim(), PropagationMatrix::StokesDimensions(), TotalNumberOfElements(), and ARTS::Var::za_grid().

Referenced by iyHybrid(), and iyHybrid2().

◆ get_stepwise_transmission_matrix()

void get_stepwise_transmission_matrix ( Tensor3View  cumulative_transmission,
Tensor3View  T,
Tensor4View  dT_dx_close,
Tensor4View  dT_dx_far,
ConstTensor3View  cumulative_transmission_close,
const PropagationMatrix K_close,
const PropagationMatrix K_far,
const ArrayOfPropagationMatrix dK_close_dx,
const ArrayOfPropagationMatrix dK_far_dx,
const Numeric ppath_distance,
const bool &  first_level,
const Numeric dr_dT_close = 0,
const Numeric dr_dT_far = 0,
const Index it = -1 
)

Computes layer transmission matrix and cumulative transmission.

FIXME: This function should be removed

Parameters
[in,out]cumulative_transmissionPresent accumulation of transmission for Jacobian computations
[in,out]TLayer transmission
[in,out]dT_close_dxLayer transmission derivative due to the close propagation path point
[in,out]dT_far_dxLayer transmission derivative due to the far propagation path point
[in]cumulative_transmission_closePast accumulation of transmission for Jacobian computations
[in]K_closeLevel propagation matrix due to the close propagation path point
[in]K_farLevel propagation matrix due to the far propagation path point
[in]dK_close_dxLevel propagation matrix derivatives due to the close propagation path point
[in]dK_far_dxLevel propagation matrix derivatives due to the far propagation path point
[in]ppath_distanceThickness of the layer
[in]first_levelBoolean for if this is the first level, i.e., there is no cumulative_transmission_close
[in]dr_dT_closeThickness of the layer derivative due to temperature of the close propagation path point
[in]dr_dT_farThickness of the layer derivative due to temperature of the far propagation path point
[in]itIndex to temperature derivatives
Author
Richard Larsson
Date
2017-09-21

Definition at line 1879 of file rte.cc.

References compute_transmission_matrix(), compute_transmission_matrix_and_derivative(), cumulative_transmission(), id_mat(), joker, mult(), ConstTensor3View::ncols(), Array< base >::nelem(), PropagationMatrix::NumberOfFrequencies(), and ARTS::Var::stokes_dim().

Referenced by iyHybrid().

◆ iy_transmission_mult() [1/2]

void iy_transmission_mult ( Matrix iy_new,
ConstTensor3View  iy_trans,
ConstMatrixView  iy_old 
)

Multiplicates iy_transmission with iy-variable.

The operation can be written as:

iy_new = T * iy_old

where T is the transmission corresponding to iy_transmission and iy_old is a variable matching iy.

iy_new* is sized by the function.

Parameters
[out]iy_newUpdated version of iy
[in]iy_transA variable matching iy_transmission.
[in]iy_oldA variable matching iy.
Author
Patrick Eriksson
Date
2018-04-10

Definition at line 2273 of file rte.cc.

References joker, mult(), ConstMatrixView::ncols(), ConstTensor3View::ncols(), ConstTensor3View::npages(), ConstMatrixView::nrows(), ConstTensor3View::nrows(), ns, and Matrix::resize().

◆ iy_transmission_mult() [2/2]

void iy_transmission_mult ( Tensor3 iy_trans_total,
ConstTensor3View  iy_trans_old,
ConstTensor3View  iy_trans_new 
)

Multiplicates iy_transmission with transmissions.

That is, a multiplication of iy_transmission with another variable having same structure and holding transmission values.

The "new path" is assumed to be further away from the sensor than the propagtion path already included in iy_transmission. That is, the operation can be written as:

Ttotal = Told * Tnew

where Told is the transmission corresponding to iy_transmission and Tnew corresponds to tau.

iy_trans_new* is sized by the function.

Parameters
[out]iy_trans_totalUpdated version of iy_transmission
[in]iy_trans_oldA variable matching iy_transmission.
[in]iy_trans_newA variable matching iy_transmission.
Author
Patrick Eriksson
Date
2009-10-06

Definition at line 2253 of file rte.cc.

References joker, mult(), ConstTensor3View::ncols(), ConstTensor3View::npages(), ConstTensor3View::nrows(), ns, and Tensor3::resize().

Referenced by iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), iySurfaceRtpropAgenda(), and iySurfaceRtpropCalc().

◆ iyb_calc()

void iyb_calc ( Workspace ws,
Vector iyb,
ArrayOfVector iyb_aux,
ArrayOfMatrix diyb_dx,
Matrix geo_pos_matrix,
const Index imblock,
const Index atmosphere_dim,
const EnergyLevelMap nlte_field,
const Index cloudbox_on,
const Index stokes_dim,
ConstVectorView  f_grid,
ConstMatrixView  sensor_pos,
ConstMatrixView  sensor_los,
ConstMatrixView  transmitter_pos,
ConstMatrixView  mblock_dlos_grid,
const String iy_unit,
const Agenda iy_main_agenda,
const Agenda geo_pos_agenda,
const Index j_analytical_do,
const ArrayOfRetrievalQuantity jacobian_quantities,
const ArrayOfArrayOfIndex jacobian_indices,
const ArrayOfString iy_aux_vars,
const Verbosity verbosity 
)

◆ iyb_calc_body()

void iyb_calc_body ( bool &  failed,
String fail_msg,
ArrayOfArrayOfMatrix iy_aux_array,
Workspace ws,
Ppath ppath,
Vector iyb,
ArrayOfMatrix diyb_dx,
const Index mblock_index,
const Index atmosphere_dim,
const EnergyLevelMap nlte_field,
const Index cloudbox_on,
const Index stokes_dim,
ConstMatrixView  sensor_pos,
ConstMatrixView  sensor_los,
ConstMatrixView  transmitter_pos,
ConstMatrixView  mblock_dlos_grid,
const String iy_unit,
const Agenda iy_main_agenda,
const Index j_analytical_do,
const ArrayOfRetrievalQuantity jacobian_quantities,
const ArrayOfArrayOfIndex jacobian_indices,
ConstVectorView  f_grid,
const ArrayOfString iy_aux_vars,
const Index ilos,
const Index nf 
)

◆ mirror_los()

void mirror_los ( Vector los_mirrored,
ConstVectorView  los,
const Index atmosphere_dim 
)

Determines the backward direction for a given line-of-sight.

This function can be used to get the LOS to apply for extracting single scattering properties, if the propagation path LOS is given.

A viewing direction of aa=0 is assumed for 1D. This corresponds to positive za for 2D.

Parameters
[out]los_mirroredThe line-of-sight for reversed direction.
[in]losA line-of-sight
[in]atmosphere_dimAs the WSV.
Author
Patrick Eriksson
Date
2011-07-15

Definition at line 2290 of file rte.cc.

References ARTS::Var::atmosphere_dim(), and Vector::resize().

Referenced by cloudy_rt_vars_at_gp(), defocusing_general(), dotprod_with_los(), get_stepwise_scattersky_propmat(), MCRadar(), propmat_clearskyAddParticles(), propmat_clearskyAddZeeman(), and Sample_los().

◆ pos2true_latlon()

void pos2true_latlon ( Numeric lat,
Numeric lon,
const Index atmosphere_dim,
ConstVectorView  lat_grid,
ConstVectorView  lat_true,
ConstVectorView  lon_true,
ConstVectorView  pos 
)

Determines the true alt and lon for an "ARTS position".

The function disentangles if the geographical position shall be taken from lat_grid and lon_grid, or lat_true and lon_true.

Parameters
[out]latTrue latitude.
[out]lonTrue longitude.
[in]atmosphere_dimAs the WSV.
[in]lat_gridAs the WSV.
[in]lat_trueAs the WSV.
[in]lon_trueAs the WSV.
[in]posA position, as defined for rt calculations.
Author
Patrick Eriksson
Date
2011-07-15

Definition at line 2314 of file rte.cc.

References ARTS::Var::atmosphere_dim(), gridpos(), interp(), interpweights(), ARTS::Var::lat(), ARTS::Var::lat_grid(), ARTS::Var::lat_true(), ARTS::Var::lon(), ARTS::Var::lon_true(), and ConstVectorView::nelem().

Referenced by InterpGriddedField2ToPosition(), surface_complex_refr_indexFromGriddedField5(), surface_reflectivityFromGriddedField6(), surface_scalar_reflectivityFromGriddedField4(), surface_typeInterpTypeMask(), surfaceTelsem(), and telsemSurfaceTypeLandSea().

◆ rtmethods_jacobian_finalisation()

void rtmethods_jacobian_finalisation ( Workspace ws,
ArrayOfTensor3 diy_dx,
ArrayOfTensor3 diy_dpath,
const Index ns,
const Index nf,
const Index np,
const Index atmosphere_dim,
const Ppath ppath,
const Vector ppvar_p,
const Vector ppvar_t,
const Matrix ppvar_vmr,
const Index iy_agenda_call1,
const Tensor3 iy_transmission,
const Agenda water_p_eq_agenda,
const ArrayOfRetrievalQuantity jacobian_quantities,
const ArrayOfIndex  jac_species_i,
const ArrayOfIndex  jac_is_t 
)

This function fixes the last steps to made on the Jacobian in some radiative transfer WSMs.

The method applies iy_transmission, maps from ppath to the retrieval grids and applies non-standard Jacobian units.

See iyEmissonStandard for usage example.

Author
Patrick Eriksson
Date
2017-11-19

Definition at line 2416 of file rte.cc.

References ARTS::Var::atmosphere_dim(), ARTS::Var::diy_dx(), diy_from_path_to_rgrids(), FOR_ANALYTICAL_JACOBIANS_DO, ARTS::Var::iy_agenda_call1(), ARTS::Var::iy_transmission(), ARTS::Var::jacobian_quantities(), joker, mult(), ConstTensor3View::npages(), ns, number_density(), pow(), ARTS::Var::ppath(), ARTS::Var::ppvar_p(), ARTS::Var::ppvar_t(), ARTS::Var::ppvar_vmr(), Matrix::resize(), transpose(), ARTS::Var::water_p_eq_agenda(), and water_p_eq_agendaExecute().

Referenced by iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().

◆ rtmethods_jacobian_init()

void rtmethods_jacobian_init ( ArrayOfIndex jac_species_i,
ArrayOfIndex jac_scat_i,
ArrayOfIndex jac_is_t,
ArrayOfIndex jac_wind_i,
ArrayOfIndex jac_mag_i,
ArrayOfIndex jac_other,
ArrayOfTensor3 diy_dx,
ArrayOfTensor3 diy_dpath,
const Index ns,
const Index nf,
const Index np,
const Index nq,
const ArrayOfArrayOfSpeciesTag abs_species,
const Index cloudbox_on,
const ArrayOfString scat_species,
const ArrayOfTensor4 dpnd_field_dx,
const ArrayOfRetrievalQuantity jacobian_quantities,
const Index iy_agenda_call1,
const bool  is_active = false 
)

◆ rtmethods_unit_conversion()

void rtmethods_unit_conversion ( Matrix iy,
ArrayOfTensor3 diy_dx,
Tensor3 ppvar_iy,
const Index ns,
const Index np,
const Vector f_grid,
const Ppath ppath,
const ArrayOfRetrievalQuantity jacobian_quantities,
const Index j_analytical_do,
const String iy_unit 
)

This function handles the unit conversion to be done at the end of some radiative transfer WSMs.

The method hanldes both iy and analytical parts of the Jacobian.

See iyEmissonStandard for usage example.

Author
Patrick Eriksson
Date
2017-11-19

Definition at line 2553 of file rte.cc.

References apply_iy_unit(), apply_iy_unit2(), ARTS::Var::diy_dx(), ARTS::Var::f_grid(), FOR_ANALYTICAL_JACOBIANS_DO2, ARTS::Var::iy(), ARTS::Var::iy_unit(), joker, ns, ARTS::Var::ppath(), and ARTS::Var::ppvar_iy().

Referenced by iyEmissionStandardSequential(), iyHybrid(), and iyHybrid2().

◆ yCalc_mblock_loop_body()

void yCalc_mblock_loop_body ( bool &  failed,
String fail_msg,
ArrayOfArrayOfVector iyb_aux_array,
Workspace ws,
Vector y,
Vector y_f,
ArrayOfIndex y_pol,
Matrix y_pos,
Matrix y_los,
Matrix y_geo,
Matrix jacobian,
const Index atmosphere_dim,
const EnergyLevelMap nlte_field,
const Index cloudbox_on,
const Index stokes_dim,
const Vector f_grid,
const Matrix sensor_pos,
const Matrix sensor_los,
const Matrix transmitter_pos,
const Matrix mblock_dlos_grid,
const Sparse sensor_response,
const Vector sensor_response_f,
const ArrayOfIndex sensor_response_pol,
const Matrix sensor_response_dlos,
const String iy_unit,
const Agenda iy_main_agenda,
const Agenda geo_pos_agenda,
const Agenda jacobian_agenda,
const Index jacobian_do,
const ArrayOfRetrievalQuantity jacobian_quantities,
const ArrayOfArrayOfIndex jacobian_indices,
const ArrayOfString iy_aux_vars,
const Verbosity verbosity,
const Index mblock_index,
const Index n1y,
const Index j_analytical_do 
)

◆ ze_cfac()

void ze_cfac ( Vector fac,
const Vector f_grid,
const Numeric ze_tref,
const Numeric k2 
)

Calculates factor to convert back-scattering to Ze.

The vector fac shall be sized to match f_grid, before calling the function.

If k2 <= 0, the K" factor is calculated. Otherwise the input k2 is applied as "hard-coded".

Parameters
[out]facVector with factors.
[in]f_gridAs the WSV.
[in]z_trefReference temperature for conversion to Ze.
[in]k2Reference dielectric factor.
Author
Patrick Eriksson
Date
2002-05-20

Definition at line 2736 of file rte.cc.

References abs, complex_n_water_liebe93(), ARTS::Var::f_grid(), fac(), PI, and SPEED_OF_LIGHT.

Referenced by MCRadar(), and yActive().

Variable Documentation

◆ PROPMAT_SUBSUBTAG

const String PROPMAT_SUBSUBTAG
extern

◆ SCATSPECIES_MAINTAG

const String SCATSPECIES_MAINTAG
extern

◆ SPEED_OF_LIGHT

◆ SURFACE_MAINTAG

const String SURFACE_MAINTAG
extern

Referenced by get_iy_of_background().

◆ TEMP_0_C

const Numeric TEMP_0_C
extern

◆ TEMPERATURE_MAINTAG

const String TEMPERATURE_MAINTAG
extern