ARTS
2.4.0(git:4fb77825)
|
Workspace methods for solving clear sky radiative transfer. More...
#include <cmath>
#include <stdexcept>
#include "arts.h"
#include "arts_omp.h"
#include "auto_md.h"
#include "check_input.h"
#include "geodetic.h"
#include "jacobian.h"
#include "logic.h"
#include "math_funcs.h"
#include "messages.h"
#include "montecarlo.h"
#include "physics_funcs.h"
#include "ppath.h"
#include "rte.h"
#include "special_interp.h"
#include "transmissionmatrix.h"
Go to the source code of this file.
Functions | |
void | iyApplyUnit (Matrix &iy, ArrayOfMatrix &iy_aux, const Index &stokes_dim, const Vector &f_grid, const ArrayOfString &iy_aux_vars, const String &iy_unit, const Verbosity &) |
WORKSPACE METHOD: iyApplyUnit. More... | |
void | iyCalc (Workspace &ws, Matrix &iy, ArrayOfMatrix &iy_aux, Ppath &ppath, const Index &atmfields_checked, const Index &atmgeom_checked, const ArrayOfString &iy_aux_vars, const Index &iy_id, const Index &cloudbox_on, const Index &cloudbox_checked, const Index &scat_data_checked, const Vector &f_grid, const EnergyLevelMap &nlte_field, const Vector &rte_pos, const Vector &rte_los, const Vector &rte_pos2, const String &iy_unit, const Agenda &iy_main_agenda, const Verbosity &) |
WORKSPACE METHOD: iyCalc. More... | |
void | iyEmissionStandardSequential (Workspace &ws, Matrix &iy, ArrayOfMatrix &iy_aux, ArrayOfTensor3 &diy_dx, Vector &ppvar_p, Vector &ppvar_t, EnergyLevelMap &ppvar_nlte, Matrix &ppvar_vmr, Matrix &ppvar_wind, Matrix &ppvar_mag, Matrix &ppvar_f, Tensor3 &ppvar_iy, Tensor4 &ppvar_trans_cumulat, Tensor4 &ppvar_trans_partial, const Index &iy_id, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &p_grid, const Tensor3 &t_field, const EnergyLevelMap &nlte_field, const Tensor4 &vmr_field, const ArrayOfArrayOfSpeciesTag &abs_species, const Tensor3 &wind_u_field, const Tensor3 &wind_v_field, const Tensor3 &wind_w_field, const Tensor3 &mag_u_field, const Tensor3 &mag_v_field, const Tensor3 &mag_w_field, const Index &cloudbox_on, const String &iy_unit, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const Ppath &ppath, const Vector &rte_pos2, const Agenda &propmat_clearsky_agenda, const Agenda &water_p_eq_agenda, 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 Tensor3 &iy_transmission, const Numeric &rte_alonglos_v, const Tensor3 &surface_props_data, const Verbosity &verbosity) |
WORKSPACE METHOD: iyEmissionStandardSequential. More... | |
void | iyEmissionStandard (Workspace &ws, Matrix &iy, ArrayOfMatrix &iy_aux, ArrayOfTensor3 &diy_dx, Vector &ppvar_p, Vector &ppvar_t, EnergyLevelMap &ppvar_nlte, Matrix &ppvar_vmr, Matrix &ppvar_wind, Matrix &ppvar_mag, Matrix &ppvar_f, Tensor3 &ppvar_iy, Tensor4 &ppvar_trans_cumulat, Tensor4 &ppvar_trans_partial, const Index &iy_id, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &p_grid, const Tensor3 &t_field, const EnergyLevelMap &nlte_field, const Tensor4 &vmr_field, const ArrayOfArrayOfSpeciesTag &abs_species, const Tensor3 &wind_u_field, const Tensor3 &wind_v_field, const Tensor3 &wind_w_field, const Tensor3 &mag_u_field, const Tensor3 &mag_v_field, const Tensor3 &mag_w_field, const Index &cloudbox_on, const String &iy_unit, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const Ppath &ppath, const Vector &rte_pos2, const Agenda &propmat_clearsky_agenda, const Agenda &water_p_eq_agenda, 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 Tensor3 &iy_transmission, const Numeric &rte_alonglos_v, const Tensor3 &surface_props_data, const Verbosity &verbosity) |
WORKSPACE METHOD: iyEmissionStandard. More... | |
void | iyIndependentBeamApproximation (Workspace &ws, Matrix &iy, ArrayOfMatrix &iy_aux, Ppath &ppath, ArrayOfTensor3 &diy_dx, GriddedField4 &atm_fields_compact, const Index &iy_id, const Vector &f_grid, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Vector &lat_true, const Vector &lon_true, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const EnergyLevelMap &nlte_field, const Tensor3 &wind_u_field, const Tensor3 &wind_v_field, const Tensor3 &wind_w_field, const Tensor3 &mag_u_field, const Tensor3 &mag_v_field, const Tensor3 &mag_w_field, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const Matrix &particle_masses, const Agenda &ppath_agenda, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, const Index &iy_agenda_call1, const String &iy_unit, const Tensor3 &iy_transmission, const Vector &rte_pos, const Vector &rte_los, const Vector &rte_pos2, const Index &jacobian_do, const ArrayOfString &iy_aux_vars, const Agenda &iy_independent_beam_approx_agenda, const Index &return_atm1d, const Index &skip_vmr, const Index &skip_pnd, const Index &return_masses, const Verbosity &) |
WORKSPACE METHOD: iyIndependentBeamApproximation. More... | |
void | iyLoopFrequencies (Workspace &ws, Matrix &iy, ArrayOfMatrix &iy_aux, Ppath &ppath, ArrayOfTensor3 &diy_dx, const ArrayOfString &iy_aux_vars, const Index &iy_agenda_call1, const Tensor3 &iy_transmission, const Vector &rte_pos, const Vector &rte_los, const Vector &rte_pos2, const Index &stokes_dim, const Vector &f_grid, const Agenda &iy_loop_freqs_agenda, const Verbosity &) |
WORKSPACE METHOD: iyLoopFrequencies. More... | |
void | iyMC (Workspace &ws, Matrix &iy, ArrayOfMatrix &iy_aux, ArrayOfTensor3 &diy_dx, const Index &iy_agenda_call1, const Tensor3 &iy_transmission, const Vector &rte_pos, const Vector &rte_los, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Tensor3 &t_field, const Tensor4 &vmr_field, const Vector &refellipsoid, const Matrix &z_surface, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Index &stokes_dim, const Vector &f_grid, const ArrayOfArrayOfSingleScatteringData &scat_data, const Agenda &iy_space_agenda, const Agenda &surface_rtprop_agenda, const Agenda &propmat_clearsky_agenda, const Agenda &ppath_step_agenda, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, const Tensor4 &pnd_field, const String &iy_unit, const Numeric &mc_std_err, const Index &mc_max_time, const Index &mc_max_iter, const Index &mc_min_iter, const Numeric &mc_taustep_limit, const Index &t_interp_order, const Verbosity &verbosity) |
WORKSPACE METHOD: iyMC. More... | |
void | iyReplaceFromAux (Matrix &iy, const ArrayOfMatrix &iy_aux, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const String &aux_var, const Verbosity &) |
WORKSPACE METHOD: iyReplaceFromAux. More... | |
void | ppvar_optical_depthFromPpvar_trans_cumulat (Matrix &ppvar_optical_depth, const Tensor4 &ppvar_trans_cumulat, const Verbosity &) |
WORKSPACE METHOD: ppvar_optical_depthFromPpvar_trans_cumulat. More... | |
void | yCalc (Workspace &ws, Vector &y, Vector &y_f, ArrayOfIndex &y_pol, Matrix &y_pos, Matrix &y_los, ArrayOfVector &y_aux, Matrix &y_geo, Matrix &jacobian, const Index &atmgeom_checked, const Index &atmfields_checked, const Index &atmosphere_dim, const EnergyLevelMap &nlte_field, const Index &cloudbox_on, const Index &cloudbox_checked, const Index &scat_data_checked, const Index &sensor_checked, 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 ArrayOfString &iy_aux_vars, const Verbosity &verbosity) |
WORKSPACE METHOD: yCalc. More... | |
void | yCalcAppend (Workspace &ws, Vector &y, Vector &y_f, ArrayOfIndex &y_pol, Matrix &y_pos, Matrix &y_los, ArrayOfVector &y_aux, Matrix &y_geo, Matrix &jacobian, ArrayOfRetrievalQuantity &jacobian_quantities, const Index &atmfields_checked, const Index &atmgeom_checked, const Index &atmosphere_dim, const EnergyLevelMap &nlte_field, const Index &cloudbox_on, const Index &cloudbox_checked, const Index &scat_data_checked, const Index &sensor_checked, 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 ArrayOfString &iy_aux_vars, const ArrayOfRetrievalQuantity &jacobian_quantities_copy, const Index &append_instrument_wfs, const Verbosity &verbosity) |
WORKSPACE METHOD: yCalcAppend. More... | |
void | yApplyUnit (Vector &y, Matrix &jacobian, const Vector &y_f, const ArrayOfIndex &y_pol, const String &iy_unit, const Verbosity &) |
WORKSPACE METHOD: yApplyUnit. More... | |
Variables | |
const Numeric | PI |
const Numeric | SPEED_OF_LIGHT |
const String | ABSSPECIES_MAINTAG |
const String | SURFACE_MAINTAG |
const String | SCATSPECIES_MAINTAG |
const String | TEMPERATURE_MAINTAG |
const String | WIND_MAINTAG |
const Index | GFIELD4_FIELD_NAMES |
const Index | GFIELD4_P_GRID |
const Index | GFIELD4_LAT_GRID |
const Index | GFIELD4_LON_GRID |
Workspace methods for solving clear sky radiative transfer.
Definition in file m_rte.cc.
void iyApplyUnit | ( | Matrix & | iy, |
ArrayOfMatrix & | iy_aux, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const ArrayOfString & | iy_aux_vars, | ||
const String & | iy_unit, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iyApplyUnit.
Conversion of iy to other spectral units.
The method allows a change of unit, as a post-processing step, ignoring the n2-law of radiance.
The conversion made inside iyEmissionStandard is mimiced, see that method for constraints and selection of output units. Restricted to that the n2-law can be ignored. This assumption is valid if the sensor is placed in space, or if the refractive index only deviates slightly from unity.
It is stressed that there is no automatic check that the method is applied correctly, it is up to the user to ensure that the input data are suitable for the conversion.
Beside iy, these auxilary quantities are modified: <br> "iy", "Error" and "Error (uncorrelated)"
Please note that diy_dx is not handled.
[in,out] | iy | WS Input/Output |
[in,out] | iy_aux | WS Input/Output |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | iy_aux_vars | WS Input |
[in] | iy_unit | WS Input |
Definition at line 67 of file m_rte.cc.
References ARTS::Var::iy(), ARTS::Var::iy_unit(), joker, and max.
Referenced by iyApplyUnit_g().
void iyCalc | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfMatrix & | iy_aux, | ||
Ppath & | ppath, | ||
const Index & | atmgeom_checked, | ||
const Index & | atmfields_checked, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Index & | iy_id, | ||
const Index & | cloudbox_on, | ||
const Index & | cloudbox_checked, | ||
const Index & | scat_data_checked, | ||
const Vector & | f_grid, | ||
const EnergyLevelMap & | nlte_field, | ||
const Vector & | rte_pos, | ||
const Vector & | rte_los, | ||
const Vector & | rte_pos2, | ||
const String & | iy_unit, | ||
const Agenda & | iy_main_agenda, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iyCalc.
A single monochromatic pencil beam calculation.
Performs monochromatic radiative transfer calculations for the specified position (rte_pos) and line-of-sight (rte_pos). See iy and associated variables for format of output.
Please note that Jacobian type calculations not are supported. For this use yCalc.
No sensor characteristics are applied. These are most easily incorporated by using yCalc
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[out] | iy_aux | WS Output |
[out] | ppath | WS Output |
[in] | atmgeom_checked | WS Input |
[in] | atmfields_checked | WS Input |
[in] | iy_aux_vars | WS Input |
[in] | iy_id | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_checked | WS Input |
[in] | scat_data_checked | WS Input |
[in] | f_grid | WS Input |
[in] | nlte_field | WS Input |
[in] | rte_pos | WS Input |
[in] | rte_los | WS Input |
[in] | rte_pos2 | WS Input |
[in] | iy_unit | WS Input |
[in] | iy_main_agenda | WS Input |
Definition at line 102 of file m_rte.cc.
References ARTS::Var::atmfields_checked(), ARTS::Var::atmgeom_checked(), ARTS::Var::cloudbox_checked(), ARTS::Var::cloudbox_on(), ARTS::Var::diy_dx(), ARTS::Var::f_grid(), ARTS::Var::iy(), 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::nlte_field(), ARTS::Var::ppath(), ARTS::Var::rte_los(), ARTS::Var::rte_pos(), ARTS::Var::rte_pos2(), and ARTS::Var::scat_data_checked().
Referenced by iyCalc_g().
void iyEmissionStandard | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfMatrix & | iy_aux, | ||
ArrayOfTensor3 & | diy_dx, | ||
Vector & | ppvar_p, | ||
Vector & | ppvar_t, | ||
EnergyLevelMap & | ppvar_nlte, | ||
Matrix & | ppvar_vmr, | ||
Matrix & | ppvar_wind, | ||
Matrix & | ppvar_mag, | ||
Matrix & | ppvar_f, | ||
Tensor3 & | ppvar_iy, | ||
Tensor4 & | ppvar_trans_cumulat, | ||
Tensor4 & | ppvar_trans_partial, | ||
const Index & | iy_id, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Index & | atmosphere_dim, | ||
const Vector & | p_grid, | ||
const Tensor3 & | t_field, | ||
const EnergyLevelMap & | nlte_field, | ||
const Tensor4 & | vmr_field, | ||
const ArrayOfArrayOfSpeciesTag & | abs_species, | ||
const Tensor3 & | wind_u_field, | ||
const Tensor3 & | wind_v_field, | ||
const Tensor3 & | wind_w_field, | ||
const Tensor3 & | mag_u_field, | ||
const Tensor3 & | mag_v_field, | ||
const Tensor3 & | mag_w_field, | ||
const Index & | cloudbox_on, | ||
const String & | iy_unit, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Index & | jacobian_do, | ||
const ArrayOfRetrievalQuantity & | jacobian_quantities, | ||
const Ppath & | ppath, | ||
const Vector & | rte_pos2, | ||
const Agenda & | propmat_clearsky_agenda, | ||
const Agenda & | water_p_eq_agenda, | ||
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 Tensor3 & | iy_transmission, | ||
const Numeric & | rte_alonglos_v, | ||
const Tensor3 & | surface_props_data, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iyEmissionStandard.
Standard method for radiative transfer calculations with emission.
Designed to be part of iy_main_agenda. That is, only valid outside the cloudbox (no scattering). For details se the user guide.
The possible choices for iy_unit are <br> "1" : No conversion, i.e. [W/(m^2 Hz sr)] (radiance per <br> frequency unit). <br> "RJBT" : Conversion to Rayleigh-Jean brightness <br> temperature. <br> "PlanckBT" : Conversion to Planck brightness temperature. <br> "W/(m^2 m sr)" : Conversion to [W/(m^2 m sr)] (radiance per <br> wavelength unit). <br> "W/(m^2 m-1 sr)": Conversion to [W/(m^2 m-1 sr)] (radiance per <br> wavenumber unit). Expressions applied and considerations for the unit conversion of radiances are discussed in Sec. 5.7 of the ARTS-2.0 article.
iy_unit* is only applied if iy_agenda_call1 is 1. This means that no unit ocnversion is applied for internal iterative calls.
Some auxiliary radiative transfer quantities can be obtained. Auxiliary quantities are selected by iy_aux_vars and returned by iy_aux. Valid choices for auxiliary data are: <br> "Radiative background": Index value flagging the radiative <br> background. The following coding is used: 0=space, 1=surface <br> and 2=cloudbox. <br> "Optical depth": Scalar optical depth between the observation point <br> and the end of the present propagation path. Calculated based on <br> the (1,1)-element of the transmission matrix (1-based indexing), <br> i.e. only fully valid for scalar RT. If nothing else is stated, only the first column of iy_aux is filled, i.e. the column matching Stokes element I, while remaing columns are are filled with zeros.
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[out] | iy_aux | WS Output |
[in,out] | diy_dx | WS Input/Output |
[out] | ppvar_p | WS Output |
[out] | ppvar_t | WS Output |
[out] | ppvar_nlte | WS Output |
[out] | ppvar_vmr | WS Output |
[out] | ppvar_wind | WS Output |
[out] | ppvar_mag | WS Output |
[out] | ppvar_f | WS Output |
[out] | ppvar_iy | WS Output |
[out] | ppvar_trans_cumulat | WS Output |
[out] | ppvar_trans_partial | WS Output |
[in] | iy_id | WS Input |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | p_grid | WS Input |
[in] | t_field | WS Input |
[in] | nlte_field | WS Input |
[in] | vmr_field | WS Input |
[in] | abs_species | WS Input |
[in] | wind_u_field | WS Input |
[in] | wind_v_field | WS Input |
[in] | wind_w_field | WS Input |
[in] | mag_u_field | WS Input |
[in] | mag_v_field | WS Input |
[in] | mag_w_field | WS Input |
[in] | cloudbox_on | WS Input |
[in] | iy_unit | WS Input |
[in] | iy_aux_vars | WS Input |
[in] | jacobian_do | WS Input |
[in] | jacobian_quantities | WS Input |
[in] | ppath | WS Input |
[in] | rte_pos2 | WS Input |
[in] | propmat_clearsky_agenda | WS Input |
[in] | water_p_eq_agenda | WS Input |
[in] | iy_main_agenda | WS Input |
[in] | iy_space_agenda | WS Input |
[in] | iy_surface_agenda | WS Input |
[in] | iy_cloudbox_agenda | WS Input |
[in] | iy_agenda_call1 | WS Input |
[in] | iy_transmission | WS Input |
[in] | rte_alonglos_v | WS Input |
[in] | surface_props_data | WS Input |
Definition at line 563 of file m_rte.cc.
References ARTS::Var::abs_species(), adapt_stepwise_partial_derivatives(), ARTS::Var::atmosphere_dim(), ARTS::Var::cloudbox_on(), ARTS::Var::diy_dx(), do_temperature_jacobian(), ARTS::Var::dpnd_field_dx(), ARTS::Var::f_grid(), FOR_ANALYTICAL_JACOBIANS_DO, FOR_ANALYTICAL_JACOBIANS_DO2, get_ppath_atmvars(), get_ppath_f(), get_stepwise_blackbody_radiation(), get_stepwise_clearsky_propmat(), ARTS::Var::iy_agenda_call1(), ARTS::Var::iy_aux(), ARTS::Var::iy_aux_vars(), ARTS::Var::jacobian_do(), ARTS::Var::jacobian_quantities(), joker, ARTS::Var::mag_u_field(), ARTS::Var::mag_v_field(), ARTS::Var::mag_w_field(), min, ARTS::Var::nlte_field(), ns, ARTS::Var::p_grid(), ARTS::Var::ppath(), ppath_what_background(), ARTS::Var::ppvar_f(), ARTS::Var::ppvar_iy(), ARTS::Var::ppvar_mag(), ARTS::Var::ppvar_nlte(), ARTS::Var::ppvar_p(), ARTS::Var::ppvar_t(), ARTS::Var::ppvar_trans_cumulat(), ARTS::Var::ppvar_trans_partial(), ARTS::Var::ppvar_vmr(), ARTS::Var::ppvar_wind(), ARTS::Var::propmat_clearsky_agenda(), Vector::resize(), ARTS::Var::rte_alonglos_v(), rtmethods_jacobian_init(), ARTS::Var::scat_species(), stepwise_source(), ARTS::Var::stokes_dim(), 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 ARTS::Agenda::iy_main_agenda_emission(), iyEmissionStandard_g(), iyHybrid(), iyHybrid2(), spectral_radiance_fieldClearskyPlaneParallel(), and spectral_radiance_fieldExpandCloudboxField().
void iyEmissionStandardSequential | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfMatrix & | iy_aux, | ||
ArrayOfTensor3 & | diy_dx, | ||
Vector & | ppvar_p, | ||
Vector & | ppvar_t, | ||
EnergyLevelMap & | ppvar_nlte, | ||
Matrix & | ppvar_vmr, | ||
Matrix & | ppvar_wind, | ||
Matrix & | ppvar_mag, | ||
Matrix & | ppvar_f, | ||
Tensor3 & | ppvar_iy, | ||
Tensor4 & | ppvar_trans_cumulat, | ||
Tensor4 & | ppvar_trans_partial, | ||
const Index & | iy_id, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Index & | atmosphere_dim, | ||
const Vector & | p_grid, | ||
const Tensor3 & | t_field, | ||
const EnergyLevelMap & | nlte_field, | ||
const Tensor4 & | vmr_field, | ||
const ArrayOfArrayOfSpeciesTag & | abs_species, | ||
const Tensor3 & | wind_u_field, | ||
const Tensor3 & | wind_v_field, | ||
const Tensor3 & | wind_w_field, | ||
const Tensor3 & | mag_u_field, | ||
const Tensor3 & | mag_v_field, | ||
const Tensor3 & | mag_w_field, | ||
const Index & | cloudbox_on, | ||
const String & | iy_unit, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Index & | jacobian_do, | ||
const ArrayOfRetrievalQuantity & | jacobian_quantities, | ||
const Ppath & | ppath, | ||
const Vector & | rte_pos2, | ||
const Agenda & | propmat_clearsky_agenda, | ||
const Agenda & | water_p_eq_agenda, | ||
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 Tensor3 & | iy_transmission, | ||
const Numeric & | rte_alonglos_v, | ||
const Tensor3 & | surface_props_data, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iyEmissionStandardSequential.
DEPRECATED! Should go away soon Sequential version of iyEmissionStandard
For documentation see iyEmissionStandard.
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[out] | iy_aux | WS Output |
[in,out] | diy_dx | WS Input/Output |
[out] | ppvar_p | WS Output |
[out] | ppvar_t | WS Output |
[out] | ppvar_nlte | WS Output |
[out] | ppvar_vmr | WS Output |
[out] | ppvar_wind | WS Output |
[out] | ppvar_mag | WS Output |
[out] | ppvar_f | WS Output |
[out] | ppvar_iy | WS Output |
[out] | ppvar_trans_cumulat | WS Output |
[out] | ppvar_trans_partial | WS Output |
[in] | iy_id | WS Input |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | p_grid | WS Input |
[in] | t_field | WS Input |
[in] | nlte_field | WS Input |
[in] | vmr_field | WS Input |
[in] | abs_species | WS Input |
[in] | wind_u_field | WS Input |
[in] | wind_v_field | WS Input |
[in] | wind_w_field | WS Input |
[in] | mag_u_field | WS Input |
[in] | mag_v_field | WS Input |
[in] | mag_w_field | WS Input |
[in] | cloudbox_on | WS Input |
[in] | iy_unit | WS Input |
[in] | iy_aux_vars | WS Input |
[in] | jacobian_do | WS Input |
[in] | jacobian_quantities | WS Input |
[in] | ppath | WS Input |
[in] | rte_pos2 | WS Input |
[in] | propmat_clearsky_agenda | WS Input |
[in] | water_p_eq_agenda | WS Input |
[in] | iy_main_agenda | WS Input |
[in] | iy_space_agenda | WS Input |
[in] | iy_surface_agenda | WS Input |
[in] | iy_cloudbox_agenda | WS Input |
[in] | iy_agenda_call1 | WS Input |
[in] | iy_transmission | WS Input |
[in] | rte_alonglos_v | WS Input |
[in] | surface_props_data | WS Input |
Definition at line 172 of file m_rte.cc.
References ARTS::Var::abs_species(), adapt_stepwise_partial_derivatives(), ARTS::Var::atmosphere_dim(), ARTS::Var::cloudbox_on(), cumulative_transmission(), ARTS::Var::diy_dx(), do_temperature_jacobian(), ARTS::Var::dpnd_field_dx(), ARTS::Var::f_grid(), FOR_ANALYTICAL_JACOBIANS_DO, FOR_ANALYTICAL_JACOBIANS_DO2, get_iy_of_background(), get_ppath_atmvars(), get_ppath_f(), get_stepwise_blackbody_radiation(), get_stepwise_clearsky_propmat(), ARTS::Var::iy(), ARTS::Var::iy_agenda_call1(), ARTS::Var::iy_aux(), ARTS::Var::iy_aux_vars(), ARTS::Var::iy_cloudbox_agenda(), ARTS::Var::iy_id(), ARTS::Var::iy_main_agenda(), ARTS::Var::iy_space_agenda(), ARTS::Var::iy_surface_agenda(), ARTS::Var::iy_transmission(), iy_transmission_mult(), ARTS::Var::iy_unit(), ARTS::Var::jacobian_do(), ARTS::Var::jacobian_quantities(), joker, ARTS::Var::mag_u_field(), ARTS::Var::mag_v_field(), ARTS::Var::mag_w_field(), min, Array< base >::nelem(), ARTS::Var::nlte_field(), ns, ARTS::Var::p_grid(), ARTS::Var::ppath(), ppath_what_background(), ARTS::Var::ppvar_f(), ARTS::Var::ppvar_iy(), ARTS::Var::ppvar_mag(), ARTS::Var::ppvar_nlte(), ARTS::Var::ppvar_p(), ARTS::Var::ppvar_t(), ARTS::Var::ppvar_trans_cumulat(), ARTS::Var::ppvar_trans_partial(), ARTS::Var::ppvar_vmr(), ARTS::Var::ppvar_wind(), ARTS::Var::propmat_clearsky_agenda(), Vector::resize(), ARTS::Var::rte_alonglos_v(), ARTS::Var::rte_pos2(), rtmethods_jacobian_finalisation(), rtmethods_jacobian_init(), rtmethods_unit_conversion(), ARTS::Var::scat_species(), stepwise_source(), stepwise_transmission(), ARTS::Var::stokes_dim(), ARTS::Var::surface_props_data(), swap(), ARTS::Var::t_field(), update_radiation_vector(), ARTS::Var::verbosity(), ARTS::Var::vmr_field(), ARTS::Var::water_p_eq_agenda(), ARTS::Var::wind_u_field(), ARTS::Var::wind_v_field(), and ARTS::Var::wind_w_field().
Referenced by iyEmissionStandardSequential_g(), spectral_radiance_fieldClearskyPlaneParallel(), and spectral_radiance_fieldExpandCloudboxField().
void iyIndependentBeamApproximation | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfMatrix & | iy_aux, | ||
Ppath & | ppath, | ||
ArrayOfTensor3 & | diy_dx, | ||
GriddedField4 & | atm_fields_compact, | ||
const Index & | iy_id, | ||
const Vector & | f_grid, | ||
const Index & | atmosphere_dim, | ||
const Vector & | p_grid, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Vector & | lat_true, | ||
const Vector & | lon_true, | ||
const Tensor3 & | t_field, | ||
const Tensor3 & | z_field, | ||
const Tensor4 & | vmr_field, | ||
const EnergyLevelMap & | nlte_field, | ||
const Tensor3 & | wind_u_field, | ||
const Tensor3 & | wind_v_field, | ||
const Tensor3 & | wind_w_field, | ||
const Tensor3 & | mag_u_field, | ||
const Tensor3 & | mag_v_field, | ||
const Tensor3 & | mag_w_field, | ||
const Index & | cloudbox_on, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Tensor4 & | pnd_field, | ||
const Matrix & | particle_masses, | ||
const Agenda & | ppath_agenda, | ||
const Numeric & | ppath_lmax, | ||
const Numeric & | ppath_lraytrace, | ||
const Index & | iy_agenda_call1, | ||
const String & | iy_unit, | ||
const Tensor3 & | iy_transmission, | ||
const Vector & | rte_pos, | ||
const Vector & | rte_los, | ||
const Vector & | rte_pos2, | ||
const Index & | jacobian_do, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Agenda & | iy_independent_beam_approx_agenda, | ||
const Index & | return_atm1d, | ||
const Index & | skip_vmr, | ||
const Index & | skip_pnd, | ||
const Index & | return_masses, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iyIndependentBeamApproximation.
In development ....
Describe how atm_fields_compact is filled.
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[out] | iy_aux | WS Output |
[out] | ppath | WS Output |
[in,out] | diy_dx | WS Input/Output |
[out] | atm_fields_compact | WS Output |
[in] | iy_id | WS Input |
[in] | f_grid | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | p_grid | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | lat_true | WS Input |
[in] | lon_true | WS Input |
[in] | t_field | WS Input |
[in] | z_field | WS Input |
[in] | vmr_field | WS Input |
[in] | nlte_field | WS Input |
[in] | wind_u_field | WS Input |
[in] | wind_v_field | WS Input |
[in] | wind_w_field | WS Input |
[in] | mag_u_field | WS Input |
[in] | mag_v_field | WS Input |
[in] | mag_w_field | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_limits | WS Input |
[in] | pnd_field | WS Input |
[in] | particle_masses | WS Input |
[in] | ppath_agenda | WS Input |
[in] | ppath_lmax | WS Input |
[in] | ppath_lraytrace | WS Input |
[in] | iy_agenda_call1 | WS Input |
[in] | iy_unit | WS Input |
[in] | iy_transmission | WS Input |
[in] | rte_pos | WS Input |
[in] | rte_los | WS Input |
[in] | rte_pos2 | WS Input |
[in] | jacobian_do | WS Input |
[in] | iy_aux_vars | WS Input |
[in] | iy_independent_beam_approx_agenda | WS Input |
[in] | return_atm1d | Generic Input (Default: "0") |
[in] | skip_vmr | Generic Input (Default: "0") |
[in] | skip_pnd | Generic Input (Default: "0") |
[in] | return_masses | Generic Input (Default: "0") |
Definition at line 999 of file m_rte.cc.
References abs, ARTS::Var::atm_fields_compact(), ARTS::Var::atmosphere_dim(), chk_latlon_true(), ARTS::Var::cloudbox_limits(), ARTS::Var::cloudbox_on(), ARTS::Var::diy_dx(), error_if_limb_ppath(), ARTS::Var::f_grid(), GFIELD4_FIELD_NAMES, GFIELD4_LAT_GRID, GFIELD4_LON_GRID, GFIELD4_P_GRID, Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, interp(), interp_atmfield_by_itw(), interp_atmfield_gp2itw(), interp_cloudfield_gp2itw(), is_gp_inside_cloudbox(), itw2p(), ARTS::Var::iy(), ARTS::Var::iy_agenda_call1(), ARTS::Var::iy_aux(), ARTS::Var::iy_aux_vars(), ARTS::Var::iy_id(), ARTS::Var::iy_independent_beam_approx_agenda(), iy_independent_beam_approx_agendaExecute(), ARTS::Var::iy_transmission(), ARTS::Var::iy_unit(), ARTS::Var::jacobian_do(), joker, ARTS::Var::lat_grid(), ARTS::Var::lat_true(), ARTS::Var::lon_grid(), ARTS::Var::lon_true(), ARTS::Var::mag_u_field(), ARTS::Var::mag_v_field(), ARTS::Var::mag_w_field(), ConstTensor4View::nbooks(), ARTS::Var::nlte_field(), Ppath::np, ConstTensor4View::npages(), ARTS::Var::p_grid(), ARTS::Var::particle_masses(), ARTS::Var::pnd_field(), ARTS::Var::Ppath::pos(), pow(), ARTS::Var::ppath(), ARTS::Var::ppath_agenda(), ppath_agendaExecute(), ARTS::Var::ppath_lmax(), ARTS::Var::ppath_lraytrace(), Tensor4::resize(), Matrix::resize(), ARTS::Var::rte_los(), ARTS::Var::rte_pos(), ARTS::Var::rte_pos2(), ARTS::Var::t_field(), ARTS::Var::vmr_field(), ARTS::Var::wind_u_field(), ARTS::Var::wind_v_field(), ARTS::Var::wind_w_field(), and ARTS::Var::z_field().
Referenced by iyIndependentBeamApproximation_g().
void iyLoopFrequencies | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfMatrix & | iy_aux, | ||
Ppath & | ppath, | ||
ArrayOfTensor3 & | diy_dx, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Index & | iy_agenda_call1, | ||
const Tensor3 & | iy_transmission, | ||
const Vector & | rte_pos, | ||
const Vector & | rte_los, | ||
const Vector & | rte_pos2, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Agenda & | iy_loop_freqs_agenda, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iyLoopFrequencies.
Radiative transfer calculations one frequency at the time.
The method loops the frequencies in f_grid and calls iy_loop_freqs_agenda* for each individual value. This method is placed in iy_main_agenda, and the actual radiative transfer <br> method is put in iy_loop_freqs_agenda.
A common justification for using the method should be to consider dispersion. By using this method it is ensured that the propagation path for each individual frequency is calculated.
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[out] | iy_aux | WS Output |
[out] | ppath | WS Output |
[out] | diy_dx | WS Output |
[in] | iy_aux_vars | WS Input |
[in] | iy_agenda_call1 | WS Input |
[in] | iy_transmission | WS Input |
[in] | rte_pos | WS Input |
[in] | rte_los | WS Input |
[in] | rte_pos2 | WS Input |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | iy_loop_freqs_agenda | WS Input |
Definition at line 1440 of file m_rte.cc.
References 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_loop_freqs_agenda(), iy_loop_freqs_agendaExecute(), ARTS::Var::iy_transmission(), joker, Array< base >::nelem(), ARTS::Var::npages(), ARTS::Var::ppath(), q, ARTS::Var::rte_los(), ARTS::Var::rte_pos(), ARTS::Var::rte_pos2(), and ARTS::Var::stokes_dim().
Referenced by iyLoopFrequencies_g().
void iyMC | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfMatrix & | iy_aux, | ||
ArrayOfTensor3 & | diy_dx, | ||
const Index & | iy_agenda_call1, | ||
const Tensor3 & | iy_transmission, | ||
const Vector & | rte_pos, | ||
const Vector & | rte_los, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Index & | jacobian_do, | ||
const Index & | atmosphere_dim, | ||
const Vector & | p_grid, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Tensor3 & | z_field, | ||
const Tensor3 & | t_field, | ||
const Tensor4 & | vmr_field, | ||
const Vector & | refellipsoid, | ||
const Matrix & | z_surface, | ||
const Index & | cloudbox_on, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const ArrayOfArrayOfSingleScatteringData & | scat_data, | ||
const Agenda & | iy_space_agenda, | ||
const Agenda & | surface_rtprop_agenda, | ||
const Agenda & | propmat_clearsky_agenda, | ||
const Agenda & | ppath_step_agenda, | ||
const Numeric & | ppath_lmax, | ||
const Numeric & | ppath_lraytrace, | ||
const Tensor4 & | pnd_field, | ||
const String & | iy_unit, | ||
const Numeric & | mc_std_err, | ||
const Index & | mc_max_time, | ||
const Index & | mc_max_iter, | ||
const Index & | mc_min_iter, | ||
const Numeric & | mc_taustep_limit, | ||
const Index & | t_interp_order, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iyMC.
Interface to Monte Carlo part for iy_main_agenda.
Basically an interface to MCGeneral for doing monochromatic pencil beam calculations. This functions allows Monte Carlo (MC) calculations for sets of frequencies and sensor pos/los in a single run. Sensor responses can be included in the standard manner (through yCalc).
This function does not apply the MC approach when it comes to sensor properties. These properties are not considered when tracking photons, which is done in MCGeneral (but then only for the antenna pattern).
Output unit options (iy_unit) exactly as for MCGeneral.
The MC calculation errors are all assumed be uncorrelated and each have a normal distribution. These properties are of relevance when weighting the errors with the sensor repsonse matrix. The seed is reset for each call of MCGeneral to obtain uncorrelated errors.
MC control arguments (mc_std_err, mc_max_time, mc_min_iter, mc_max_iter mc_taustep_limit) as for MCGeneral. The arguments are applied for each monochromatic pencil beam calculation individually. As for MCGeneral, the value of mc_error shall be adopted to iy_unit*.
The following auxiliary data can be obtained: <br> "Error (uncorrelated)": Calculation error. Size: [nf,ns,1,1]. <br> (The later part of the text string is required. It is used as <br> a flag to yCalc for how to apply the sensor data.) where <br> nf: Number of frequencies. <br> ns: Number of Stokes elements.
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[out] | iy_aux | WS Output |
[out] | diy_dx | WS Output |
[in] | iy_agenda_call1 | WS Input |
[in] | iy_transmission | WS Input |
[in] | rte_pos | WS Input |
[in] | rte_los | WS Input |
[in] | iy_aux_vars | WS Input |
[in] | jacobian_do | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | p_grid | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | z_field | WS Input |
[in] | t_field | WS Input |
[in] | vmr_field | WS Input |
[in] | refellipsoid | WS Input |
[in] | z_surface | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_limits | WS Input |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | scat_data | WS Input |
[in] | iy_space_agenda | WS Input |
[in] | surface_rtprop_agenda | WS Input |
[in] | propmat_clearsky_agenda | WS Input |
[in] | ppath_step_agenda | WS Input |
[in] | ppath_lmax | WS Input |
[in] | ppath_lraytrace | WS Input |
[in] | pnd_field | WS Input |
[in] | iy_unit | WS Input |
[in] | mc_std_err | WS Input |
[in] | mc_max_time | WS Input |
[in] | mc_max_iter | WS Input |
[in] | mc_min_iter | WS Input |
[in] | mc_taustep_limit | WS Input |
[in] | t_interp_order | Generic Input (Default: "1") |
Definition at line 1512 of file m_rte.cc.
References ARTS::Var::atmosphere_dim(), ARTS::Var::cloudbox_limits(), ARTS::Var::cloudbox_on(), ARTS::Var::diy_dx(), ARTS::Var::f_grid(), ARTS::Var::f_index(), ARTS::Var::iy(), ARTS::Var::iy_agenda_call1(), ARTS::Var::iy_aux(), ARTS::Var::iy_aux_vars(), ARTS::Var::iy_space_agenda(), ARTS::Var::iy_transmission(), ARTS::Var::iy_unit(), ARTS::Var::jacobian_do(), joker, ARTS::Var::lat_grid(), ARTS::Var::lon_grid(), ARTS::Var::mc_antenna(), ARTS::Var::mc_error(), ARTS::Var::mc_iteration_count(), ARTS::Var::mc_max_iter(), ARTS::Var::mc_max_time(), ARTS::Var::mc_min_iter(), ARTS::Var::mc_points(), ARTS::Var::mc_scat_order(), ARTS::Var::mc_seed(), ARTS::Var::mc_source_domain(), ARTS::Var::mc_std_err(), ARTS::Var::mc_taustep_limit(), MCGeneral(), MCSetSeedFromTime(), ARTS::Var::p_grid(), ARTS::Var::pnd_field(), ARTS::Var::ppath_lmax(), ARTS::Var::ppath_lraytrace(), ARTS::Var::ppath_step_agenda(), ARTS::Var::propmat_clearsky_agenda(), ARTS::Var::refellipsoid(), ARTS::Var::rte_los(), ARTS::Var::rte_pos(), ARTS::Var::scat_data(), ARTS::Var::stokes_dim(), ARTS::Var::surface_rtprop_agenda(), ARTS::Var::t_field(), ARTS::Var::verbosity(), ARTS::Var::vmr_field(), ARTS::Var::y(), ARTS::Var::z_field(), and ARTS::Var::z_surface().
Referenced by iyMC_g().
void iyReplaceFromAux | ( | Matrix & | iy, |
const ArrayOfMatrix & | iy_aux, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Index & | jacobian_do, | ||
const String & | aux_var, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iyReplaceFromAux.
Change of main output variable.
With this method you can replace the content of iy with one of the auxiliary variables. The selected variable (by aux_var) must be part of iy_aux_vars. The corresponding data from iy_aux are copied to form a new iy (iy_aux is left unchanged). Elements of iy* correponding to Stokes elements not covered by the auxiliary variable are just set to zero.
Jacobian variables are not handled.
[in,out] | iy | WS Input/Output |
[in] | iy_aux | WS Input |
[in] | iy_aux_vars | WS Input |
[in] | jacobian_do | WS Input |
[in] | aux_var | Generic Input |
Definition at line 1707 of file m_rte.cc.
References ARTS::Var::iy(), ARTS::Var::iy_aux(), ARTS::Var::iy_aux_vars(), and ARTS::Var::jacobian_do().
Referenced by iyReplaceFromAux_g().
void ppvar_optical_depthFromPpvar_trans_cumulat | ( | Matrix & | ppvar_optical_depth, |
const Tensor4 & | ppvar_trans_cumulat, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: ppvar_optical_depthFromPpvar_trans_cumulat.
Sets ppvar_optical_depth according to provided transmission data.
The values in ppvar_optical_depth are set to -log( ppvar_trans_cumulat(joker,joker,0,0) ).
[out] | ppvar_optical_depth | WS Output |
[in] | ppvar_trans_cumulat | WS Input |
Definition at line 1739 of file m_rte.cc.
References joker, ARTS::Var::ppvar_optical_depth(), ARTS::Var::ppvar_trans_cumulat(), and transform().
Referenced by ppvar_optical_depthFromPpvar_trans_cumulat_g().
void yApplyUnit | ( | Vector & | y, |
Matrix & | jacobian, | ||
const Vector & | y_f, | ||
const ArrayOfIndex & | y_pol, | ||
const String & | iy_unit, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: yApplyUnit.
Conversion of y to other spectral units.
Any conversion to brightness temperature is normally made inside yCalc*. This method makes it possible to also make this conversion after yCalc, but with restrictions for jacobian and with. respect to the n2-law of radiance.
The conversion made inside iyEmissionStandard is mimiced and see that method for constraints and selection of output units. This with the restriction that the n2-law can be ignored. The later is the case if the sensor is placed in space, or if the refractive only devaites slightly from unity.
The method handles y and jacobian in parallel, where the last variable is only considered if it is set. The input data must be in original radiance units. A completely stringent check of this can not be performed.
The method can not be used with jacobian quantities that are not obtained through radiative transfer calculations. One example on quantity that can not be handled is jacobianAddPolyfit. There are no automatic checks warning for incorrect usage!
If you are using this method, iy_unit should be set to "1" when calling yCalc, and be changed before calling this method.
Conversion of y_aux is not supported.
[in,out] | y | WS Input/Output |
[in,out] | jacobian | WS Input/Output |
[in] | y_f | WS Input |
[in] | y_pol | WS Input |
[in] | iy_unit | WS Input |
Definition at line 2345 of file m_rte.cc.
References ARTS::Var::iy_unit(), max, and ARTS::Var::y().
Referenced by yApplyUnit_g().
void yCalc | ( | Workspace & | ws, |
Vector & | y, | ||
Vector & | y_f, | ||
ArrayOfIndex & | y_pol, | ||
Matrix & | y_pos, | ||
Matrix & | y_los, | ||
ArrayOfVector & | y_aux, | ||
Matrix & | y_geo, | ||
Matrix & | jacobian, | ||
const Index & | atmgeom_checked, | ||
const Index & | atmfields_checked, | ||
const Index & | atmosphere_dim, | ||
const EnergyLevelMap & | nlte_field, | ||
const Index & | cloudbox_on, | ||
const Index & | cloudbox_checked, | ||
const Index & | scat_data_checked, | ||
const Index & | sensor_checked, | ||
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 ArrayOfString & | iy_aux_vars, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: yCalc.
Calculation of complete measurement vectors (y).
The method performs radiative transfer calculations from a sensor perspective. Radiative transfer calculations are performed for monochromatic pencil beams, following iy_main_agenda and associated agendas. Obtained radiances are weighted together by sensor_response*, to include the characteristics of the sensor. The measurement vector obtained can contain anything from a single frequency value to a series of measurement scans (each consisting of a series of spectra), all depending on the settings. Spectra and jacobians are calculated in parallel.
The frequency, polarisation etc. for each measurement value is given by y_f, y_pol, y_pos and y_los.
The content of y_aux follows iy_aux_vars. See the method selected for *iy_main_agenda for allowed choices.
The geo-positions (y_geo) are set based on sensor_response. When an antenna pattern is considered, there are several pencil beams, and thus also several goe-positions, associated with each value of y. The geo-position assigned to a value in y is the geo_pos of the pencil beam related to the highest value in sensor_response. This means that mblock_dlos_grid* must contain the bore-sight direction (0,0), if you want y_geo to exactly match the bore-sight direction.
The Jacobian provided (jacobian) is adopted to selected retrieval units, but no transformations are applied. Transformations are included by calling jacobianAdjustAndTransform.
[in,out] | ws | Workspace |
[out] | y | WS Output |
[out] | y_f | WS Output |
[out] | y_pol | WS Output |
[out] | y_pos | WS Output |
[out] | y_los | WS Output |
[out] | y_aux | WS Output |
[out] | y_geo | WS Output |
[out] | jacobian | WS Output |
[in] | atmgeom_checked | WS Input |
[in] | atmfields_checked | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | nlte_field | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_checked | WS Input |
[in] | scat_data_checked | WS Input |
[in] | sensor_checked | WS Input |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | sensor_pos | WS Input |
[in] | sensor_los | WS Input |
[in] | transmitter_pos | WS Input |
[in] | mblock_dlos_grid | WS Input |
[in] | sensor_response | WS Input |
[in] | sensor_response_f | WS Input |
[in] | sensor_response_pol | WS Input |
[in] | sensor_response_dlos | WS Input |
[in] | iy_unit | WS Input |
[in] | iy_main_agenda | WS Input |
[in] | geo_pos_agenda | WS Input |
[in] | jacobian_agenda | WS Input |
[in] | jacobian_do | WS Input |
[in] | jacobian_quantities | WS Input |
[in] | iy_aux_vars | WS Input |
Definition at line 1749 of file m_rte.cc.
References arts_omp_get_max_threads(), ARTS::Var::atmfields_checked(), ARTS::Var::atmgeom_checked(), ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_if_increasing(), ARTS::Var::cloudbox_checked(), ARTS::Var::cloudbox_on(), CREATE_OUT3, ARTS::Var::f_grid(), FOR_ANALYTICAL_JACOBIANS_DO2, ARTS::Var::geo_pos_agenda(), get_rowindex_for_mblock(), Range::get_start(), ARTS::Var::iy_aux_vars(), ARTS::Var::iy_main_agenda(), ARTS::Var::iy_unit(), jac_ranges_indices(), ARTS::Var::jacobian(), ARTS::Var::jacobian_agenda(), ARTS::Var::jacobian_do(), ARTS::Var::jacobian_quantities(), ARTS::Var::mblock_dlos_grid(), ARTS::Var::mblock_index(), mult(), Array< base >::nelem(), ARTS::Var::nlte_field(), pow(), q, ARTS::Var::scat_data_checked(), ARTS::Var::sensor_checked(), ARTS::Var::sensor_los(), ARTS::Var::sensor_pos(), ARTS::Var::sensor_response(), ARTS::Var::sensor_response_dlos(), ARTS::Var::sensor_response_f(), ARTS::Var::sensor_response_pol(), sqrt(), ARTS::Var::stokes_dim(), ARTS::Var::transmitter_pos(), ARTS::Var::verbosity(), ARTS::Var::y(), ARTS::Var::y_aux(), ARTS::Var::y_f(), ARTS::Var::y_geo(), ARTS::Var::y_los(), ARTS::Var::y_pol(), ARTS::Var::y_pos(), and yCalc_mblock_loop_body().
Referenced by yCalc_g(), and yCalcAppend().
void yCalcAppend | ( | Workspace & | ws, |
Vector & | y, | ||
Vector & | y_f, | ||
ArrayOfIndex & | y_pol, | ||
Matrix & | y_pos, | ||
Matrix & | y_los, | ||
ArrayOfVector & | y_aux, | ||
Matrix & | y_geo, | ||
Matrix & | jacobian, | ||
ArrayOfRetrievalQuantity & | jacobian_quantities, | ||
const Index & | atmgeom_checked, | ||
const Index & | atmfields_checked, | ||
const Index & | atmosphere_dim, | ||
const EnergyLevelMap & | nlte_field, | ||
const Index & | cloudbox_on, | ||
const Index & | cloudbox_checked, | ||
const Index & | scat_data_checked, | ||
const Index & | sensor_checked, | ||
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 ArrayOfString & | iy_aux_vars, | ||
const ArrayOfRetrievalQuantity & | jacobian_quantities_copy, | ||
const Index & | append_instrument_wfs, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: yCalcAppend.
Replaces yCalc if a measurement shall be appended to an existing one.
The method works basically as yCalc but appends the results to existing data, instead of creating completely new y and its associated variables. This method is required if your measurement consists of data from two instruments using different observation techniques (corresponding to different iyCalc-methods). One such example is if emission and transmission data are combined into a joint retrieval. The method can also be used to get around the constrain that sensor_response is required to be the same for all data.
The new measurement is simply appended to the input y, and the other output variables are treated correspondingly. Data are appended "blindly" in y_aux. That is, data of different type are appended if iy_aux_vars differs between the two measurements, the data are appended strictly following the order. First variable of second measurement is appended to first variable of first measurement, and so on. The number of auxiliary variables can differ between the measurements. Missing data are set to zero.
The set of retrieval quantities can differ between the two calculations. If an atmospheric quantity is part of both Jacobians, the same retrieval grids must be used in both cases. The treatment of instrument related Jacobians (baseline fits, pointing ...) follows the append_instrument_wfs argument.
A difference to yCalc is that jacobian_quantities is both in- and output variable. The input version shall match the measurement to be calculated, while the output version matches the output y, the combined, measurements. A copies of jacobian_quantities of the first measurement must be made and shall be provided to the method as jacobian_quantities_copy.
As for yCalc Jacobian transformations are not handled, and the the input Jacobian shall not contain transformations. That is jacobianAdjustAndTransform* shall be called after this method, when the complete Jacobian is at hand.
[in,out] | ws | Workspace |
[in,out] | y | WS Input/Output |
[in,out] | y_f | WS Input/Output |
[in,out] | y_pol | WS Input/Output |
[in,out] | y_pos | WS Input/Output |
[in,out] | y_los | WS Input/Output |
[in,out] | y_aux | WS Input/Output |
[in,out] | y_geo | WS Input/Output |
[in,out] | jacobian | WS Input/Output |
[in,out] | jacobian_quantities | WS Input/Output |
[in] | atmgeom_checked | WS Input |
[in] | atmfields_checked | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | nlte_field | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_checked | WS Input |
[in] | scat_data_checked | WS Input |
[in] | sensor_checked | WS Input |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | sensor_pos | WS Input |
[in] | sensor_los | WS Input |
[in] | transmitter_pos | WS Input |
[in] | mblock_dlos_grid | WS Input |
[in] | sensor_response | WS Input |
[in] | sensor_response_f | WS Input |
[in] | sensor_response_pol | WS Input |
[in] | sensor_response_dlos | WS Input |
[in] | iy_unit | WS Input |
[in] | iy_main_agenda | WS Input |
[in] | geo_pos_agenda | WS Input |
[in] | jacobian_agenda | WS Input |
[in] | jacobian_do | WS Input |
[in] | iy_aux_vars | WS Input |
[in] | jacobian_quantities_copy | Generic Input |
[in] | append_instrument_wfs | Generic Input (Default: "0") |
Definition at line 2006 of file m_rte.cc.
References ABSSPECIES_MAINTAG, ARTS::Var::atmfields_checked(), ARTS::Var::atmgeom_checked(), ARTS::Var::atmosphere_dim(), ARTS::Var::cloudbox_checked(), ARTS::Var::cloudbox_on(), ARTS::Var::f_grid(), ARTS::Var::geo_pos_agenda(), ARTS::Var::iy_aux_vars(), ARTS::Var::iy_main_agenda(), ARTS::Var::iy_unit(), jac_ranges_indices(), ARTS::Var::jacobian(), ARTS::Var::jacobian_agenda(), ARTS::Var::jacobian_do(), ARTS::Var::jacobian_quantities(), joker, max, ARTS::Var::mblock_dlos_grid(), ConstMatrixView::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), Absorption::nelem(), ARTS::Var::nlte_field(), q1, ARTS::Var::scat_data_checked(), SCATSPECIES_MAINTAG, ARTS::Var::sensor_checked(), ARTS::Var::sensor_los(), ARTS::Var::sensor_pos(), ARTS::Var::sensor_response(), ARTS::Var::sensor_response_dlos(), ARTS::Var::sensor_response_f(), ARTS::Var::sensor_response_pol(), ARTS::Var::stokes_dim(), SURFACE_MAINTAG, TEMPERATURE_MAINTAG, ARTS::Var::transmitter_pos(), ARTS::Var::verbosity(), WIND_MAINTAG, ARTS::Var::y(), ARTS::Var::y_aux(), ARTS::Var::y_f(), ARTS::Var::y_geo(), ARTS::Var::y_los(), ARTS::Var::y_pol(), ARTS::Var::y_pos(), and yCalc().
Referenced by yCalcAppend_g().
|
extern |
Referenced by yCalcAppend().
|
extern |
Referenced by iyIndependentBeamApproximation().
|
extern |
Referenced by iyIndependentBeamApproximation().
|
extern |
Referenced by iyIndependentBeamApproximation().
|
extern |
Referenced by iyIndependentBeamApproximation().
|
extern |
|
extern |
Referenced by yCalcAppend().
|
extern |
|
extern |
Referenced by yCalcAppend().
|
extern |
Referenced by yCalcAppend().
|
extern |
Referenced by yCalcAppend().