ARTS
2.2.66
|
Workspace functions related to simulation of cloud radars. More...
#include <cmath>
#include <stdexcept>
#include "arts.h"
#include "auto_md.h"
#include "complex.h"
#include "logic.h"
#include "messages.h"
#include "montecarlo.h"
#include "refraction.h"
#include "rte.h"
#include "sensor.h"
Go to the source code of this file.
Functions | |
void | iyCloudRadar (Workspace &ws, Matrix &iy, ArrayOfTensor4 &iy_aux, Ppath &ppath, 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 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 String &iy_unit, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, 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 Numeric &rte_alonglos_v, const Numeric &ppath_lraytrace, const Numeric &ze_tref, const Verbosity &verbosity) |
WORKSPACE METHOD: iyCloudRadar. More... | |
void | yCloudRadar (Workspace &ws, Vector &y, ArrayOfVector &y_aux, const Index &atmfields_checked, const Index &atmgeom_checked, 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 &cloudbox_checked, const Matrix &sensor_pos, const Matrix &sensor_los, const Index &sensor_checked, const Agenda &iy_main_agenda, const ArrayOfArrayOfIndex &sensor_pol_array, const Vector &range_bins, const Verbosity &) |
WORKSPACE METHOD: yCloudRadar. More... | |
Variables | |
const Numeric | PI |
const Numeric | SPEED_OF_LIGHT |
Workspace functions related to simulation of cloud radars.
These functions are listed in the doxygen documentation as entries of the file auto_md.h.
Definition in file m_cloudradar.cc.
void iyCloudRadar | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfTensor4 & | iy_aux, | ||
Ppath & | ppath, | ||
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 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 String & | iy_unit, | ||
const ArrayOfString & | iy_aux_vars, | ||
const Index & | jacobian_do, | ||
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 Numeric & | rte_alonglos_v, | ||
const Numeric & | ppath_lraytrace, | ||
const Numeric & | ze_tref, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iyCloudRadar.
Simulation of cloud radars, restricted to single scattering.
The WSM treats radar measurements of cloud and precipitation, on the condition that multiple scattering can be ignored. Beside the direct backsacttering, the two-way attenuation by gases and particles is considered. Surface scattering is ignored. Further details are given in AUG.
The method could potentially be used for lidars, but multiple scattering poses here a must stronger constrain for the range of applications.
The method can be used with iyCalc, but not with yCalc. In the later case, use instead yCloudRadar.
The method returns the backscattering for each point of ppath. Several frequencies can be treated in parallel. The size of iy is [ nf*np, stokes_dim ], where nf is the length of f_grid and np is the number of path points. The data are stored in blocks of [ np, stokes_dim ]. That is, all the results for the first frequency occupy the np first rows of iy etc.
The polarisation state of the transmitted pulse is taken from iy_transmitter_agenda*, see further iy_transmitterCloudRadar If the radar transmits several polarisations at the same frequency, you need to handle this by using two frequencies in f_grid, but but these can be almost identical.
The options iy_unit are: <br> "1" : Backscatter coefficient. Unit is 1/(m*sr). Without <br> attenuation, this equals the scattering matrix value for <br> the backward direction. See further AUG. <br> "Ze" : Equivalent reflectivity. I the conversion, "K" is <br> calculated using the refractive index for liquid water, <br> at the temperature defined by ze_tref.
No Jacobian quantities are yet handled.
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> "Backscattering": The un-attenuated backscattering. Unit <br> follows iy_unit. Size: [nf,ns,1,np]. <br> "Transmission": The single-way transmission matrix from the <br> transmitter to each propagation path point. The matrix is <br> valid for the photon direction. Size: [nf,ns,ns,np]. <br> "Round-trip time": The time for the pulse to propagate. For a <br> totally correct result, refraction must be considered (in <br> pppath_agenda). Size: [1,1,1,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].
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[out] | iy_aux | WS Output |
[out] | ppath | 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] | 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_unit | WS Input |
[in] | iy_aux_vars | WS Input |
[in] | jacobian_do | 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_alonglos_v | WS Input |
[in] | ppath_lraytrace | WS Input |
[in] | ze_tref | Generic Input (Default: "273.15") |
Definition at line 61 of file m_cloudradar.cc.
References abs, complex_n_water_liebe93(), Ppath::end_lstep, fac(), get_ppath_abs(), get_ppath_atmvars(), get_ppath_ext(), get_ppath_f(), get_ppath_trans(), get_ppath_trans2(), id_mat(), iy_transmitter_agendaExecute(), joker, Ppath::los, Ppath::lstep, mirror_los(), mult(), ConstTensor4View::nbooks(), ConstMatrixView::ncols(), ConstTensor3View::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), Ppath::ngroup, Ppath::np, ConstMatrixView::nrows(), ns, pha_mat_singleCalc(), PI, ppath_agendaExecute(), Matrix::resize(), and SPEED_OF_LIGHT.
Referenced by iyCloudRadar_g().
void yCloudRadar | ( | Workspace & | ws, |
Vector & | y, | ||
ArrayOfVector & | y_aux, | ||
const Index & | atmgeom_checked, | ||
const Index & | atmfields_checked, | ||
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 & | cloudbox_checked, | ||
const Matrix & | sensor_pos, | ||
const Matrix & | sensor_los, | ||
const Index & | sensor_checked, | ||
const Agenda & | iy_main_agenda, | ||
const ArrayOfArrayOfIndex & | sensor_pol_array, | ||
const Vector & | range_bins, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: yCloudRadar.
Replaces yCalc for cloud radar calculations.
The output format for iy from iyCloudRadar differs from the standard one, and yCalc can not be used for cloud radar simulations. This method works largely as yCalc, but is tailored to handle the output from iyCloudRadar.
The method requires additional information about the sensor, regarding its recieving properties. First of all, recieved polarisation states are taken from sensor_pol_array. Note that this WSV allows to define several measured polarisations for each transmitted siggnal. For example, it is possible to simulate transmission of V and measuring backsacttered V and H.
Secondly, the range averaging is described by range_bins. These bins can either be specified in altitude or two-way travel time. In both case, the edges of the range bins shall be specified. All data (including auxiliary variables) are returned as the average inside the bins. If any bin extands outisde the covered range, zeros are added reflectivities, while for other quantities (e.g. temperature) the averaging is restricted to covered part.
All auxiliary data from iyCloudRadar are handled.
No Jacobian quantities are yet handled.
[in,out] | ws | Workspace |
[out] | y | WS Output |
[out] | y_aux | WS Output |
[in] | atmgeom_checked | WS Input |
[in] | atmfields_checked | WS Input |
[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] | cloudbox_checked | WS Input |
[in] | sensor_pos | WS Input |
[in] | sensor_los | WS Input |
[in] | sensor_checked | WS Input |
[in] | iy_main_agenda | WS Input |
[in] | sensor_pol_array | WS Input |
[in] | range_bins | WS Input |
Definition at line 385 of file m_cloudradar.cc.
References chk_if_in_range(), Ppath::end_lstep, gridpos(), interp(), interpweights(), is_decreasing(), is_increasing(), iy_main_agendaExecute(), joker, Ppath::lstep, max, min, Array< base >::nelem(), ConstVectorView::nelem(), Ppath::ngroup, Ppath::np, ConstMatrixView::nrows(), Ppath::pos, Vector::resize(), SPEED_OF_LIGHT, stokes2pol(), and w().
Referenced by yCloudRadar_g().
|
extern |
Referenced by iyCloudRadar().
|
extern |
Referenced by iyCloudRadar(), and yCloudRadar().