ARTS
2.3.1285(git:92a29ea9-dirty)
|
Declaration of functions in rte.cc. More...
#include "agenda_class.h"
#include "arts.h"
#include "auto_md.h"
#include "complex.h"
#include "jacobian.h"
#include "matpackI.h"
#include "matpackII.h"
#include "matpackIII.h"
#include "optproperties.h"
#include "ppath.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 <e, 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 (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 | ext2trans (MatrixView trans_mat, Index &icase, ConstMatrixView ext_mat_av, const Numeric &l_step) |
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 &imblock) |
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 <e, 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 &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. 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=1) |
Calculates the stepwise scattering source terms. More... | |
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. More... | |
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) |
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=false) |
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... | |
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
[in,out] | dK_dx | Propagation matrix derivatives at propagation path point, adapted for wind and VMR units |
[in,out] | dS_dx | NLTE source adjustment derivatives at propagation path point, adapted for wind and VMR units |
[in] | jacobian_quantities | as WSV |
[in] | ppath_f_grid | Wind-adjusted frequency grid at propagation path point |
[in] | ppath_line_of_sight | Line of sight at propagation path point |
[in] | ppath_vmrs | Volume mixing ratio of atmospheric species at propagation path point |
[in] | ppath_temperature | Temperature of atmosphere at propagation path point |
[in] | ppath_pressure | Pressure of atmosphere at propagation path point |
[in] | jacobian_species | Index list showing where and how the Jacobian needs to compute VMRs |
[in] | jacobian_wind | Index list showing where and how the Jacobian needs to compute Wind |
[in] | lte | Boolean index for whether or not the atmosphere is in LTE at propagation path point |
[in] | atmosphere_dim | As WSV |
[in] | jacobian_do | As WSV |
Definition at line 59 of file rte.cc.
References AbsWind, dxdvmrscf(), get_stepwise_f_partials(), i, Array< base >::nelem(), PROPMAT_SUBSUBTAG, vmrunitscf(), WindFieldU, WindFieldV, and WindFieldW.
Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().
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.
[in,out] | los | LOS vector, defined as e.g. rte_los. |
[in] | atmosphere_dim | As the WSV. |
Definition at line 140 of file rte.cc.
References abs, cart2zaaa(), dx, and zaaa2cart().
Referenced by defocusing_general_sub(), defocusing_sat2sat(), iyb_calc_body(), raytrace_3d_linear_basic(), and surfaceSemiSpecularBy3beams().
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.
[in,out] | iy | Tensor3 with data to be converted, where column dimension corresponds to Stokes dimensionality and row dimension corresponds to frequency. |
[in] | iy_unit | As the WSV. |
[in] | f_grid | As the WSV. |
[in] | n | Refractive index at the observation position. |
[in] | i_pol | Polarisation indexes. See documentation of y_pol. |
Definition at line 163 of file rte.cc.
References invplanck(), invrayjean(), ConstMatrixView::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), ConstMatrixView::nrows(), ns, SPEED_OF_LIGHT, and _CS_basic_sstream_base< _CS_cT, _CS_Tr, _CS_Al >::str().
Referenced by rtmethods_unit_conversion().
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.
[in,out] | J | Tensor3 with data to be converted, where column dimension corresponds to Stokes dimensionality and row dimension corresponds to frequency. |
[in] | iy | Associated radiance data. |
[in] | iy_unit | As the WSV. |
[in] | f_grid | As the WSV. |
[in] | n | Refractive index at the observation position. |
[in] | i_pol | Polarisation indexes. See documentation of y_pol. |
Definition at line 238 of file rte.cc.
References dinvplanckdI(), invrayjean(), ConstTensor3View::ncols(), ConstMatrixView::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), ConstTensor3View::npages(), ConstTensor3View::nrows(), ConstMatrixView::nrows(), ns, SPEED_OF_LIGHT, and _CS_basic_sstream_base< _CS_cT, _CS_Tr, _CS_Al >::str().
Referenced by rtmethods_unit_conversion().
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, if this function only returns a numeric, have it defined as "Numeric bending_angle1d(ppath)" since this is better code.
[in] | ppath | Propagation path. |
Definition at line 327 of file rte.cc.
References abs, Ppath::dim, Ppath::end_los, Ppath::end_pos, sphdist(), Ppath::start_los, and Ppath::start_pos.
Referenced by defocusing_sat2sat().
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.
[in,out] | ws | The workspace. |
[out] | dlf | Defocusing loss factor (1 for no loss) |
[in] | ppath_step_agenda | As the WSV with the same name. |
[in] | atmosphere_dim | As the WSV with the same name. |
[in] | p_grid | As the WSV with the same name. |
[in] | lat_grid | As the WSV with the same name. |
[in] | lon_grid | As the WSV with the same name. |
[in] | z_field | As the WSV with the same name. |
[in] | f_grid | As the WSV with the same name. |
[in] | refellipsoid | As the WSV with the same name. |
[in] | z_surface | As the WSV with the same name. |
[in] | ppath | As the WSV with the same name. |
[in] | ppath_lmax | As the WSV with the same name. |
[in] | ppath_lraytrace | As the WSV with the same name. |
[in] | dza | Size of angular shift to apply. |
[in] | verbosity | As the WSV with the same name. |
Definition at line 494 of file rte.cc.
References defocusing_general_sub(), DEG2RAD, distance2D(), distance3D(), Ppath::end_lstep, Ppath::end_pos, i, l12, Ppath::lstep, max, mirror_los(), Ppath::np, Ppath::nreal, r, refell2r(), Ppath::start_los, Ppath::start_lstep, and Ppath::start_pos.
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.
[in,out] | ws | The workspace. |
[out] | dlf | Defocusing loss factor (1 for no loss) |
[in] | ppath_step_agenda | As the WSV with the same name. |
[in] | atmosphere_dim | As the WSV with the same name. |
[in] | p_grid | As the WSV with the same name. |
[in] | lat_grid | As the WSV with the same name. |
[in] | lon_grid | As the WSV with the same name. |
[in] | z_field | As the WSV with the same name. |
[in] | f_grid | As the WSV with the same name. |
[in] | refellipsoid | As the WSV with the same name. |
[in] | z_surface | As the WSV with the same name. |
[in] | ppath | As the WSV with the same name. |
[in] | ppath_lmax | As the WSV with the same name. |
[in] | ppath_lraytrace | As the WSV with the same name. |
[in] | dza | Size of angular shift to apply. |
[in] | verbosity | As the WSV with the same name. |
Definition at line 613 of file rte.cc.
References a1, a2, adjust_los(), bending_angle1d(), Ppath::constant, DEG2RAD, Ppath::end_los, Ppath::end_lstep, Ppath::end_pos, find_tanpoint(), i, Ppath::lstep, Ppath::np, ppath_calc(), ppath_what_background(), Ppath::start_los, and Ppath::start_lstep.
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.
[in] | los | Pppath line-of-sight. |
[in] | u | U-component of field. |
[in] | v | V-component of field. |
[in] | w | W-component of field. |
[in] | atmosphere_dim | As the WSV. |
Definition at line 730 of file rte.cc.
References DEG2RAD, mirror_los(), and sqrt().
Referenced by get_ppath_f(), get_stepwise_f_partials(), get_stepwise_frequency_grid(), and propmat_clearskyAddFaraday().
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:
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.
[out] | trans_mat | Transmission matrix of slab. |
[out] | icase | Index giving ext_mat case. |
[in] | ext_mat | Averaged extinction matrix. |
[in] | lstep | The length of the RTE step. |
Definition at line 800 of file rte.cc.
References cayley_hamilton_fitted_method_4x4_propmat_to_transmat__eigen(), ext_mat_case(), i, is_singular(), matrix_exp(), ConstMatrixView::ncols(), ConstMatrixView::nrows(), and q.
Referenced by get_ppath_transmat(), main(), and mcPathTraceRadar().
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.
[in,out] | ws | The workspace |
[out] | iy | As the WSV. |
[in] | cloudbox_on | As the WSV. |
[in] | f_grid | As the WSV. |
[in] | nlte_field | As the WSV. |
[in] | rte_pos | As the WSV. |
[in] | rte_los | As the WSV. |
[in] | iy_unit | As the WSV. |
[in] | iy_main_agenda | As the WSV. |
Definition at line 877 of file rte.cc.
References iy_main_agendaExecute().
Referenced by DoitGetIncoming(), and DoitGetIncoming1DAtm().
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.
[in,out] | ws | The workspace |
[out] | iy | As the WSV. |
[out] | diy_dx | As the WSV. |
[in] | iy_transmission | As the WSV. |
[in] | jacobian_do | As the WSV. |
[in] | ppath | As the WSV. |
[in] | atmosphere_dim | As the WSV. |
[in] | cloudbox_on | As the WSV. |
[in] | stokes_dim | As the WSV. |
[in] | f_grid | As the WSV. |
[in] | iy_unit | As the WSV. |
[in] | surface_props_data | As the WSV. |
[in] | iy_main_agenda | As the WSV. |
[in] | iy_space_agenda | As the WSV. |
[in] | iy_surface_agenda | As the WSV. |
[in] | iy_cloudbox_agenda | As the WSV. |
Definition at line 916 of file rte.cc.
References Ppath::background, chk_not_empty(), CREATE_OUT3, i, iy_cloudbox_agendaExecute(), iy_space_agendaExecute(), iy_surface_agendaExecute(), joker, Ppath::los, ConstMatrixView::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), Ppath::np, ConstMatrixView::nrows(), Ppath::pos, ppath_what_background(), Vector::resize(), _CS_basic_sstream_base< _CS_cT, _CS_Tr, _CS_Al >::str(), and SURFACE_MAINTAG.
Referenced by emission_from_propmat_field(), iyEmissionStandardSequential(), iyHybrid(), and iyHybrid2().
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 ].
[out] | ppath_p | Pressure for each ppath point. |
[out] | ppath_t | Temperature for each ppath point. |
[out] | ppath_vmr | VMR values for each ppath point. |
[out] | ppath_wind | Wind vector for each ppath point. |
[out] | ppath_mag | Mag. field vector for each ppath point. |
[in] | ppath | As the WSV. |
[in] | atmosphere_dim | As the WSV. |
[in] | p_grid | As the WSV. |
[in] | lat_grid | As the WSV. |
[in] | lon_grid | As the WSV. |
[in] | t_field | As the WSV. |
[in] | vmr_field | As the WSV. |
[in] | wind_u_field | As the WSV. |
[in] | wind_v_field | As the WSV. |
[in] | wind_w_field | As the WSV. |
[in] | mag_u_field | As the WSV. |
[in] | mag_v_field | As the WSV. |
[in] | mag_w_field | As the WSV. |
Definition at line 1034 of file rte.cc.
References Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, interp_atmfield_by_itw(), interp_atmfield_gp2itw(), EnergyLevelMap::InterpToGridPos(), interpweights(), itw2p(), joker, ConstTensor4View::nbooks(), Ppath::np, ConstTensor3View::npages(), ns, Vector::resize(), and Matrix::resize().
Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().
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.
[out] | clear2cloudy | Mapping of index. See code for details. |
[out] | ppath_pnd | The particle number density for each path point (also outside cloudbox). |
[out] | ppath_dpnd_dx | dpnd_field_dx for each path point (also outside cloudbox). |
[in] | ppath | As the WSV. |
[in] | cloubox_limits | As the WSV. |
[in] | pnd_field | As the WSV. |
[in] | dpnd_field_dx | As the WSV. |
Definition at line 1153 of file rte.cc.
References Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, gridpos_copy(), i, interp_atmfield_by_itw(), interp_cloudfield_gp2itw(), is_gp_inside_cloudbox(), joker, max, min, ConstTensor4View::nbooks(), Array< base >::nelem(), Ppath::np, pow(), and Matrix::resize().
Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().
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]
[out] | ppath_f | Doppler shifted f_grid |
[in] | ppath | Propagation path. |
[in] | f_grid | Original f_grid. |
[in] | atmosphere_dim | As the WSV. |
[in] | rte_alonglos_v | As the WSV. |
[in] | ppath_wind | See get_ppath_atmvars. |
Definition at line 1257 of file rte.cc.
References dotprod_with_los(), joker, Ppath::los, ConstVectorView::nelem(), Ppath::np, Matrix::resize(), and SPEED_OF_LIGHT.
Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().
Returns the "range" of y corresponding to a measurement block.
[in] | sensor_response | As the WSV. |
[in] | mblock_index | Index of the measurement block. |
Definition at line 1301 of file rte.cc.
References Sparse::nrows().
Referenced by jacobianCalcFreqShift(), jacobianCalcFreqStretch(), jacobianCalcPointingZaInterp(), jacobianCalcPointingZaRecalc(), jacobianCalcPolyfit(), yCalc(), and yCalc_mblock_loop_body().
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.
[in,out] | B | Blackbody radiation at propagation path point |
[in,out] | dB_dT | Blackbody radiation temperature derivative at propagation path point |
[in] | ppath_f_grid | Wind-adjusted frequency grid at propagation path point |
[in] | ppath_temperature | Temperature of atmosphere at propagation path point |
[in] | do_temperature_derivative | Fill dB_dT? |
Definition at line 1307 of file rte.cc.
References dplanck_dt(), i, ConstVectorView::nelem(), and planck().
Referenced by emission_from_propmat_field(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), and iyHybrid2().
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
[in] | ws | The workspace |
[in,out] | K | Propagation matrix at propagation path point |
[in,out] | S | NLTE source adjustment at propagation path point |
[in,out] | lte | Boolean index for whether or not the atmosphere is in LTE at propagation path point |
[in,out] | dK_dx | Propagation matrix derivatives at propagation path point |
[in,out] | dS_dx | NLTE source adjustment derivatives at propagation path point |
[in] | propmat_clearsky_agenda | As WSA |
[in] | jacobian_quantities | As WSV |
[in] | ppath_f_grid | Wind-adjusted frequency grid at propagation path point |
[in] | ppath_mag_field | Magnetic field at propagation path point |
[in] | ppath_line_of_sight | Line of sight at propagation path point |
[in] | ppath_nlte | NLTE distribution at propagation path point |
[in] | ppath_vmrs | Volume mixing ratio of atmospheric species at propagation path point |
[in] | ppath_temperature | Temperature of atmosphere at propagation path point |
[in] | ppath_pressure | Pressure of atmosphere at propagation path point |
[in] | jacobian_species | Index list showing where and how the Jacobian needs to compute VMRs |
[in] | jacobian_do | As WSV |
Definition at line 1322 of file rte.cc.
References equivalent_propmattype_index(), i, Array< base >::nelem(), propmat_clearsky_agendaExecute(), PropagationMatrix::SetZero(), and _CS_basic_sstream_base< _CS_cT, _CS_Tr, _CS_Al >::str().
Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().
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
[in,out] | J | Source term for RTE at propagation path point |
[in,out] | dJ_dx | Source term derivative for RTE at propagation path point |
[in] | K | Propagation matrix, clearsky+scattersky, at propagation path point |
[in] | a | Absorption vector, clearsky+scattersky, at propagation path point |
[in] | S | NLTE source adjustment, clearsky+scattersky, at propagation path point |
[in] | dK_dx | Propagation matrix derivatives, clearsky+scattersky, at propagation path point |
[in] | da_dx | Absorption vector derivatives, clearsky+scattersky, at propagation path point |
[in] | dS_dx | NLTE source adjustment derivatives, clearsky+scattersky, at propagation path point |
[in] | B | Blackbody radiation at propagation path point |
[in] | dB_dT | Blackbody radiation temperature derivative at propagation path point |
[in] | jacobian_quantities | As WSV |
[in] | jacobian_do | As WSV |
Definition at line 1427 of file rte.cc.
References PropagationMatrix::IsEmpty(), PropagationMatrix::IsRotational(), joker, PropagationMatrix::MatrixInverseAtPosition(), mult(), Array< base >::nelem(), ns, PropagationMatrix::NumberOfFrequencies(), PropagationMatrix::StokesDimensions(), TEMPERATURE_MAINTAG, and StokesVector::VectorAtPosition().
Referenced by iyHybrid().
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.
[in,out] | ppath_f_grid | Wind-adjusted frequency grid wind derivative at propagation path point |
[in] | component | The wind component [0 is full, 1 is u, 2 is v, 3 is w, rest are undefined] |
[in] | ppath_line_of_sight | Line of sight at propagation path point |
[in] | f_grid | As WSV |
[in] | atmosphere_dim | As WSV |
Definition at line 1541 of file rte.cc.
References dotprod_with_los(), ConstVectorView::nelem(), Vector::resize(), and SPEED_OF_LIGHT.
Referenced by adapt_stepwise_partial_derivatives().
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
[in,out] | ppath_f_grid | Wind-adjusted frequency grid at propagation path point |
[in] | f_grid | As WSV |
[in] | ppath_wind | Wind vector at propagation path point |
[in] | ppath_line_of_sight | Line of sight at propagation path point |
[in] | rte_alonglos_v | As WSV |
[in] | atmosphere_dim | As WSV |
Definition at line 1521 of file rte.cc.
References dotprod_with_los(), and SPEED_OF_LIGHT.
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.
[in,out] | ap | Absorption vector scattersky at propagation path point |
[in,out] | Kp | Propagation matrix scattersky at propagation path point |
[in,out] | dap_dx | Absorption vector scattersky derivatives at propagation path point |
[in,out] | dKp_dx | Propagation matrix scattersky derivatives at propagation path point |
[in] | jacobian_quantities | As WSV |
[in] | ppath_1p_pnd | Particulate number density at propagation path point |
[in] | scat_data | As WSV |
[in] | ppath_line_of_sight | Line of sight at propagation path point |
[in] | ppath_temperature | Temperature at propagation path point |
[in] | atmosphere_dim | As WSV |
[in] | jacobian_do | As WSV |
Definition at line 1591 of file rte.cc.
References FOR_ANALYTICAL_JACOBIANS_DO, joker, mirror_los(), ConstTensor4View::nbooks(), PropagationMatrix::NumberOfFrequencies(), opt_prop_Bulk(), opt_prop_NScatElems(), opt_prop_ScatSpecBulk(), PropagationMatrix::SetAtPosition(), StokesVector::SetAtPosition(), and PropagationMatrix::StokesDimensions().
Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().
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.
[in] | Sp | Out: The scattering source term |
[in] | dSp_dx | Out: The derivative of the scattering source term ... |
Definition at line 1708 of file rte.cc.
References AngIntegrate_trapezoid(), FOR_ANALYTICAL_JACOBIANS_DO, gridpos_copy(), i, interp(), interpweights(), joker, Array< base >::nelem(), ConstVectorView::nelem(), PropagationMatrix::NumberOfFrequencies(), pha_mat_1ScatElem(), StokesVector::SetAtPosition(), PropagationMatrix::StokesDimensions(), _CS_basic_sstream_base< _CS_cT, _CS_Tr, _CS_Al >::str(), and TotalNumberOfElements().
Referenced by iyHybrid(), and iyHybrid2().
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
[in,out] | cumulative_transmission | Present accumulation of transmission for Jacobian computations |
[in,out] | T | Layer transmission |
[in,out] | dT_close_dx | Layer transmission derivative due to the close propagation path point |
[in,out] | dT_far_dx | Layer transmission derivative due to the far propagation path point |
[in] | cumulative_transmission_close | Past accumulation of transmission for Jacobian computations |
[in] | K_close | Level propagation matrix due to the close propagation path point |
[in] | K_far | Level propagation matrix due to the far propagation path point |
[in] | dK_close_dx | Level propagation matrix derivatives due to the close propagation path point |
[in] | dK_far_dx | Level propagation matrix derivatives due to the far propagation path point |
[in] | ppath_distance | Thickness of the layer |
[in] | first_level | Boolean for if this is the first level, i.e., there is no cumulative_transmission_close |
[in] | dr_dT_close | Thickness of the layer derivative due to temperature of the close propagation path point |
[in] | dr_dT_far | Thickness of the layer derivative due to temperature of the far propagation path point |
[in] | it | Index to temperature derivatives |
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(), and PropagationMatrix::NumberOfFrequencies().
Referenced by iyHybrid().
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.
[out] | iy_trans_total | Updated version of iy_transmission |
[in] | iy_trans_old | A variable matching iy_transmission. |
[in] | iy_trans_new | A variable matching iy_transmission. |
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().
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.
[out] | iy_new | Updated version of iy |
[in] | iy_trans | A variable matching iy_transmission. |
[in] | iy_old | A variable matching iy. |
Definition at line 2273 of file rte.cc.
References joker, mult(), ConstTensor3View::ncols(), ConstMatrixView::ncols(), ConstTensor3View::npages(), ConstTensor3View::nrows(), ConstMatrixView::nrows(), ns, and Matrix::resize().
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 | ||
) |
Performs calculations for one measurement block, on iy-level.
FIXMEDOC This function lacks all documentation
The parameters mainly matches WSVs.
Definition at line 2051 of file rte.cc.
References arts_omp_get_max_threads(), CREATE_OUT3, FOR_ANALYTICAL_JACOBIANS_DO2, geo_pos_agendaExecute(), iyb_calc_body(), joker, Array< base >::nelem(), ConstVectorView::nelem(), ConstMatrixView::nrows(), Vector::resize(), and Matrix::resize().
Referenced by jacobianCalcPointingZaRecalc(), and yCalc_mblock_loop_body().
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.
[out] | los_mirrored | The line-of-sight for reversed direction. |
[in] | los | A line-of-sight |
[in] | atmosphere_dim | As the WSV. |
Definition at line 2290 of file rte.cc.
References 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().
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.
[out] | lat | True latitude. |
[out] | lon | True longitude. |
[in] | atmosphere_dim | As the WSV. |
[in] | lat_grid | As the WSV. |
[in] | lat_true | As the WSV. |
[in] | lon_true | As the WSV. |
[in] | pos | A position, as defined for rt calculations. |
Definition at line 2314 of file rte.cc.
References gridpos(), interp(), interpweights(), and ConstVectorView::nelem().
Referenced by InterpGriddedField2ToPosition(), surface_complex_refr_indexFromGriddedField5(), surface_reflectivityFromGriddedField6(), surface_scalar_reflectivityFromGriddedField4(), surface_typeInterpTypeMask(), surfaceTelsem(), and telsemSurfaceTypeLandSea().
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.
Definition at line 2416 of file rte.cc.
References diy_from_path_to_rgrids(), FOR_ANALYTICAL_JACOBIANS_DO, joker, mult(), Array< base >::nelem(), ConstVectorView::nelem(), None, number_density(), pow(), Matrix::resize(), transpose(), and water_p_eq_agendaExecute().
Referenced by iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().
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 |
||
) |
This function fixes the initial steps around Jacobian calculations, to be done inside radiative transfer WSMs.
See iyEmissonStandard for usage example.
Definition at line 2348 of file rte.cc.
References FOR_ANALYTICAL_JACOBIANS_DO, FOR_ANALYTICAL_JACOBIANS_DO2, get_pointers_for_analytical_jacobians(), jac_ranges_indices(), None, NotPropagationMatrixType, and Other.
Referenced by iyActiveSingleScat(), iyActiveSingleScat2(), iyEmissionStandard(), iyEmissionStandardSequential(), iyHybrid(), iyHybrid2(), and iyTransmissionStandard().
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.
Definition at line 2553 of file rte.cc.
References apply_iy_unit(), apply_iy_unit2(), Ppath::end_lstep, FOR_ANALYTICAL_JACOBIANS_DO2, joker, n, Ppath::np, Ppath::nreal, and ns.
Referenced by iyEmissionStandardSequential(), iyHybrid(), and iyHybrid2().
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.
The parameters mainly matches WSVs.
Definition at line 2595 of file rte.cc.
References FOR_ANALYTICAL_JACOBIANS_DO2, get_rowindex_for_mblock(), Range::get_start(), i, iyb_calc(), jacobian_agendaExecute(), joker, mult(), Sparse::ncols(), ConstMatrixView::ncols(), and ConstVectorView::nelem().
Referenced by yCalc().
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".
[out] | fac | Vector with factors. |
[in] | f_grid | As the WSV. |
[in] | z_tref | Reference temperature for conversion to Ze. |
[in] | k2 | Reference dielectric factor. |
Definition at line 2736 of file rte.cc.
References abs, complex_n_water_liebe93(), n, ConstVectorView::nelem(), PI, and SPEED_OF_LIGHT.