#include <stdexcept>
#include <cmath>
#include "messages.h"
#include "arts.h"
#include "ppath.h"
#include "matpackI.h"
#include "special_interp.h"
#include "check_input.h"
#include "rte.h"
#include "lin_alg.h"
#include "logic.h"
#include "optproperties.h"
#include "physics_funcs.h"
#include "xml_io.h"
#include "rng.h"
#include "scatrte.h"
Go to the source code of this file.
Functions | |
void | clear_rt_vars_at_gp (Workspace &ws, MatrixView &ext_mat_mono, VectorView &abs_vec_mono, Numeric &temperature, const Agenda &opt_prop_gas_agenda, const Agenda &abs_scalar_gas_agenda, const Index &f_index, const GridPos &gp_p, const GridPos &gp_lat, const GridPos &gp_lon, const ConstVectorView p_grid, const ConstVectorView lat_grid, const ConstVectorView lon_grid, const ConstTensor3View t_field, const ConstTensor4View vmr_field) |
clear_rt_vars_at_gp | |
void | cloud_atm_vars_by_gp (VectorView pressure, VectorView temperature, MatrixView vmr, MatrixView pnd, const ArrayOfGridPos &gp_p, const ArrayOfGridPos &gp_lat, const ArrayOfGridPos &gp_lon, const ArrayOfIndex &cloudbox_limits, const ConstVectorView p_grid_cloud, const ConstVectorView lat_grid_cloud, const ConstVectorView lon_grid_cloud, const ConstTensor3View t_field_cloud, const ConstTensor4View vmr_field_cloud, const ConstTensor4View pnd_field) |
cloud_atm_vars_by_gp | |
void | Cloudbox_ppathCalc (Workspace &ws, Ppath &ppath, Ppath &ppath_step, const Agenda &ppath_step_agenda, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Matrix &r_geoid, const Matrix &z_surface, const ArrayOfIndex &cloudbox_limits, const Vector &rte_pos, const Vector &rte_los, const Index &z_field_is_1D) |
Cloudbox_ppath_calc. | |
void | Cloudbox_ppath_rteCalc (Workspace &ws, Ppath &ppathcloud, Ppath &ppath, Ppath &ppath_step, Vector &rte_pos, Vector &rte_los, Vector &cum_l_step, ArrayOfMatrix &TArray, ArrayOfMatrix &ext_matArray, ArrayOfVector &abs_vecArray, Vector &t_ppath, Tensor3 &ext_mat, Matrix &abs_vec, Numeric &rte_pressure, Numeric &rte_temperature, Vector &rte_vmr_list, Matrix &iy, Matrix &pnd_ppath, const Agenda &ppath_step_agenda, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Matrix &r_geoid, const Matrix &z_surface, const ArrayOfIndex &cloudbox_limits, const Index &record_ppathcloud, const Index &record_ppath, const Agenda &opt_prop_gas_agenda, const Agenda &abs_scalar_gas_agenda, const Index &f_index, const Index &stokes_dim, const Tensor3 &t_field, const Tensor4 &vmr_field, const Agenda &rte_agenda, const Agenda &iy_space_agenda, const Agenda &surface_prop_agenda, const Agenda &iy_cloudbox_agenda, const Vector &f_grid, const Index &photon_number, const Index &scattering_order, const Tensor4 &pnd_field, const ArrayOfSingleScatteringData &scat_data_mono, const Index &z_field_is_1D) |
void | cloudbox_ppath_start_stepping (Ppath &ppath, const Index &atmosphere_dim, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstMatrixView r_geoid, ConstMatrixView z_surface, ConstVectorView rte_pos, ConstVectorView rte_los, const Index &z_field_is_1D) |
void | cloudy_rt_vars_at_gp (Workspace &ws, MatrixView &ext_mat_mono, VectorView &abs_vec_mono, VectorView &pnd_vec, Numeric &temperature, const Agenda &opt_prop_gas_agenda, const Agenda &abs_scalar_gas_agenda, const Index &stokes_dim, const Index &f_index, const GridPos gp_p, const GridPos gp_lat, const GridPos gp_lon, const ConstVectorView p_grid_cloud, const ConstVectorView lat_grid_cloud, const ConstVectorView lon_grid_cloud, const ConstTensor3View t_field_cloud, const ConstTensor4View vmr_field_cloud, const Tensor4 &pnd_field, const ArrayOfSingleScatteringData &scat_data_mono, const ArrayOfIndex &cloudbox_limits, const Vector &rte_los) |
cloudy_rt_vars_at_gp | |
void | cum_l_stepCalc (Vector &cum_l_step, const Ppath &ppath) |
cum_l_stepCalc | |
void | findZ11max (Vector &Z11maxvector, const ArrayOfSingleScatteringData &scat_data_mono) |
findZ11max | |
bool | is_anyptype30 (const ArrayOfSingleScatteringData &scat_data_mono) |
is_anyptype30 | |
void | iwp_cloud_opt_pathCalc (Workspace &ws, Numeric &iwp, Numeric &cloud_opt_path, const Vector &rte_pos, const Vector &rte_los, const Agenda &ppath_step_agenda, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Matrix &r_geoid, const Matrix &z_surface, const Tensor3 &z_field, const Tensor3 &t_field, const Tensor4 &vmr_field, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const ArrayOfSingleScatteringData &scat_data_mono, const Vector &particle_masses) |
iwp_cloud_opt_pathCalc | |
void | matrix_exp_p30 (MatrixView &M, ConstMatrixView &A) |
matrix_exp_p30 | |
void | mcPathTrace (Workspace &ws, MatrixView &evol_op, VectorView &abs_vec_mono, Numeric &temperature, MatrixView &ext_mat_mono, Rng &rng, Vector &rte_pos, Vector &rte_los, Vector &pnd_vec, Numeric &g, bool &left_cloudbox, const Agenda &opt_prop_gas_agenda, const Agenda &abs_scalar_gas_agenda, const Index &stokes_dim, const Index &f_index, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Matrix &r_geoid, const Matrix &z_surface, const Tensor3 &t_field, const Tensor4 &vmr_field, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const ArrayOfSingleScatteringData &scat_data_mono, const Index &z_field_is_1D) |
mcPathTrace | |
void | mcPathTraceGeneral (Workspace &ws, MatrixView &evol_op, Vector &abs_vec_mono, Numeric &temperature, MatrixView &ext_mat_mono, Rng &rng, Vector &rte_pos, Vector &rte_los, Vector &pnd_vec, Numeric &g, Ppath &ppath_step, Index &termination_flag, bool &inside_cloud, const Agenda &opt_prop_gas_agenda, const Agenda &abs_scalar_gas_agenda, const Index &stokes_dim, const Index &f_index, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Matrix &r_geoid, const Matrix &z_surface, const Tensor3 &t_field, const Tensor4 &vmr_field, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const ArrayOfSingleScatteringData &scat_data_mono, const Index &z_field_is_1D) |
mcPathTraceGeneral | |
void | mcPathTraceIPA (Workspace &ws, MatrixView &evol_op, Vector &abs_vec_mono, Numeric &temperature, MatrixView &ext_mat_mono, Rng &rng, Vector &rte_pos, Vector &rte_los, Vector &pnd_vec, Numeric &g, Index &termination_flag, bool &inside_cloud, const Agenda &opt_prop_gas_agenda, const Agenda &abs_scalar_gas_agenda, const Index &stokes_dim, const Index &f_index, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Matrix &r_geoid, const Matrix &z_surface, const Tensor3 &t_field, const Tensor4 &vmr_field, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const ArrayOfSingleScatteringData &scat_data_mono, const Index &z_field_is_1D, const Ppath &ppath) |
mcPathTraceIPA | |
void | montecarloGetIncoming (Workspace &ws, Matrix &iy, Vector &rte_pos, Vector &rte_los, Ppath &ppath, const Agenda &ppath_step_agenda, const Agenda &rte_agenda, const Agenda &iy_space_agenda, const Agenda &surface_prop_agenda, const Agenda &iy_cloudbox_agenda, 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 Matrix &r_geoid, const Matrix &z_surface, const ArrayOfIndex &cloudbox_limits, const Index &atmosphere_dim, const Vector &f_grid, const Index &stokes_dim) |
montecarloGetIncoming | |
Numeric | opt_depth_calc (Workspace &ws, Tensor3 &ext_mat, Matrix &abs_vec, Numeric &rte_pressure, Numeric &rte_temperature, Vector &rte_vmr_list, const Ppath &ppath, const Agenda &opt_prop_gas_agenda, const Agenda &abs_scalar_gas_agenda, const Index &f_index, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &t_field, const Tensor4 &vmr_field, const Index &atmosphere_dim) |
opt_depth_calc | |
void | opt_propCalc (MatrixView &K, VectorView &K_abs, const Numeric za, const Numeric aa, const ArrayOfSingleScatteringData &scat_data_mono, const Index &stokes_dim, const VectorView &pnd_vec, const Numeric &rte_temperature) |
opt_propCalc | |
void | opt_propExtract (MatrixView &K_spt, VectorView &K_abs_spt, const SingleScatteringData &scat_data, const Numeric &za, const Numeric &aa, const Numeric &rte_temperature, const Index &stokes_dim) |
Extract ext_mat_mono and abs_vec_mono from a monochromatic SingleScatteringData object. | |
void | pha_mat_singleCalc (MatrixView &Z, Numeric za_sca, Numeric aa_sca, Numeric za_inc, Numeric aa_inc, const ArrayOfSingleScatteringData &scat_data_mono, const Index &stokes_dim, const VectorView &pnd_vec, const Numeric &rte_temperature) |
pha_mat_singleCalc | |
void | pha_mat_singleExtract (MatrixView &Z_spt, const SingleScatteringData &scat_data, const Numeric &za_sca, const Numeric &aa_sca, const Numeric &za_inc, const Numeric &aa_inc, const Numeric &rte_temperature, const Index &stokes_dim) |
Extract the phase matrix from a monochromatic SingleScatteringData object. | |
void | Sample_los (VectorView &new_rte_los, Numeric &g_los_csc_theta, MatrixView &Z, Rng &rng, const VectorView &rte_los, const ArrayOfSingleScatteringData &scat_data_mono, const Index &stokes_dim, const VectorView &pnd_vec, const bool &anyptype30, const VectorView &Z11maxvector, Numeric Csca, const Numeric &rte_temperature) |
Sample_los. | |
void | Sample_ppathlengthLOS (Numeric &pathlength, Numeric &g, Rng &rng, const ArrayOfMatrix &TArray, const ConstVectorView &cum_l_step) |
Sample_ppathlengthLOS. | |
void | TArrayCalc (Workspace &ws, ArrayOfMatrix &TArray, ArrayOfMatrix &ext_matArray, ArrayOfVector &abs_vecArray, Vector &t_ppath, Tensor3 &ext_mat, Matrix &abs_vec, Numeric &rte_pressure, Numeric &rte_temperature, Vector &rte_vmr_list, Matrix &pnd_ppath, const Ppath &ppath, const Agenda &opt_prop_gas_agenda, const Agenda &abs_scalar_gas_agenda, const Index &f_index, const Index &stokes_dim, const ConstVectorView &p_grid_cloud, const ConstVectorView &lat_grid_cloud, const ConstVectorView &lon_grid_cloud, const ConstTensor3View &t_field_cloud, const ConstTensor4View &vmr_field_cloud, const Tensor4 &pnd_field, const ArrayOfSingleScatteringData &scat_data_mono, const ArrayOfIndex &cloudbox_limits) |
Variables | |
const Numeric | DEG2RAD |
const Numeric | RAD2DEG |
const Numeric | PI |
void clear_rt_vars_at_gp | ( | Workspace & | ws, | |
MatrixView & | ext_mat_mono, | |||
VectorView & | abs_vec_mono, | |||
Numeric & | temperature, | |||
const Agenda & | opt_prop_gas_agenda, | |||
const Agenda & | abs_scalar_gas_agenda, | |||
const Index & | f_index, | |||
const GridPos & | gp_p, | |||
const GridPos & | gp_lat, | |||
const GridPos & | gp_lon, | |||
const ConstVectorView | p_grid, | |||
const ConstVectorView | lat_grid, | |||
const ConstVectorView | lon_grid, | |||
const ConstTensor3View | t_field, | |||
const ConstTensor4View | vmr_field | |||
) |
clear_rt_vars_at_gp
Calculates a bunch of atmospheric variables at the end of a ppath.
Definition at line 57 of file montecarlo.cc.
References abs_scalar_gas_agendaExecute(), interp_atmfield_by_itw(), interp_atmfield_gp2itw(), interpweights(), itw2p(), joker, ConstTensor4View::nbooks(), ns, and opt_prop_gas_agendaExecute().
Referenced by mcPathTraceGeneral(), and mcPathTraceIPA().
void cloud_atm_vars_by_gp | ( | VectorView | pressure, | |
VectorView | temperature, | |||
MatrixView | vmr, | |||
MatrixView | pnd, | |||
const ArrayOfGridPos & | gp_p, | |||
const ArrayOfGridPos & | gp_lat, | |||
const ArrayOfGridPos & | gp_lon, | |||
const ArrayOfIndex & | cloudbox_limits, | |||
const ConstVectorView | p_grid_cloud, | |||
const ConstVectorView | lat_grid_cloud, | |||
const ConstVectorView | lon_grid_cloud, | |||
const ConstTensor3View | t_field_cloud, | |||
const ConstTensor4View | vmr_field_cloud, | |||
const ConstTensor4View | pnd_field | |||
) |
cloud_atm_vars_by_gp
Returns pressure, temperature, VMRs and PNDs, at points corresponding to arrays of gridpositions gp_p, gp_lat, and gp_lon. The field and grid input variables all span only the cloudbox
pressure | Output: a vector of pressures | |
temperature | Output: a vector of temperatures | |
vmr | Output: a n_species by n matrix of VMRs | |
pnd | Output: a n_ptypes by n matrix of VMRs | |
gp_p | an array of pressre gridpoints | |
gp_lat | an array of latitude gridpoints | |
gp_lon | an array of longitude gridpoints | |
cloudbox_limits | the WSV | |
p_grid_cloud | the subset of the p_grid corresponding to the cloudbox | |
lat_grid_cloud | the subset of the lat_grid corresponding to the cloudbox | |
lon_grid_cloud | the subset of the lon_grid corresponding to the cloudbox | |
t_field_cloud | the t_field within the cloudbox | |
vmr_field_cloud | the t_field within the cloudbox | |
pnd_field | The WSV |
Definition at line 243 of file montecarlo.cc.
References fix_gridpos_at_boundary(), interp_atmfield_by_itw(), interp_atmfield_gp2itw(), interpweights(), itw2p(), joker, ConstTensor4View::nbooks(), ConstVectorView::nelem(), Array< base >::nelem(), and ns.
Referenced by cloudy_rt_vars_at_gp(), iwp_cloud_opt_pathCalc(), and TArrayCalc().
void Cloudbox_ppath_rteCalc | ( | Workspace & | ws, | |
Ppath & | ppathcloud, | |||
Ppath & | ppath, | |||
Ppath & | ppath_step, | |||
Vector & | rte_pos, | |||
Vector & | rte_los, | |||
Vector & | cum_l_step, | |||
ArrayOfMatrix & | TArray, | |||
ArrayOfMatrix & | ext_matArray, | |||
ArrayOfVector & | abs_vecArray, | |||
Vector & | t_ppath, | |||
Tensor3 & | ext_mat, | |||
Matrix & | abs_vec, | |||
Numeric & | rte_pressure, | |||
Numeric & | rte_temperature, | |||
Vector & | rte_vmr_list, | |||
Matrix & | iy, | |||
Matrix & | pnd_ppath, | |||
const Agenda & | ppath_step_agenda, | |||
const Index & | atmosphere_dim, | |||
const Vector & | p_grid, | |||
const Vector & | lat_grid, | |||
const Vector & | lon_grid, | |||
const Tensor3 & | z_field, | |||
const Matrix & | r_geoid, | |||
const Matrix & | z_surface, | |||
const ArrayOfIndex & | cloudbox_limits, | |||
const Index & | record_ppathcloud, | |||
const Index & | record_ppath, | |||
const Agenda & | opt_prop_gas_agenda, | |||
const Agenda & | abs_scalar_gas_agenda, | |||
const Index & | f_index, | |||
const Index & | stokes_dim, | |||
const Tensor3 & | t_field, | |||
const Tensor4 & | vmr_field, | |||
const Agenda & | rte_agenda, | |||
const Agenda & | iy_space_agenda, | |||
const Agenda & | surface_prop_agenda, | |||
const Agenda & | iy_cloudbox_agenda, | |||
const Vector & | f_grid, | |||
const Index & | photon_number, | |||
const Index & | scattering_order, | |||
const Tensor4 & | pnd_field, | |||
const ArrayOfSingleScatteringData & | scat_data_mono, | |||
const Index & | z_field_is_1D | |||
) |
void cloudbox_ppath_start_stepping | ( | Ppath & | ppath, | |
const Index & | atmosphere_dim, | |||
ConstVectorView | p_grid, | |||
ConstVectorView | lat_grid, | |||
ConstVectorView | lon_grid, | |||
ConstTensor3View | z_field, | |||
ConstMatrixView | r_geoid, | |||
ConstMatrixView | z_surface, | |||
ConstVectorView | rte_pos, | |||
ConstVectorView | rte_los, | |||
const Index & | z_field_is_1D | |||
) |
Definition at line 798 of file montecarlo.cc.
References GridPos::fd, Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, gridpos(), gridpos_check_fd(), GridPos::idx, interp(), interpweights(), joker, Ppath::los, ConstVectorView::nelem(), Ppath::pos, ppath_init_structure(), Ppath::z, and z_at_latlon().
Referenced by Cloudbox_ppathCalc(), and mcPathTrace().
void Cloudbox_ppathCalc | ( | Workspace & | ws, | |
Ppath & | ppath, | |||
Ppath & | ppath_step, | |||
const Agenda & | ppath_step_agenda, | |||
const Index & | atmosphere_dim, | |||
const Vector & | p_grid, | |||
const Vector & | lat_grid, | |||
const Vector & | lon_grid, | |||
const Tensor3 & | z_field, | |||
const Matrix & | r_geoid, | |||
const Matrix & | z_surface, | |||
const ArrayOfIndex & | cloudbox_limits, | |||
const Vector & | rte_pos, | |||
const Vector & | rte_los, | |||
const Index & | z_field_is_1D | |||
) |
Cloudbox_ppath_calc.
This function performs the same task as ppath_calc, except inside the cloudbox. It has been derived from the clear sky version. See the online help (arts -d FUNCTION_NAME) for a description of parameters.
Definition at line 335 of file montecarlo.cc.
References Ppath::background, chk_if_in_range(), chk_if_over_0(), chk_vector_length(), cloudbox_ppath_start_stepping(), Ppath::constant, Ppath::geom_tan_pos, Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, joker, Ppath::l_step, Ppath::los, Ppath::method, min, ConstVectorView::nelem(), Array< base >::nelem(), Ppath::np, ConstTensor3View::npages(), out2, out3, Ppath::pos, ppath_init_structure(), ppath_set_background(), ppath_step_agendaExecute(), ppath_what_background(), Ppath::refraction, Vector::resize(), Ppath::tan_pos, WriteXML(), and Ppath::z.
Referenced by Cloudbox_ppath_rteCalc().
void cloudy_rt_vars_at_gp | ( | Workspace & | ws, | |
MatrixView & | ext_mat_mono, | |||
VectorView & | abs_vec_mono, | |||
VectorView & | pnd_vec, | |||
Numeric & | temperature, | |||
const Agenda & | opt_prop_gas_agenda, | |||
const Agenda & | abs_scalar_gas_agenda, | |||
const Index & | stokes_dim, | |||
const Index & | f_index, | |||
const GridPos | gp_p, | |||
const GridPos | gp_lat, | |||
const GridPos | gp_lon, | |||
const ConstVectorView | p_grid_cloud, | |||
const ConstVectorView | lat_grid_cloud, | |||
const ConstVectorView | lon_grid_cloud, | |||
const ConstTensor3View | t_field_cloud, | |||
const ConstTensor4View | vmr_field_cloud, | |||
const Tensor4 & | pnd_field, | |||
const ArrayOfSingleScatteringData & | scat_data_mono, | |||
const ArrayOfIndex & | cloudbox_limits, | |||
const Vector & | rte_los | |||
) |
cloudy_rt_vars_at_gp
Calculates a bunch of atmospheric variables at the end of a ppath.
Definition at line 137 of file montecarlo.cc.
References abs_scalar_gas_agendaExecute(), cloud_atm_vars_by_gp(), joker, ConstTensor4View::nbooks(), ns, opt_prop_gas_agendaExecute(), and opt_propCalc().
Referenced by mcPathTrace(), mcPathTraceGeneral(), and mcPathTraceIPA().
cum_l_stepCalc
Returns a vector of cumulative pathlengths for a given ppath by adding ppath.l_step
Definition at line 907 of file montecarlo.cc.
References Ppath::l_step, Ppath::np, and Vector::resize().
Referenced by Cloudbox_ppath_rteCalc(), mcPathTrace(), and mcPathTraceGeneral().
void findZ11max | ( | Vector & | Z11maxvector, | |
const ArrayOfSingleScatteringData & | scat_data_mono | |||
) |
findZ11max
The direction sampling method requires a bounding value for Z11. This returns a vector with the maximum value of Z11 for each particle type.
[out] | Z11maxvector | Maximum value of Z11 for each particle type |
[in] | scat_data_mono |
Definition at line 933 of file montecarlo.cc.
References joker, max, Array< base >::nelem(), PTYPE_HORIZ_AL, PTYPE_MACROS_ISO, and Vector::resize().
Referenced by MCGeneral(), MCIPA(), and ScatteringMonteCarlo().
bool is_anyptype30 | ( | const ArrayOfSingleScatteringData & | scat_data_mono | ) |
is_anyptype30
Some operations in Monte Carlo simulations are different depending on the particle type of the scattering particles. This function searches scat_data_mono to determine if any of the particle types have ptype=30
Definition at line 970 of file montecarlo.cc.
References Array< base >::nelem(), and PTYPE_HORIZ_AL.
Referenced by MCGeneral(), MCIPA(), and ScatteringMonteCarlo().
void iwp_cloud_opt_pathCalc | ( | Workspace & | ws, | |
Numeric & | iwp, | |||
Numeric & | cloud_opt_path, | |||
const Vector & | rte_pos, | |||
const Vector & | rte_los, | |||
const Agenda & | ppath_step_agenda, | |||
const Vector & | p_grid, | |||
const Vector & | lat_grid, | |||
const Vector & | lon_grid, | |||
const Matrix & | r_geoid, | |||
const Matrix & | z_surface, | |||
const Tensor3 & | z_field, | |||
const Tensor3 & | t_field, | |||
const Tensor4 & | vmr_field, | |||
const ArrayOfIndex & | cloudbox_limits, | |||
const Tensor4 & | pnd_field, | |||
const ArrayOfSingleScatteringData & | scat_data_mono, | |||
const Vector & | particle_masses | |||
) |
iwp_cloud_opt_pathCalc
Calculated the ice water path(iwp) and cloud optical path (cloud_opt_path) for a given sensor_pos_ and sensor_los
Definition at line 999 of file montecarlo.cc.
References cloud_atm_vars_by_gp(), Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, joker, Ppath::l_step, Ppath::los, ConstTensor4View::nbooks(), ConstVectorView::nelem(), Ppath::np, opt_propCalc(), Ppath::pos, ppath_calc(), and ppath_what_background().
Referenced by mc_IWP_cloud_opt_pathCalc().
void matrix_exp_p30 | ( | MatrixView & | M, | |
ConstMatrixView & | A | |||
) |
matrix_exp_p30
When we have p30 particles, and therefore the extinction matrix has a block diagonal form with 3 independent elements, the matrix expontential can be calculated very quickly and exactly using this function.
M | output matrix | |
A | input matrix (must be of the form described above) |
Definition at line 1098 of file montecarlo.cc.
References M, ConstMatrixView::ncols(), and ConstMatrixView::nrows().
Referenced by interpTArray(), mcPathTrace(), mcPathTraceGeneral(), mcPathTraceIPA(), and TArrayCalc().
void mcPathTrace | ( | Workspace & | ws, | |
MatrixView & | evol_op, | |||
VectorView & | abs_vec_mono, | |||
Numeric & | rte_temperature, | |||
MatrixView & | ext_mat_mono, | |||
Rng & | rng, | |||
Vector & | rte_pos, | |||
Vector & | rte_los, | |||
Vector & | pnd_vec, | |||
Numeric & | g, | |||
bool & | left_cloudbox, | |||
const Agenda & | opt_prop_gas_agenda, | |||
const Agenda & | abs_scalar_gas_agenda, | |||
const Index & | stokes_dim, | |||
const Index & | f_index, | |||
const Vector & | p_grid, | |||
const Vector & | lat_grid, | |||
const Vector & | lon_grid, | |||
const Tensor3 & | z_field, | |||
const Matrix & | r_geoid, | |||
const Matrix & | z_surface, | |||
const Tensor3 & | t_field, | |||
const Tensor4 & | vmr_field, | |||
const ArrayOfIndex & | cloudbox_limits, | |||
const Tensor4 & | pnd_field, | |||
const ArrayOfSingleScatteringData & | scat_data_mono, | |||
const Index & | z_field_is_1D | |||
) |
mcPathTrace
Performs the tasks of pathlength sampling, ray tracing (but now only as far as determined by pathlength sampling) and calculation of the evolution operator and several atmospheric variables at the new point.
Definition at line 1751 of file montecarlo.cc.
References cloudbox_ppath_start_stepping(), cloudy_rt_vars_at_gp(), cum_l_stepCalc(), Rng::draw(), Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, gridpos(), id_mat(), interp(), interpweights(), is_diagonal(), is_inside_cloudbox(), joker, Ppath::los, matrix_exp_p30(), mult(), Ppath::np, Ppath::pos, and ppath_step_geom_3d().
Referenced by ScatteringMonteCarlo().
void mcPathTraceGeneral | ( | Workspace & | ws, | |
MatrixView & | evol_op, | |||
Vector & | abs_vec_mono, | |||
Numeric & | temperature, | |||
MatrixView & | ext_mat_mono, | |||
Rng & | rng, | |||
Vector & | rte_pos, | |||
Vector & | rte_los, | |||
Vector & | pnd_vec, | |||
Numeric & | g, | |||
Ppath & | ppath_step, | |||
Index & | termination_flag, | |||
bool & | inside_cloud, | |||
const Agenda & | opt_prop_gas_agenda, | |||
const Agenda & | abs_scalar_gas_agenda, | |||
const Index & | stokes_dim, | |||
const Index & | f_index, | |||
const Vector & | p_grid, | |||
const Vector & | lat_grid, | |||
const Vector & | lon_grid, | |||
const Tensor3 & | z_field, | |||
const Matrix & | r_geoid, | |||
const Matrix & | z_surface, | |||
const Tensor3 & | t_field, | |||
const Tensor4 & | vmr_field, | |||
const ArrayOfIndex & | cloudbox_limits, | |||
const Tensor4 & | pnd_field, | |||
const ArrayOfSingleScatteringData & | scat_data_mono, | |||
const Index & | z_field_is_1D | |||
) |
mcPathTraceGeneral
Performs the tasks of pathlength sampling, ray tracing (but now only as far as determined by pathlength sampling) and calculation of the evolution operator and several atmospheric variables at the new point.
Definition at line 1137 of file montecarlo.cc.
References clear_rt_vars_at_gp(), cloudy_rt_vars_at_gp(), cum_l_stepCalc(), Rng::draw(), fractional_gp(), Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, gridpos(), id_mat(), interp(), interpweights(), is_diagonal(), is_inside_cloudbox(), joker, Ppath::los, matrix_exp_p30(), mult(), ConstVectorView::nelem(), Ppath::np, Ppath::pos, ppath_start_stepping(), ppath_step_geom_3d(), and ppath_what_background().
Referenced by MCGeneral().
void mcPathTraceIPA | ( | Workspace & | ws, | |
MatrixView & | evol_op, | |||
Vector & | abs_vec_mono, | |||
Numeric & | temperature, | |||
MatrixView & | ext_mat_mono, | |||
Rng & | rng, | |||
Vector & | rte_pos, | |||
Vector & | rte_los, | |||
Vector & | pnd_vec, | |||
Numeric & | g, | |||
Index & | termination_flag, | |||
bool & | inside_cloud, | |||
const Agenda & | opt_prop_gas_agenda, | |||
const Agenda & | abs_scalar_gas_agenda, | |||
const Index & | stokes_dim, | |||
const Index & | f_index, | |||
const Vector & | p_grid, | |||
const Vector & | lat_grid, | |||
const Vector & | lon_grid, | |||
const Tensor3 & | z_field, | |||
const Matrix & | r_geoid, | |||
const Matrix & | z_surface, | |||
const Tensor3 & | t_field, | |||
const Tensor4 & | vmr_field, | |||
const ArrayOfIndex & | cloudbox_limits, | |||
const Tensor4 & | pnd_field, | |||
const ArrayOfSingleScatteringData & | scat_data_mono, | |||
const Index & | z_field_is_1D, | |||
const Ppath & | ppath | |||
) |
mcPathTraceIPA
Performs the tasks of pathlength sampling, ray tracing (but now only as far as determined by pathlength sampling) and calculation of the evolution operator and several atmospheric variables at the new point. THis is the same as mcPathTraceGeneral modified for the independent pixel approximation.
Definition at line 1393 of file montecarlo.cc.
References abs, cart2poslos(), clear_rt_vars_at_gp(), cloudy_rt_vars_at_gp(), DEG2RAD, Rng::draw(), dx, fractional_gp(), Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, gridpos(), id_mat(), GridPos::idx, interp(), interp_atmfield_by_gp(), interpweights(), is_diagonal(), is_gp_inside_cloudbox(), is_inside_cloudbox(), joker, Ppath::los, matrix_exp_p30(), mult(), ConstVectorView::nelem(), Ppath::np, Ppath::pos, poslos2cart(), ppath_start_stepping(), and z_at_latlon().
Referenced by MCIPA().
void montecarloGetIncoming | ( | Workspace & | ws, | |
Matrix & | iy, | |||
Vector & | rte_pos, | |||
Vector & | rte_los, | |||
Ppath & | ppath, | |||
const Agenda & | ppath_step_agenda, | |||
const Agenda & | rte_agenda, | |||
const Agenda & | iy_space_agenda, | |||
const Agenda & | surface_prop_agenda, | |||
const Agenda & | iy_cloudbox_agenda, | |||
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 Matrix & | r_geoid, | |||
const Matrix & | z_surface, | |||
const ArrayOfIndex & | cloudbox_limits, | |||
const Index & | atmosphere_dim, | |||
const Vector & | f_grid, | |||
const Index & | stokes_dim | |||
) |
montecarloGetIncoming
Gets incoming radiance at the cloud box boundary in a single propagation direction, determined by the cloudbox Ppath 'pptahcloud'. Used in ScatteringMonteCarlo.
Definition at line 1949 of file montecarlo.cc.
References iy_calc_no_jacobian().
Referenced by ScatteringMonteCarlo().
Numeric opt_depth_calc | ( | Workspace & | ws, | |
Tensor3 & | ext_mat, | |||
Matrix & | abs_vec, | |||
Numeric & | rte_pressure, | |||
Numeric & | rte_temperature, | |||
Vector & | rte_vmr_list, | |||
const Ppath & | ppath, | |||
const Agenda & | opt_prop_gas_agenda, | |||
const Agenda & | abs_scalar_gas_agenda, | |||
const Index & | f_index, | |||
const Vector & | p_grid, | |||
const Vector & | lat_grid, | |||
const Vector & | lon_grid, | |||
const Tensor3 & | t_field, | |||
const Tensor4 & | vmr_field, | |||
const Index & | atmosphere_dim | |||
) |
opt_depth_calc
Used at the beginning of a MC simulation to calculate the optical depth between the sensor and the cloudbox boundary.
Definition at line 2014 of file montecarlo.cc.
References abs_scalar_gas_agendaExecute(), Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, interp_atmfield_by_itw(), interp_atmfield_gp2itw(), interpweights(), itw2p(), joker, Ppath::l_step, ConstTensor4View::nbooks(), Ppath::np, ns, and opt_prop_gas_agendaExecute().
Referenced by ScatteringMonteCarlo().
void opt_propCalc | ( | MatrixView & | ext_mat_mono, | |
VectorView & | abs_vec_mono, | |||
const Numeric | za, | |||
const Numeric | aa, | |||
const ArrayOfSingleScatteringData & | scat_data_mono, | |||
const Index & | stokes_dim, | |||
const VectorView & | pnd_vec, | |||
const Numeric & | rte_temperature | |||
) |
opt_propCalc
Returns the extinction matrix and absorption vector due to scattering particles from scat_data_mono
ext_mat_mono | Output: extinction matrix | |
abs_vec_mono | Output: absorption coefficient vector | |
za | zenith angle of propagation direction | |
aa | azimuthal angle of propagation | |
scat_data_mono | workspace variable | |
stokes_dim | workspace variable | |
pnd_vec | vector pf particle number densities (one element per particle type) | |
rte_temperature | loacl temperature (workspace variable) |
Definition at line 2103 of file montecarlo.cc.
References Array< base >::nelem(), and opt_propExtract().
Referenced by cloudy_rt_vars_at_gp(), iwp_cloud_opt_pathCalc(), and TArrayCalc().
void opt_propExtract | ( | MatrixView & | ext_mat_mono_spt, | |
VectorView & | abs_vec_mono_spt, | |||
const SingleScatteringData & | scat_data, | |||
const Numeric & | za, | |||
const Numeric & | aa, | |||
const Numeric & | rte_temperature, | |||
const Index & | stokes_dim | |||
) |
Extract ext_mat_mono and abs_vec_mono from a monochromatic SingleScatteringData object.
Given a monochromatic SingleScatteringData object, propagation directions, and the temperature, this function returns the extinction matrix and the absorption coefficient vector Output:
ext_mat_mono_spt | the extinction matrix (spt: this is for a single particle) | |
abs_vec_mono_spt | the absorption coefficient vector Input: | |
scat_data | a monochromatic SingleScatteringData object | |
za | ||
aa | ||
rte_temperature | ||
stokes_dim |
Definition at line 2162 of file montecarlo.cc.
References SingleScatteringData::abs_vec_data, SingleScatteringData::ext_mat_data, gridpos(), interp(), interpweights(), joker, ConstTensor5View::ncols(), out0, SingleScatteringData::ptype, PTYPE_GENERAL, PTYPE_HORIZ_AL, PTYPE_MACROS_ISO, SingleScatteringData::T_grid, and SingleScatteringData::za_grid.
Referenced by opt_propCalc().
void pha_mat_singleCalc | ( | MatrixView & | Z, | |
Numeric | za_sca, | |||
Numeric | aa_sca, | |||
Numeric | za_inc, | |||
Numeric | aa_inc, | |||
const ArrayOfSingleScatteringData & | scat_data_mono, | |||
const Index & | stokes_dim, | |||
const VectorView & | pnd_vec, | |||
const Numeric & | rte_temperature | |||
) |
pha_mat_singleCalc
Returns the total phase matrix for given incident and scattered directions . It requires a vector of particle number densities to be precalculated
[out] | Z | Output: phase matrix |
[out] | za_sca | scattered |
[out] | aa_sca | and |
[out] | za_inc | incident |
[out] | aa_inc | directions |
[in] | scat_data_mono | workspace variable |
[in] | stokes_dim | workspace variable |
[in] | pnd_vec | vector of particle number densities at the point in question |
[in] | rte_temperature | workspace variable |
Definition at line 2319 of file montecarlo.cc.
References ConstVectorView::nelem(), and pha_mat_singleExtract().
Referenced by Sample_los().
void pha_mat_singleExtract | ( | MatrixView & | Z_spt, | |
const SingleScatteringData & | scat_data, | |||
const Numeric & | za_sca, | |||
const Numeric & | aa_sca, | |||
const Numeric & | za_inc, | |||
const Numeric & | aa_inc, | |||
const Numeric & | rte_temperature, | |||
const Index & | stokes_dim | |||
) |
Extract the phase matrix from a monochromatic SingleScatteringData object.
Given a monochromatic SingleScatteringData object, incident and scattered directions, and the temperature, this function returns the phase matrix in the laboratory frame
[out] | Z_spt | the phase matrix |
[in] | scat_data | a monochromatic SingleScatteringData object |
[in] | za_sca | |
[in] | aa_sca | |
[in] | za_inc | |
[in] | aa_inc | |
[in] | rte_temperature | |
[in] | stokes_dim |
Definition at line 2369 of file montecarlo.cc.
References SingleScatteringData::aa_grid, abs, gridpos(), interp(), interp_scat_angle_temperature(), interpweights(), joker, ConstTensor7View::ncols(), out0, SingleScatteringData::pha_mat_data, pha_mat_labCalc(), SingleScatteringData::ptype, PTYPE_GENERAL, PTYPE_HORIZ_AL, PTYPE_MACROS_ISO, SingleScatteringData::T_grid, and SingleScatteringData::za_grid.
Referenced by pha_mat_singleCalc().
void Sample_los | ( | VectorView & | new_rte_los, | |
Numeric & | g_los_csc_theta, | |||
MatrixView & | Z, | |||
Rng & | rng, | |||
const VectorView & | rte_los, | |||
const ArrayOfSingleScatteringData & | scat_data_mono, | |||
const Index & | stokes_dim, | |||
const VectorView & | pnd_vec, | |||
const bool & | anyptype30, | |||
const VectorView & | Z11maxvector, | |||
Numeric | Csca, | |||
const Numeric & | rte_temperature | |||
) |
Sample_los.
Implementation one of two line of sight sampling methods determined by the input Index 'sampling_method'
sampling_method==1: Randomly samples incident direction using a probability density function proportional to sin(za)(cos(za)+1). sin(za) because dsolid_angle=sin(za)dzadaa , and (cos(za)+1) because upward radiances tend to be greater than downward radiances. NOTE: THIS IS TERRIBLE IN OPTICALLY THICK CASES AND WILL BE REMOVED
sampling_method==2: Randomly samples incident direction using a probability density function proportional to sin(za). Better, but again, not very good.
THIS WHOLE FUNCTION MAY BE SOON REDUNDANT TO SAMPLE_LOS_Z WHICH USES A PDF PROPORTIONAL TO Z11SINZA
[out] | new_rte_los | incident line of sight for subsequent |
[out] | g_los_csc_theta | probability density for the chosen direction multiplied by sin(za) |
[out] | Z | |
[in,out] | rng | Rng random number generator instance |
[in] | rte_los | incident line of sight for subsequent ray-tracing. |
[in] | scat_data_mono | |
[in] | stokes_dim | |
[in] | pnd_vec | |
[in] | anyptype30 | |
[in] | Z11maxvector | |
[in] | Csca | |
[in] | rte_temperature |
Definition at line 2576 of file montecarlo.cc.
References Rng::draw(), Array< base >::nelem(), ConstVectorView::nelem(), pha_mat_singleCalc(), and RAD2DEG.
Referenced by MCGeneral(), MCIPA(), and ScatteringMonteCarlo().
void Sample_ppathlengthLOS | ( | Numeric & | pathlength, | |
Numeric & | g, | |||
Rng & | rng, | |||
const ArrayOfMatrix & | TArray, | |||
const ConstVectorView & | cum_l_step | |||
) |
Sample_ppathlengthLOS.
Similar to Sample_ppathlength, but ensures that the sampled point lies within the cloudbox
[out] | pathlength | the pathlength. |
[out] | g | the probability density of the returned pathlength. |
[in,out] | rng | Rng random number generator instance |
[in] | TArray | FIXME: DOC |
[in] | cum_l_step | FIXME: DOC |
Definition at line 2649 of file montecarlo.cc.
References Rng::draw(), gridpos(), GridPos::idx, Array< base >::nelem(), and ConstVectorView::nelem().
Referenced by ScatteringMonteCarlo().
void TArrayCalc | ( | Workspace & | ws, | |
ArrayOfMatrix & | TArray, | |||
ArrayOfMatrix & | ext_matArray, | |||
ArrayOfVector & | abs_vecArray, | |||
Vector & | t_ppath, | |||
Tensor3 & | ext_mat, | |||
Matrix & | abs_vec, | |||
Numeric & | rte_pressure, | |||
Numeric & | rte_temperature, | |||
Vector & | rte_vmr_list, | |||
Matrix & | pnd_ppath, | |||
const Ppath & | ppath, | |||
const Agenda & | opt_prop_gas_agenda, | |||
const Agenda & | abs_scalar_gas_agenda, | |||
const Index & | f_index, | |||
const Index & | stokes_dim, | |||
const ConstVectorView & | p_grid_cloud, | |||
const ConstVectorView & | lat_grid_cloud, | |||
const ConstVectorView & | lon_grid_cloud, | |||
const ConstTensor3View & | t_field_cloud, | |||
const ConstTensor4View & | vmr_field_cloud, | |||
const Tensor4 & | pnd_field, | |||
const ArrayOfSingleScatteringData & | scat_data_mono, | |||
const ArrayOfIndex & | cloudbox_limits | |||
) |