ARTS  2.2.66
m_transmitter.cc File Reference

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
 

Detailed Description

Workspace functions related to transmitters and radiative transfer for transmitted signals.

Author
Patrick Eriksson patri.nosp@m.ck.e.nosp@m.rikss.nosp@m.on@c.nosp@m.halme.nosp@m.rs.s.nosp@m.e
Date
2012-10-31

These functions are listed in the doxygen documentation as entries of the file auto_md.h.

Definition in file m_transmitter.cc.

Function Documentation

◆ iy_transmitterMultiplePol()

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].

Author
Patrick Eriksson
Parameters
[out]iyWS Output
[in]stokes_dimWS Input
[in]f_gridWS Input
[in]sensor_polWS 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().

◆ iy_transmitterSinglePol()

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].

Author
Patrick Eriksson
Parameters
[out]iyWS Output
[in]stokes_dimWS Input
[in]f_gridWS Input
[in]sensor_polWS 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().

◆ iyRadioLink()

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 *.

Author
Patrick Eriksson
Parameters
[in,out]wsWorkspace
[out]iyWS Output
[out]iy_auxWS Output
[out]ppathWS Output
[out]diy_dxWS Output
[in]stokes_dimWS Input
[in]f_gridWS Input
[in]atmosphere_dimWS Input
[in]p_gridWS Input
[in]lat_gridWS Input
[in]lon_gridWS Input
[in]z_fieldWS Input
[in]t_fieldWS Input
[in]vmr_fieldWS Input
[in]abs_speciesWS Input
[in]wind_u_fieldWS Input
[in]wind_v_fieldWS Input
[in]wind_w_fieldWS Input
[in]mag_u_fieldWS Input
[in]mag_v_fieldWS Input
[in]mag_w_fieldWS Input
[in]refellipsoidWS Input
[in]z_surfaceWS Input
[in]cloudbox_onWS Input
[in]cloudbox_limitsWS Input
[in]pnd_fieldWS Input
[in]use_mean_scat_dataWS Input
[in]scat_data_arrayWS Input
[in]particle_massesWS Input
[in]iy_aux_varsWS Input
[in]jacobian_doWS Input
[in]ppath_agendaWS Input
[in]ppath_step_agendaWS Input
[in]propmat_clearsky_agendaWS Input
[in]iy_transmitter_agendaWS Input
[in]iy_agenda_call1WS Input
[in]iy_transmissionWS Input
[in]rte_posWS Input
[in]rte_losWS Input
[in]rte_pos2WS Input
[in]rte_alonglos_vWS Input
[in]ppath_lraytraceWS Input
[in]defocus_methodGeneric Input (Default: "1")
[in]defocus_shiftGeneric 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().

◆ iyTransmissionStandard()

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 *.

Author
Patrick Eriksson
Parameters
[in,out]wsWorkspace
[out]iyWS Output
[out]iy_auxWS Output
[out]ppathWS Output
[out]diy_dxWS Output
[in]stokes_dimWS Input
[in]f_gridWS Input
[in]atmosphere_dimWS Input
[in]p_gridWS Input
[in]z_fieldWS Input
[in]t_fieldWS Input
[in]vmr_fieldWS Input
[in]abs_speciesWS Input
[in]wind_u_fieldWS Input
[in]wind_v_fieldWS Input
[in]wind_w_fieldWS Input
[in]mag_u_fieldWS Input
[in]mag_v_fieldWS Input
[in]mag_w_fieldWS Input
[in]cloudbox_onWS Input
[in]cloudbox_limitsWS Input
[in]pnd_fieldWS Input
[in]use_mean_scat_dataWS Input
[in]scat_data_arrayWS Input
[in]particle_massesWS Input
[in]iy_aux_varsWS Input
[in]jacobian_doWS Input
[in]jacobian_quantitiesWS Input
[in]jacobian_indicesWS Input
[in]ppath_agendaWS Input
[in]propmat_clearsky_agendaWS Input
[in]iy_transmitter_agendaWS Input
[in]iy_agenda_call1WS Input
[in]iy_transmissionWS Input
[in]rte_posWS Input
[in]rte_losWS Input
[in]rte_pos2WS Input
[in]rte_alonglos_vWS Input
[in]ppath_lraytraceWS 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().

Variable Documentation

◆ DEG2RAD

const Numeric DEG2RAD
extern

◆ PI

const Numeric PI
extern

Referenced by iyRadioLink().

◆ RAD2DEG

const Numeric RAD2DEG
extern

◆ SPEED_OF_LIGHT

const Numeric SPEED_OF_LIGHT
extern

Referenced by iyRadioLink().