ARTS
2.2.66
|
Workspace functions related to transmitters and radiative transfer for transmitted signals. More...
#include <cmath>
#include <stdexcept>
#include "arts.h"
#include "auto_md.h"
#include "complex.h"
#include "geodetic.h"
#include "jacobian.h"
#include "lin_alg.h"
#include "logic.h"
#include "math_funcs.h"
#include "messages.h"
#include "rte.h"
#include "sensor.h"
Go to the source code of this file.
Functions | |
void | iyRadioLink (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 Vector &lat_grid, const Vector &lon_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 Vector &refellipsoid, const Matrix &z_surface, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const Index &use_mean_scat_data, const ArrayOfSingleScatteringData &scat_data_array, const Matrix &particle_masses, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const Agenda &ppath_agenda, const Agenda &ppath_step_agenda, const Agenda &propmat_clearsky_agenda, const Agenda &iy_transmitter_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 Index &defocus_method, const Numeric &defocus_shift, const Verbosity &verbosity) |
WORKSPACE METHOD: iyRadioLink. More... | |
void | iyTransmissionStandard (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 ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const Index &use_mean_scat_data, const ArrayOfSingleScatteringData &scat_data_array, const Matrix &particle_masses, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const ArrayOfArrayOfIndex &jacobian_indices, const Agenda &ppath_agenda, const Agenda &propmat_clearsky_agenda, const Agenda &iy_transmitter_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: iyTransmissionStandard. More... | |
void | iy_transmitterMultiplePol (Matrix &iy, const Index &stokes_dim, const Vector &f_grid, const ArrayOfIndex &sensor_pol, const Verbosity &) |
WORKSPACE METHOD: iy_transmitterMultiplePol. More... | |
void | iy_transmitterSinglePol (Matrix &iy, const Index &stokes_dim, const Vector &f_grid, const ArrayOfIndex &sensor_pol, const Verbosity &) |
WORKSPACE METHOD: iy_transmitterSinglePol. More... | |
Variables | |
const Numeric | DEG2RAD |
const Numeric | PI |
const Numeric | RAD2DEG |
const Numeric | SPEED_OF_LIGHT |
Workspace functions related to transmitters and radiative transfer for transmitted signals.
These functions are listed in the doxygen documentation as entries of the file auto_md.h.
Definition in file m_transmitter.cc.
void iy_transmitterMultiplePol | ( | Matrix & | iy, |
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const ArrayOfIndex & | sensor_pol, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iy_transmitterMultiplePol.
Transmitter definition handling multiple polarisations.
The method is intended to be part of iy_transmitter_agenda. It sets iy to describe the transmitted pulses. The polarisation state is taken from sensor_pol, where sensor_pol must contain an element for each frequency in f_grid. The transmitted pulses are set to be of unit magnitude, such as [1,1,0,0].
[out] | iy | WS Output |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | sensor_pol | WS Input |
Definition at line 1554 of file m_transmitter.cc.
References Array< base >::nelem(), ConstVectorView::nelem(), Matrix::resize(), and stokes2pol().
Referenced by iy_transmitterMultiplePol_g().
void iy_transmitterSinglePol | ( | Matrix & | iy, |
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const ArrayOfIndex & | sensor_pol, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iy_transmitterSinglePol.
Transmitter definition involving a single polarisation.
The method is intended to be part of iy_transmitter_agenda. It sets iy to describe the transmitted pulses. The polarisation state is taken from sensor_pol, where sensor_pol must contain a single value. This polarisation state is applied for all frequencies. The transmitted pulses are set to be of unit magnitude, such as [1,1,0,0].
[out] | iy | WS Output |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | sensor_pol | WS Input |
Definition at line 1585 of file m_transmitter.cc.
References Array< base >::nelem(), ConstVectorView::nelem(), Matrix::resize(), and stokes2pol().
Referenced by iy_transmitterSinglePol_g().
void iyRadioLink | ( | 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 Vector & | lat_grid, | ||
const Vector & | lon_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 Vector & | refellipsoid, | ||
const Matrix & | z_surface, | ||
const Index & | cloudbox_on, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Tensor4 & | pnd_field, | ||
const Index & | use_mean_scat_data, | ||
const ArrayOfSingleScatteringData & | scat_data_array, | ||
const Matrix & | particle_masses, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Index & | jacobian_do, | ||
const Agenda & | ppath_agenda, | ||
const Agenda & | ppath_step_agenda, | ||
const Agenda & | propmat_clearsky_agenda, | ||
const Agenda & | iy_transmitter_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 Index & | defocus_method, | ||
const Numeric & | defocus_shift, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iyRadioLink.
Radiative transfer for (active) radio links.
The method assumes that ppath*agenda is set up to return the propagation path between the transmitter and the receiver. The position of the transmitter is given as rte_pos, and the "sensor" is taken as the receiver.
The primary output (y) is the received signal, where the signal transmitted is taken from iy_transmitter_agenda. That is, y is a Stokes vector for each frequency considered. Several other possible measurements quantities, such as the bending angle, can be obtained as the auxiliary data (see lost below).
If it is found that no link can be obtained due to intersection of the ground, all data are set to zero. If no link could be determined for other reasons (due to critical refraction or numerical problems), all data are set to NaN.
This method is just intended for approximative calculations for cases corresponding to relatively simple ray tracing. A detailed, and more exact, treatment of several effects require more advanced calculation approaches. Here a simple geometrical optics approach is followed. See the user guide for details.
Defocusing is a special consideration for radio links. Two algorithms are at hand for estimating defocusing, simply denoted as method 1 and 2: <br> 1: This algorithm is of general character. Defocusing is estimated <br> by making two path calculations with slightly shifted zenith <br> angles. <br> 2: This method is restricted to satellite-to-satellite links, and <br> using a standard expression for such links, based on the <br> vertical gradient of the bending angle. Both methods are described more in detail in the user guide. The argument defocus_shift is used by both methods.
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]. <br> "Particle extinction, summed": The total particle extinction <br> matrix along the path. Size: [nf,ns,ns,np]. <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]. "Impact parameter": As normally defined for GNRSS radio <br> occultations (this equals the propagation path constant, <br> r*n*sin(theta)). Size: [1,1,1,1]. "Free space loss": The total loss due to the inverse square <br> law. Size: [1,1,1,1]. <br> "Free space attenuation": The local attenuation due to the <br> inverse square law. Size: [1,1,1,np]. "Atmospheric loss": Total atmospheric attenuation, reported as <br> the transmission. Size: [nf,1,1,1]. "Defocusing loss": The total loss between the transmitter and <br> receiver due to defocusing. Given as a transmission. <br> Size: [1,1,1,1]. "Faraday rotation": Total rotation [deg] along the path, for <br> each frequency. Size: [nf,1,1,1]. "Faraday speed": The rotation per length unit [deg/m], at each <br> path point and each frequency. Size: [nf,1,1,np]. "Extra path delay": The time delay of the signal [s], compared <br> to the case of propagation through vacuum. Size: [1,1,1,1]. "Bending angle": As normally defined for GNRSS radio <br> occultations, in [deg]. Size: [1,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,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] | 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] | 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] | refellipsoid | WS Input |
[in] | z_surface | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_limits | WS Input |
[in] | pnd_field | WS Input |
[in] | use_mean_scat_data | WS Input |
[in] | scat_data_array | WS Input |
[in] | particle_masses | WS Input |
[in] | iy_aux_vars | WS Input |
[in] | jacobian_do | WS Input |
[in] | ppath_agenda | WS Input |
[in] | ppath_step_agenda | WS Input |
[in] | propmat_clearsky_agenda | WS Input |
[in] | iy_transmitter_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 |
[in] | defocus_method | Generic Input (Default: "1") |
[in] | defocus_shift | Generic Input (Default: "3e-3") |
Definition at line 66 of file m_transmitter.cc.
References bending_angle1d(), Ppath::constant, defocusing_general(), defocusing_sat2sat(), distance2D(), distance3D(), Ppath::end_lstep, Ppath::end_pos, find_first(), get_ppath_abs(), get_ppath_atmvars(), get_ppath_ext(), get_ppath_f(), get_ppath_trans(), get_ppath_trans2(), is_diagonal(), iy_transmitter_agendaExecute(), joker, Ppath::los, Ppath::lstep, mult(), ConstTensor4View::nbooks(), ConstMatrixView::ncols(), ConstTensor3View::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), Ppath::ngroup, Ppath::np, ConstMatrixView::nrows(), ns, PI, Ppath::pos, pos2refell_r(), ppath_agendaExecute(), ppath_what_background(), RAD2DEG, Matrix::resize(), SPEED_OF_LIGHT, Ppath::start_lstep, Ppath::start_pos, and SpeciesTag::TYPE_FREE_ELECTRONS.
Referenced by iyRadioLink_g().
void iyTransmissionStandard | ( | 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 ArrayOfIndex & | cloudbox_limits, | ||
const Tensor4 & | pnd_field, | ||
const Index & | use_mean_scat_data, | ||
const ArrayOfSingleScatteringData & | scat_data_array, | ||
const Matrix & | particle_masses, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Index & | jacobian_do, | ||
const ArrayOfRetrievalQuantity & | jacobian_quantities, | ||
const ArrayOfArrayOfIndex & | jacobian_indices, | ||
const Agenda & | ppath_agenda, | ||
const Agenda & | propmat_clearsky_agenda, | ||
const Agenda & | iy_transmitter_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: iyTransmissionStandard.
Standard method for handling (direct) transmission measurements.
Designed to be part of iy_main_agenda. Treatment of the cloudbox is incorporated (that is, no need to define iy_cloudbox_agenda).
In short, the propagation path is followed until the surface or space is reached. At this point iy_transmitter_agenda is called and the radiative transfer calculations start. That is, the result of the method (iy) is the output of iy_transmitter_agenda multiplied with th transmission from the sensor to either the surface or space.
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]. <br> "Particle extinction, summed": The total particle extinction <br> matrix along the path. Size: [nf,ns,ns,np]. <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]. "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. <br> Size: [nf,ns,1,np]. <br> "Transmission": The transmission matrix from the surface or <br> space, to each propagation path point. The matrix is valid for <br> 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]. "Faraday rotation": Total rotation [deg] along the path, for <br> each frequency. Size: [nf,1,1,1]. "Faraday speed": The rotation per length unit [deg/m], at each <br> path point and each frequency. Size: [nf,1,1,np]. 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,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] | cloudbox_limits | WS Input |
[in] | pnd_field | WS Input |
[in] | use_mean_scat_data | WS Input |
[in] | scat_data_array | WS Input |
[in] | particle_masses | 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] | propmat_clearsky_agenda | WS Input |
[in] | iy_transmitter_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 651 of file m_transmitter.cc.
References diy_from_path_to_rgrids(), ext2trans(), find_first(), FOR_ANALYTICAL_JACOBIANS_DO, get_pointers_for_analytical_jacobians(), get_ppath_abs(), get_ppath_atmvars(), get_ppath_ext(), get_ppath_f(), get_ppath_trans(), get_ppath_trans2(), id_mat(), is_diagonal(), iy_transmitter_agendaExecute(), joker, Ppath::los, Ppath::lstep, mult(), ConstTensor4View::nbooks(), ConstMatrixView::ncols(), ConstTensor3View::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), Ppath::np, ConstMatrixView::nrows(), ns, Ppath::pos, ppath_agendaExecute(), RAD2DEG, SpeciesTag::TYPE_FREE_ELECTRONS, and vmrunitscf().
Referenced by iyTransmissionStandard_g().
|
extern |
|
extern |
Referenced by iyRadioLink().
|
extern |
Referenced by iyRadioLink(), and iyTransmissionStandard().
|
extern |
Referenced by iyRadioLink().