ARTS 2.5.4 (git: 31ce4f0e)
m_montecarlo.cc File Reference

Workspace functions for the solution of cloud-box radiative transfer by Monte Carlo methods. All of these functions refer to 3D calculations. More...

#include <cmath>
#include <ctime>
#include <fstream>
#include <stdexcept>
#include "arts.h"
#include "arts_constants.h"
#include "arts_conversions.h"
#include "auto_md.h"
#include "check_input.h"
#include "lin_alg.h"
#include "logic.h"
#include "math_funcs.h"
#include "matpackI.h"
#include "mc_interp.h"
#include "messages.h"
#include "montecarlo.h"
#include "physics_funcs.h"
#include "ppath.h"
#include "refraction.h"
#include "rng.h"
#include "rte.h"
#include "special_interp.h"
#include "xml_io.h"

Go to the source code of this file.

Functions

void mc_antennaSetGaussian (MCAntenna &mc_antenna, const Numeric &za_sigma, const Numeric &aa_sigma, const Verbosity &)
 WORKSPACE METHOD: mc_antennaSetGaussian. More...
 
void mc_antennaSetGaussianByFWHM (MCAntenna &mc_antenna, const Numeric &za_fwhm, const Numeric &aa_fwhm, const Verbosity &)
 WORKSPACE METHOD: mc_antennaSetGaussianByFWHM. More...
 
void mc_antennaSetPencilBeam (MCAntenna &mc_antenna, const Verbosity &)
 WORKSPACE METHOD: mc_antennaSetPencilBeam. More...
 
void MCGeneral (Workspace &ws, Vector &y, Index &mc_iteration_count, Vector &mc_error, Tensor3 &mc_points, ArrayOfIndex &mc_source_domain, ArrayOfIndex &mc_scat_order, const MCAntenna &mc_antenna, const Vector &f_grid, const Index &f_index, const Matrix &sensor_pos, const Matrix &sensor_los, const Index &stokes_dim, const Index &atmosphere_dim, const Agenda &ppath_step_agenda, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, const Agenda &iy_space_agenda, const Agenda &surface_rtprop_agenda, const Agenda &propmat_clearsky_agenda, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Vector &refellipsoid, const Matrix &z_surface, const Tensor3 &t_field, const Tensor4 &vmr_field, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const ArrayOfArrayOfSingleScatteringData &scat_data, const Index &atmfields_checked, const Index &atmgeom_checked, const Index &scat_data_checked, const Index &cloudbox_checked, const String &iy_unit, const Index &mc_seed, const Numeric &std_err, const Index &max_time, const Index &max_iter, const Index &min_iter, const Numeric &taustep_limit, const Index &l_mc_scat_order, const Index &t_interp_order, const Verbosity &verbosity)
 WORKSPACE METHOD: MCGeneral. More...
 
void MCRadar (Workspace &ws, Vector &y, Vector &mc_error, const MCAntenna &mc_antenna, const Vector &f_grid, const Index &f_index, const Matrix &sensor_pos, const Matrix &sensor_los, const Index &stokes_dim, const Index &atmosphere_dim, const Numeric &ppath_lmax, const Agenda &ppath_step_agenda, const Numeric &ppath_lraytrace, const Agenda &propmat_clearsky_agenda, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Vector &refellipsoid, const Matrix &z_surface, const Tensor3 &t_field, const Tensor4 &vmr_field, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const ArrayOfArrayOfSingleScatteringData &scat_data, const Vector &mc_y_tx, const Vector &range_bins, const Index &atmfields_checked, const Index &atmgeom_checked, const Index &scat_data_checked, const Index &cloudbox_checked, const String &iy_unit_radar, const Index &mc_max_scatorder, const Index &mc_seed, const Index &mc_max_iter, const Numeric &ze_tref, const Numeric &k2, const Index &t_interp_order, const Verbosity &verbosity)
 WORKSPACE METHOD: MCRadar. More...
 
void MCSetSeedFromTime (Index &mc_seed, const Verbosity &)
 WORKSPACE METHOD: MCSetSeedFromTime. More...
 

Variables

constexpr Numeric DEG2RAD =Conversion::deg2rad(1)
 
constexpr Numeric RAD2DEG =Conversion::rad2deg(1)
 
constexpr Numeric PI =Constant::pi
 
constexpr Numeric BOLTZMAN_CONST =Constant::boltzmann_constant
 
constexpr Numeric SPEED_OF_LIGHT =Constant::speed_of_light
 

Detailed Description

Workspace functions for the solution of cloud-box radiative transfer by Monte Carlo methods. All of these functions refer to 3D calculations.

Author
Cory Davis cory@.nosp@m.met..nosp@m.ed.ac.nosp@m..uk
Date
2003-06-19

Definition in file m_montecarlo.cc.

Function Documentation

◆ mc_antennaSetGaussian()

void mc_antennaSetGaussian ( MCAntenna mc_antenna,
const Numeric za_sigma,
const Numeric aa_sigma,
const Verbosity verbosity 
)

WORKSPACE METHOD: mc_antennaSetGaussian.

Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.

The gaussian antenna pattern is determined by za_sigma and aa_sigma*, which represent the standard deviations in the uncorrelated bivariate normal distribution.

Author
Cory Davis
Parameters
[out]mc_antennaWS Output
[in]za_sigmaGeneric Input
[in]aa_sigmaGeneric Input

Definition at line 66 of file m_montecarlo.cc.

References MCAntenna::set_gaussian().

Referenced by mc_antennaSetGaussian_g().

◆ mc_antennaSetGaussianByFWHM()

void mc_antennaSetGaussianByFWHM ( MCAntenna mc_antenna,
const Numeric za_fwhm,
const Numeric aa_fwhm,
const Verbosity verbosity 
)

WORKSPACE METHOD: mc_antennaSetGaussianByFWHM.

Makes mc_antenna (used by MCGeneral) a 2D Gaussian pattern.

The gaussian antenna pattern is determined by za_fwhm and aa_fwhm*, which represent the full width half maximum (FWHM) of the antenna response, in the zenith and azimuthal planes.

Author
Cory Davis
Parameters
[out]mc_antennaWS Output
[in]za_fwhmGeneric Input
[in]aa_fwhmGeneric Input

Definition at line 75 of file m_montecarlo.cc.

References MCAntenna::set_gaussian_fwhm().

Referenced by mc_antennaSetGaussianByFWHM_g().

◆ mc_antennaSetPencilBeam()

void mc_antennaSetPencilBeam ( MCAntenna mc_antenna,
const Verbosity verbosity 
)

WORKSPACE METHOD: mc_antennaSetPencilBeam.

Makes mc_antenna (used by MCGeneral) a pencil beam.

This WSM makes the subsequent MCGeneral WSM perform pencil beam RT calculations.

Author
Cory Davis
Parameters
[out]mc_antennaWS Output

Definition at line 84 of file m_montecarlo.cc.

References MCAntenna::set_pencil_beam().

Referenced by mc_antennaSetPencilBeam_g().

◆ MCGeneral()

void MCGeneral ( Workspace ws,
Vector y,
Index mc_iteration_count,
Vector mc_error,
Tensor3 mc_points,
ArrayOfIndex mc_source_domain,
ArrayOfIndex mc_scat_order,
const MCAntenna mc_antenna,
const Vector f_grid,
const Index f_index,
const Matrix sensor_pos,
const Matrix sensor_los,
const Index stokes_dim,
const Index atmosphere_dim,
const Agenda ppath_step_agenda,
const Numeric ppath_lmax,
const Numeric ppath_lraytrace,
const Agenda iy_space_agenda,
const Agenda surface_rtprop_agenda,
const Agenda propmat_clearsky_agenda,
const Vector p_grid,
const Vector lat_grid,
const Vector lon_grid,
const Tensor3 z_field,
const Vector refellipsoid,
const Matrix z_surface,
const Tensor3 t_field,
const Tensor4 vmr_field,
const Index cloudbox_on,
const ArrayOfIndex cloudbox_limits,
const Tensor4 pnd_field,
const ArrayOfArrayOfSingleScatteringData scat_data,
const Index atmfields_checked,
const Index atmgeom_checked,
const Index scat_data_checked,
const Index cloudbox_checked,
const String iy_unit,
const Index mc_seed,
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 l_mc_scat_order,
const Index t_interp_order,
const Verbosity verbosity 
)

WORKSPACE METHOD: MCGeneral.

A generalised 3D reversed Monte Carlo radiative algorithm, that allows for 2D antenna patterns, surface reflection and arbitrary sensor positions.

The main output variables y and mc_error represent the Stokes vector integrated over the antenna function, and the estimated error in this vector, respectively.

The WSV mc_max_iter describes the maximum number of ‘photons’ used in the simulation (more photons means smaller mc_error). mc_std_err* is the desired value of mc_error. mc_max_time is the maximum allowed number of seconds for MCGeneral. The method will terminate once any of the max_iter, std_err, max_time criteria are met. If negative values are given for these parameters then it is ignored.

The WSV mc_min_iter sets the minimum number of photons to apply before the condition set by mc_std_err is considered. Values of mc_min_iter below 100 are not accepted.

Only "1" and "RJBT" are allowed for iy_unit. The value of mc_error* follows the selection for iy_unit (both for in- and output.

Author
Cory Davis
Parameters
[in,out]wsWorkspace
[out]yWS Output
[out]mc_iteration_countWS Output
[out]mc_errorWS Output
[out]mc_pointsWS Output
[out]mc_source_domainWS Output
[out]mc_scat_orderWS Output
[in]mc_antennaWS Input
[in]f_gridWS Input
[in]f_indexWS Input
[in]sensor_posWS Input
[in]sensor_losWS Input
[in]stokes_dimWS Input
[in]atmosphere_dimWS Input
[in]ppath_step_agendaWS Input
[in]ppath_lmaxWS Input
[in]ppath_lraytraceWS Input
[in]iy_space_agendaWS Input
[in]surface_rtprop_agendaWS Input
[in]propmat_clearsky_agendaWS Input
[in]p_gridWS Input
[in]lat_gridWS Input
[in]lon_gridWS Input
[in]z_fieldWS Input
[in]refellipsoidWS Input
[in]z_surfaceWS Input
[in]t_fieldWS Input
[in]vmr_fieldWS Input
[in]cloudbox_onWS Input
[in]cloudbox_limitsWS Input
[in]pnd_fieldWS Input
[in]scat_dataWS Input
[in]atmfields_checkedWS Input
[in]atmgeom_checkedWS Input
[in]scat_data_checkedWS Input
[in]cloudbox_checkedWS Input
[in]iy_unitWS Input
[in]mc_seedWS Input
[in]mc_std_errWS Input
[in]mc_max_timeWS Input
[in]mc_max_iterWS Input
[in]mc_min_iterWS Input
[in]mc_taustep_limitWS Input
[in]l_mc_scat_orderGeneric Input (Default: "11")
[in]t_interp_orderGeneric Input (Default: "1")

Definition at line 89 of file m_montecarlo.cc.

References ARTS_ASSERT, BOLTZMAN_CONST, chk_if_in_range(), CREATE_OUT0, Rng::draw(), MCAntenna::draw_los(), Constant::e, ConstMatrixView::empty(), Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, id_mat(), invrayjean(), nonstd::isnan(), iy_space_agendaExecute(), joker, max, mcPathTraceGeneral(), min, mult(), ConstTensor4View::nbooks(), ConstMatrixView::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), Ppath::np, ConstMatrixView::nrows(), planck(), q, PartitionFunctions::Q(), Vector::resize(), Tensor3::resize(), rotmat_enu(), rotmat_stokes(), Sample_los(), Rng::seed(), SPEED_OF_LIGHT, sqrt(), and surface_rtprop_agendaExecute().

Referenced by iyMC(), and MCGeneral_g().

◆ MCRadar()

void MCRadar ( Workspace ws,
Vector y,
Vector mc_error,
const MCAntenna mc_antenna,
const Vector f_grid,
const Index f_index,
const Matrix sensor_pos,
const Matrix sensor_los,
const Index stokes_dim,
const Index atmosphere_dim,
const Numeric ppath_lmax,
const Agenda ppath_step_agenda,
const Numeric ppath_lraytrace,
const Agenda propmat_clearsky_agenda,
const Vector p_grid,
const Vector lat_grid,
const Vector lon_grid,
const Tensor3 z_field,
const Vector refellipsoid,
const Matrix z_surface,
const Tensor3 t_field,
const Tensor4 vmr_field,
const Index cloudbox_on,
const ArrayOfIndex cloudbox_limits,
const Tensor4 pnd_field,
const ArrayOfArrayOfSingleScatteringData scat_data,
const Vector mc_y_tx,
const Vector range_bins,
const Index atmfields_checked,
const Index atmgeom_checked,
const Index scat_data_checked,
const Index cloudbox_checked,
const String iy_unit_radar,
const Index mc_max_scatorder,
const Index mc_seed,
const Index mc_max_iter,
const Numeric ze_tref,
const Numeric k2,
const Index t_interp_order,
const Verbosity verbosity 
)

WORKSPACE METHOD: MCRadar.

A radar 3D foward Monte Carlo radiative algorithm, that allows for 2D antenna patterns and arbitrary sensor positions. Surface reflections are currently ignored.

The main output variable y and mc_error represent the radar reflectivity integrated over the antenna function, and the estimated error in this vector, respectively.

Unlike with yRadar, the range bins gives the boundaries of the range bins as either round-trip time or distance from radar.

The WSV mc_y_tx gives the polarization state of the transmitter.

The WSV mc_max_scatorder prescribes the maximum scattering order to consider, after which ‘photon’-tracing will be terminated. A value of one calculates only single scattering.

The WSV mc_max_iter describes the maximum number of ‘photons’ used in the simulation (more photons means smaller mc_error). The method will terminate once the max_iter criterium is met. If negative values are given for these parameters then it is ignored.

Here "1" and "Ze" are the allowed options for iy_unit_radar. The value of mc_error follows the selection for iy_unit_radar (both for in- and output. See yRadar for details of the units.

Author
Ian S. Adams
Parameters
[in,out]wsWorkspace
[out]yWS Output
[out]mc_errorWS Output
[in]mc_antennaWS Input
[in]f_gridWS Input
[in]f_indexWS Input
[in]sensor_posWS Input
[in]sensor_losWS Input
[in]stokes_dimWS Input
[in]atmosphere_dimWS Input
[in]ppath_lmaxWS Input
[in]ppath_step_agendaWS Input
[in]ppath_lraytraceWS Input
[in]propmat_clearsky_agendaWS Input
[in]p_gridWS Input
[in]lat_gridWS Input
[in]lon_gridWS Input
[in]z_fieldWS Input
[in]refellipsoidWS Input
[in]z_surfaceWS Input
[in]t_fieldWS Input
[in]vmr_fieldWS Input
[in]cloudbox_onWS Input
[in]cloudbox_limitsWS Input
[in]pnd_fieldWS Input
[in]scat_dataWS Input
[in]mc_y_txWS Input
[in]range_binsWS Input
[in]atmfields_checkedWS Input
[in]atmgeom_checkedWS Input
[in]scat_data_checkedWS Input
[in]cloudbox_checkedWS Input
[in]iy_unit_radarWS Input
[in]mc_max_scatorderWS Input
[in]mc_seedWS Input
[in]mc_max_iterWS Input
[in]ze_trefGeneric Input (Default: "273.15")
[in]k2Generic Input (Default: "-1")
[in]t_interp_orderGeneric Input (Default: "1")

Definition at line 552 of file m_montecarlo.cc.

References ANTENNA_TYPE_GAUSSIAN, ARTS_ASSERT, MCAntenna::atype, chk_if_in_range(), CREATE_OUT0, Rng::draw(), MCAntenna::draw_los(), Constant::e, Ppath::end_lstep, fac(), get_ppath_transmat(), is_anyptype_nonTotRan(), is_increasing(), nonstd::isnan(), joker, Ppath::lstep, max, mcPathTraceRadar(), min, mirror_los(), mult(), ConstTensor4View::nbooks(), ConstMatrixView::ncols(), ConstVectorView::nelem(), Ppath::ngroup, Ppath::np, pha_mat_Bulk(), pha_mat_NScatElems(), pha_mat_ScatSpecBulk(), PI, ppathFromRtePos2(), Vector::resize(), MCAntenna::return_los(), rotmat_enu(), rotmat_stokes(), rte_losGeometricFromRtePosToRtePos2(), Sample_los_uniform(), Rng::seed(), SPEED_OF_LIGHT, sqrt(), transpose(), and ze_cfac().

Referenced by MCRadar_g().

◆ MCSetSeedFromTime()

void MCSetSeedFromTime ( Index mc_seed,
const Verbosity verbosity 
)

WORKSPACE METHOD: MCSetSeedFromTime.

Sets the value of mc_seed from system time

Author
Cory Davis
Parameters
[out]mc_seedWS Output

Definition at line 1100 of file m_montecarlo.cc.

Referenced by iyMC(), and MCSetSeedFromTime_g().

Variable Documentation

◆ BOLTZMAN_CONST

constexpr Numeric BOLTZMAN_CONST =Constant::boltzmann_constant
inlineconstexpr

Definition at line 58 of file m_montecarlo.cc.

Referenced by MCGeneral(), and xsec_continuum_tag().

◆ DEG2RAD

constexpr Numeric DEG2RAD =Conversion::deg2rad(1)
inlineconstexpr

Definition at line 55 of file m_montecarlo.cc.

◆ PI

constexpr Numeric PI =Constant::pi
inlineconstexpr

Definition at line 57 of file m_montecarlo.cc.

Referenced by MCRadar().

◆ RAD2DEG

constexpr Numeric RAD2DEG =Conversion::rad2deg(1)
inlineconstexpr

Definition at line 56 of file m_montecarlo.cc.

◆ SPEED_OF_LIGHT

constexpr Numeric SPEED_OF_LIGHT =Constant::speed_of_light
inlineconstexpr

Definition at line 59 of file m_montecarlo.cc.

Referenced by MCGeneral(), and MCRadar().