ARTS
2.2.66
|
Workspace functions 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"
Go to the source code of this file.
Functions | |
void | iyApplyUnit (Matrix &iy, ArrayOfTensor4 &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, ArrayOfTensor4 &iy_aux, Ppath &ppath, const Index &atmfields_checked, const Index &atmgeom_checked, const ArrayOfString &iy_aux_vars, const Vector &f_grid, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const Index &cloudbox_on, const Index &cloudbox_checked, const Vector &rte_pos, const Vector &rte_los, const Vector &rte_pos2, const Agenda &iy_main_agenda, const Verbosity &) |
WORKSPACE METHOD: iyCalc. More... | |
void | iyEmissionStandard (Workspace &ws, Matrix &iy, ArrayOfTensor4 &iy_aux, Ppath &ppath, ArrayOfTensor3 &diy_dx, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &p_grid, const Tensor3 &z_field, const Tensor3 &t_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 ArrayOfArrayOfIndex &jacobian_indices, const Agenda &ppath_agenda, const Agenda &blackbody_radiation_agenda, const Agenda &propmat_clearsky_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 Vector &rte_pos, const Vector &rte_los, const Vector &rte_pos2, const Numeric &rte_alonglos_v, const Numeric &ppath_lraytrace, const Verbosity &verbosity) |
WORKSPACE METHOD: iyEmissionStandard. More... | |
void | iyLoopFrequencies (Workspace &ws, Matrix &iy, ArrayOfTensor4 &iy_aux, Ppath &ppath, ArrayOfTensor3 &diy_dx, const ArrayOfString &iy_aux_vars, const Index &stokes_dim, const Vector &f_grid, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const Index &cloudbox_on, const Index &iy_agenda_call1, const Tensor3 &iy_transmission, const Vector &rte_pos, const Vector &rte_los, const Vector &rte_pos2, const Index &jacobian_do, const Agenda &iy_sub_agenda, const Verbosity &) |
WORKSPACE METHOD: iyLoopFrequencies. More... | |
void | iyMC (Workspace &ws, Matrix &iy, ArrayOfTensor4 &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 ArrayOfSingleScatteringData &scat_data_array, const Agenda &iy_space_agenda, const Agenda &surface_rtprop_agenda, const Agenda &propmat_clearsky_agenda, const Agenda &ppath_step_agenda, 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 Verbosity &verbosity) |
WORKSPACE METHOD: iyMC. More... | |
void | iyReplaceFromAux (Matrix &iy, const ArrayOfTensor4 &iy_aux, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const String &aux_var, const Verbosity &) |
WORKSPACE METHOD: iyReplaceFromAux. More... | |
void | iy_auxFillParticleVariables (ArrayOfTensor4 &iy_aux, const Index &atmfields_checked, const Index &cloudbox_checked, const Index &atmosphere_dim, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const Matrix &particle_masses, const Ppath &ppath, const ArrayOfString &iy_aux_vars, const Verbosity &) |
WORKSPACE METHOD: iy_auxFillParticleVariables. 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 &jacobian, const Index &atmosphere_dim, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_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 Vector &mblock_za_grid, const Vector &mblock_aa_grid, const Index &antenna_dim, const Sparse &sensor_response, const Vector &sensor_response_f, const ArrayOfIndex &sensor_response_pol, const Vector &sensor_response_za, const Vector &sensor_response_aa, const Agenda &iy_main_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) |
void | yCalc (Workspace &ws, Vector &y, Vector &y_f, ArrayOfIndex &y_pol, Matrix &y_pos, Matrix &y_los, ArrayOfVector &y_aux, Matrix &jacobian, const Index &atmfields_checked, const Index &atmgeom_checked, const Index &atmosphere_dim, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const Index &cloudbox_on, const Index &cloudbox_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 Vector &mblock_za_grid, const Vector &mblock_aa_grid, const Index &antenna_dim, const Sparse &sensor_response, const Vector &sensor_response_f, const ArrayOfIndex &sensor_response_pol, const Vector &sensor_response_za, const Vector &sensor_response_aa, const Agenda &iy_main_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) |
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 &jacobian, ArrayOfRetrievalQuantity &jacobian_quantities, ArrayOfArrayOfIndex &jacobian_indices, const Index &atmfields_checked, const Index &atmgeom_checked, const Index &atmosphere_dim, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const Index &cloudbox_on, const Index &cloudbox_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 Vector &mblock_za_grid, const Vector &mblock_aa_grid, const Index &antenna_dim, const Sparse &sensor_response, const Vector &sensor_response_f, const ArrayOfIndex &sensor_response_pol, const Vector &sensor_response_za, const Vector &sensor_response_aa, const Agenda &iy_main_agenda, const Agenda &jacobian_agenda, const Index &jacobian_do, const ArrayOfString &iy_aux_vars, const ArrayOfRetrievalQuantity &jacobian_quantities1, const ArrayOfArrayOfIndex &jacobian_indices1, 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 | TEMPERATURE_MAINTAG |
const String | WIND_MAINTAG |
Workspace functions for solving clear sky radiative transfer.
These functions are listed in the doxygen documentation as entries of the file auto_md.h.
Definition in file m_rte.cc.
void iy_auxFillParticleVariables | ( | ArrayOfTensor4 & | iy_aux, |
const Index & | atmfields_checked, | ||
const Index & | cloudbox_checked, | ||
const Index & | atmosphere_dim, | ||
const Index & | cloudbox_on, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Tensor4 & | pnd_field, | ||
const Matrix & | particle_masses, | ||
const Ppath & | ppath, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iy_auxFillParticleVariables.
Additional treatment some particle auxiliary variables.
This WSM is intended to complement main radiative transfer methods that does not handle scattering, and thus can not provide auxiliary data for particle properties. The following auxiliary variables are covered: <br> "PND, type X": The particle number density for particle type X <br> (ie. corresponds to book X in pnd_field). Size: [1,1,1,np]. <br> "Mass content, X": The particle content for mass category X. <br> This corresponds to column X in particle_masses (zero- <br> based indexing). Size: [1,1,1,np].
To complement iyEmissionStandard should be the main application. As a preparatory step you need to set up all cloud variables in standard manner. After this you need to set cloudbox_on to zero, and in iy_main_agenda add these lines (after iyEmissionStandard): <br> FlagOn(cloudbox_on) <br> iy_auxFillParticleVariables
[out] | iy_aux | WS Output |
[in] | atmfields_checked | WS Input |
[in] | cloudbox_checked | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_limits | WS Input |
[in] | pnd_field | WS Input |
[in] | particle_masses | WS Input |
[in] | ppath | WS Input |
[in] | iy_aux_vars | WS Input |
Definition at line 1354 of file m_rte.cc.
References Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, gridpos_copy(), interp_atmfield_by_itw(), interp_cloudfield_gp2itw(), is_gp_inside_cloudbox(), joker, ConstTensor4View::nbooks(), ConstMatrixView::ncols(), Array< base >::nelem(), and Ppath::np.
Referenced by iy_auxFillParticleVariables_g().
void iyApplyUnit | ( | Matrix & | iy, |
ArrayOfTensor4 & | 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.
[out] | iy | WS Output |
[out] | iy_aux | WS 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 73 of file m_rte.cc.
References apply_iy_unit(), joker, max, and Array< base >::nelem().
Referenced by iyApplyUnit_g().
void iyCalc | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfTensor4 & | iy_aux, | ||
Ppath & | ppath, | ||
const Index & | atmgeom_checked, | ||
const Index & | atmfields_checked, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Vector & | f_grid, | ||
const Tensor3 & | t_field, | ||
const Tensor3 & | z_field, | ||
const Tensor4 & | vmr_field, | ||
const Index & | cloudbox_on, | ||
const Index & | cloudbox_checked, | ||
const Vector & | rte_pos, | ||
const Vector & | rte_los, | ||
const Vector & | rte_pos2, | ||
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] | f_grid | WS Input |
[in] | t_field | WS Input |
[in] | z_field | WS Input |
[in] | vmr_field | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_checked | WS Input |
[in] | rte_pos | WS Input |
[in] | rte_los | WS Input |
[in] | rte_pos2 | WS Input |
[in] | iy_main_agenda | WS Input |
Definition at line 121 of file m_rte.cc.
References iy_main_agendaExecute().
Referenced by iyCalc_g().
void iyEmissionStandard | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfTensor4 & | iy_aux, | ||
Ppath & | ppath, | ||
ArrayOfTensor3 & | diy_dx, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Index & | atmosphere_dim, | ||
const Vector & | p_grid, | ||
const Tensor3 & | z_field, | ||
const Tensor3 & | t_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 ArrayOfArrayOfIndex & | jacobian_indices, | ||
const Agenda & | ppath_agenda, | ||
const Agenda & | blackbody_radiation_agenda, | ||
const Agenda & | propmat_clearsky_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 Vector & | rte_pos, | ||
const Vector & | rte_los, | ||
const Vector & | rte_pos2, | ||
const Numeric & | rte_alonglos_v, | ||
const Numeric & | ppath_lraytrace, | ||
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). Assumes local thermodynamic equilibrium for emission. The basic calculation strategy is to take the average of the absorption and the emission source function at the end points of each step of the propagation path. For details see the user guide.
The internal radiance unit is determined by your definition of blackbody radiation inside the atmospheric and surface source terms. Set iy_unit to "1" if you want this to also be the unit for output radiances. If you want another output unit, you need to make sure that the internal unit is W/m2/Hz/sr. The possible choices for iy_unit are: <br> "1" : No conversion. <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).
Please note that there is no way for ARTS to strictly check the internal unit. In principle, the unit can differ between the elements. The user must makes sure that any unit conversion is applied correctly, and in accordance with the calibration of the instrument of concern. Expressions applied and considerations for the unit conversion of radiances are discussed in Sec. 5.7 of the ARTS-2 article.
The following auxiliary data can be obtained: <br> "Pressure": The pressure along the propagation path. <br> Size: [1,1,1,np]. <br> "Temperature": The temperature along the propagation path. <br> Size: [1,1,1,np]. <br> "VMR, species X": VMR of the species with index X (zero based). <br> For example, adding the string "VMR, species 0" extracts the <br> VMR of the first species. Size: [1,1,1,np]. <br> "Absorption, summed": The total absorption matrix along the <br> path. Size: [nf,ns,ns,np]. <br> "Absorption, species X": The absorption matrix along the path <br> for an individual species (X works as for VMR). <br> Size: [nf,ns,ns,np]. "Radiative background": Index value flagging the radiative <br> background. The following coding is used: 0=space, 1=surface <br> and 2=cloudbox. Size: [nf,1,1,1]. <br> "iy": The radiance at each point along the path (iy_unit is. <br> considered). Size: [nf,ns,1,np]. <br> "Transmission": The transmission matrix from the surface, space <br> or cloudbox, to each propagation path point. The matrix is <br> valid for the photon direction. Size: [nf,ns,ns,np]. "Optical depth": The scalar optical depth between the <br> observation point and the end of the primary propagation path <br> (ie. the optical depth to the surface or space.). Calculated <br> in a pure scalar manner, and not dependent on direction. <br> Size: [nf,1,1,1]. where <br> nf: Number of frequencies. <br> ns: Number of Stokes elements. <br> np: Number of propagation path points.
The auxiliary data are returned in iy_aux with quantities selected by iy_aux_vars. Most variables require that the method is called directly or by iyCalc. For calculations using yCalc, the selection is restricted to the variables marked with *.
In addition, these choices are accepted but no calculations are done: <br> "PND, type X": Size: [0,0,0,0]. <br> "Mass content, X": Size: [0,0,0,0]. See e.g. iyTransmissionStandard for a definition of these variables. To fill these elements of iy_aux (after calling this WSM), use iy_auxFillParticleVariables.
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[out] | iy_aux | WS Output |
[out] | ppath | WS Output |
[out] | diy_dx | WS Output |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | p_grid | WS Input |
[in] | z_field | WS Input |
[in] | t_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] | jacobian_indices | WS Input |
[in] | ppath_agenda | WS Input |
[in] | blackbody_radiation_agenda | WS Input |
[in] | propmat_clearsky_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_pos | WS Input |
[in] | rte_los | WS Input |
[in] | rte_pos2 | WS Input |
[in] | rte_alonglos_v | WS Input |
[in] | ppath_lraytrace | WS Input |
Definition at line 170 of file m_rte.cc.
References apply_iy_unit(), apply_iy_unit2(), chk_if_std_blackbody_agenda(), diy_from_path_to_rgrids(), emission_rtstep(), Ppath::end_lstep, ext2trans(), find_first(), FOR_ANALYTICAL_JACOBIANS_DO, get_iy_of_background(), get_pointers_for_analytical_jacobians(), get_ppath_abs(), get_ppath_atmvars(), get_ppath_blackrad(), get_ppath_f(), get_ppath_trans(), id_mat(), iy_transmission_mult(), joker, Ppath::lstep, min, mult(), Array< base >::nelem(), ConstVectorView::nelem(), Ppath::np, Ppath::nreal, ns, ppath_agendaExecute(), ppath_what_background(), q, Tensor4::resize(), Vector::resize(), transpose(), and vmrunitscf().
Referenced by iyEmissionStandard_g().
void iyLoopFrequencies | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfTensor4 & | iy_aux, | ||
Ppath & | ppath, | ||
ArrayOfTensor3 & | diy_dx, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Tensor3 & | t_field, | ||
const Tensor3 & | z_field, | ||
const Tensor4 & | vmr_field, | ||
const Index & | cloudbox_on, | ||
const Index & | iy_agenda_call1, | ||
const Tensor3 & | iy_transmission, | ||
const Vector & | rte_pos, | ||
const Vector & | rte_los, | ||
const Vector & | rte_pos2, | ||
const Index & | jacobian_do, | ||
const Agenda & | iy_sub_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_sub_agenda* for each individual value. This method is placed in iy_main_agenda, and the actual radiative ransfer method is put in iy_sub_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.
Auxiliary data (defined by iy_aux_vars) can not contain along- the-path quantities (a common ppath is not ensured). The returned ppath* is valid for the last frequency.
[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] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | t_field | WS Input |
[in] | z_field | WS Input |
[in] | vmr_field | WS Input |
[in] | cloudbox_on | 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] | jacobian_do | WS Input |
[in] | iy_sub_agenda | WS Input |
Definition at line 1054 of file m_rte.cc.
References iy_sub_agendaExecute(), joker, ConstTensor3View::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), q, and Matrix::resize().
Referenced by iyLoopFrequencies_g().
void iyMC | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfTensor4 & | 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 ArrayOfSingleScatteringData & | scat_data_array, | ||
const Agenda & | iy_space_agenda, | ||
const Agenda & | surface_rtprop_agenda, | ||
const Agenda & | propmat_clearsky_agenda, | ||
const Agenda & | ppath_step_agenda, | ||
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 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 and mc_mas_iter) as for MCGeneral. The arguments are applied for each monochromatic pencil beam calculation individually. As or 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_array | 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_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 |
Definition at line 1131 of file m_rte.cc.
References joker, MCGeneral(), MCSetSeedFromTime(), ConstTensor3View::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), Matrix::resize(), scat_data_array_monoCalc(), and MCAntenna::set_pencil_beam().
Referenced by iyMC_g().
void iyReplaceFromAux | ( | Matrix & | iy, |
const ArrayOfTensor4 & | 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.
[out] | iy | WS 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 1295 of file m_rte.cc.
References Array< base >::nelem(), and ConstMatrixView::nrows().
Referenced by iyReplaceFromAux_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.
[out] | y | WS Output |
[out] | jacobian | WS Output |
[in] | y_f | WS Input |
[in] | y_pol | WS Input |
[in] | iy_unit | WS Input |
Definition at line 2162 of file m_rte.cc.
References apply_iy_unit(), apply_iy_unit2(), joker, max, ConstMatrixView::ncols(), ConstVectorView::nelem(), ConstMatrixView::nrows(), and transpose().
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 & | jacobian, | ||
const Index & | atmgeom_checked, | ||
const Index & | atmfields_checked, | ||
const Index & | atmosphere_dim, | ||
const Tensor3 & | t_field, | ||
const Tensor3 & | z_field, | ||
const Tensor4 & | vmr_field, | ||
const Index & | cloudbox_on, | ||
const Index & | cloudbox_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 Vector & | mblock_za_grid, | ||
const Vector & | mblock_aa_grid, | ||
const Index & | antenna_dim, | ||
const Sparse & | sensor_response, | ||
const Vector & | sensor_response_f, | ||
const ArrayOfIndex & | sensor_response_pol, | ||
const Vector & | sensor_response_za, | ||
const Vector & | sensor_response_aa, | ||
const Agenda & | iy_main_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 | ||
) |
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.
See the method selected for iy_main_agenda for quantities that can be obtained by y_aux. However, in no case data of along-the-path type can be extracted.
[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] | jacobian | WS Output |
[in] | atmgeom_checked | WS Input |
[in] | atmfields_checked | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | t_field | WS Input |
[in] | z_field | WS Input |
[in] | vmr_field | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_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_za_grid | WS Input |
[in] | mblock_aa_grid | WS Input |
[in] | antenna_dim | WS Input |
[in] | sensor_response | WS Input |
[in] | sensor_response_f | WS Input |
[in] | sensor_response_pol | WS Input |
[in] | sensor_response_za | WS Input |
[in] | sensor_response_aa | WS Input |
[in] | iy_main_agenda | WS Input |
[in] | jacobian_agenda | WS Input |
[in] | jacobian_do | WS Input |
[in] | jacobian_quantities | WS Input |
[in] | jacobian_indices | WS Input |
[in] | iy_aux_vars | WS Input |
Definition at line 1583 of file m_rte.cc.
References arts_omp_get_max_threads(), chk_if_in_range(), chk_if_increasing(), CREATE_OUT3, FOR_ANALYTICAL_JACOBIANS_DO, get_rowindex_for_mblock(), Range::get_start(), mult(), ConstMatrixView::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), Sparse::nrows(), ConstMatrixView::nrows(), q, Vector::resize(), Matrix::resize(), and yCalc_mblock_loop_body().
Referenced by yCalc_g(), and yCalcAppend().
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 & | jacobian, | ||
const Index & | atmosphere_dim, | ||
const Tensor3 & | t_field, | ||
const Tensor3 & | z_field, | ||
const Tensor4 & | vmr_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 Vector & | mblock_za_grid, | ||
const Vector & | mblock_aa_grid, | ||
const Index & | antenna_dim, | ||
const Sparse & | sensor_response, | ||
const Vector & | sensor_response_f, | ||
const ArrayOfIndex & | sensor_response_pol, | ||
const Vector & | sensor_response_za, | ||
const Vector & | sensor_response_aa, | ||
const Agenda & | iy_main_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 | ||
) |
Definition at line 1471 of file m_rte.cc.
References FOR_ANALYTICAL_JACOBIANS_DO, get_rowindex_for_mblock(), Range::get_start(), iyb_calc(), jacobian_agendaExecute(), joker, mult(), and ConstVectorView::nelem().
Referenced by yCalc().
void yCalcAppend | ( | Workspace & | ws, |
Vector & | y, | ||
Vector & | y_f, | ||
ArrayOfIndex & | y_pol, | ||
Matrix & | y_pos, | ||
Matrix & | y_los, | ||
ArrayOfVector & | y_aux, | ||
Matrix & | jacobian, | ||
ArrayOfRetrievalQuantity & | jacobian_quantities, | ||
ArrayOfArrayOfIndex & | jacobian_indices, | ||
const Index & | atmgeom_checked, | ||
const Index & | atmfields_checked, | ||
const Index & | atmosphere_dim, | ||
const Tensor3 & | t_field, | ||
const Tensor3 & | z_field, | ||
const Tensor4 & | vmr_field, | ||
const Index & | cloudbox_on, | ||
const Index & | cloudbox_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 Vector & | mblock_za_grid, | ||
const Vector & | mblock_aa_grid, | ||
const Index & | antenna_dim, | ||
const Sparse & | sensor_response, | ||
const Vector & | sensor_response_f, | ||
const ArrayOfIndex & | sensor_response_pol, | ||
const Vector & | sensor_response_za, | ||
const Vector & | sensor_response_aa, | ||
const Agenda & | iy_main_agenda, | ||
const Agenda & | jacobian_agenda, | ||
const Index & | jacobian_do, | ||
const ArrayOfString & | iy_aux_vars, | ||
const ArrayOfRetrievalQuantity & | jacobian_quantities_copy, | ||
const ArrayOfArrayOfIndex & | jacobian_indices_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 and jacobian_indices* are both in- and output variables. The input version shall match the measurement to be calculated, while the version matches the output y, the combined, measurements. Copies of jacobian_quantities and * jacobian_indices* of the first measurement must be made and shall be provided to the method as jacobian_quantities_copy* and jacobian_indices_copy.
[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] | jacobian | WS Output |
[out] | jacobian_quantities | WS Output |
[out] | jacobian_indices | WS Output |
[in] | atmgeom_checked | WS Input |
[in] | atmfields_checked | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | t_field | WS Input |
[in] | z_field | WS Input |
[in] | vmr_field | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_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_za_grid | WS Input |
[in] | mblock_aa_grid | WS Input |
[in] | antenna_dim | WS Input |
[in] | sensor_response | WS Input |
[in] | sensor_response_f | WS Input |
[in] | sensor_response_pol | WS Input |
[in] | sensor_response_za | WS Input |
[in] | sensor_response_aa | WS Input |
[in] | iy_main_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] | jacobian_indices_copy | Generic Input |
[in] | append_instrument_wfs | Generic Input (Default: "0") |
Definition at line 1852 of file m_rte.cc.
References abs, joker, max, ConstMatrixView::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), ConstMatrixView::nrows(), q1, Vector::resize(), Matrix::resize(), TEMPERATURE_MAINTAG, and yCalc().
Referenced by yCalcAppend_g().
const String ABSSPECIES_MAINTAG |
const Numeric PI |
const Numeric SPEED_OF_LIGHT |
const String TEMPERATURE_MAINTAG |
Referenced by yCalcAppend().
const String WIND_MAINTAG |