ARTS
2.2.66
|
This file contains functions to calculate the radiative transfer inside the cloudbox using the DOIT method. More...
#include <stdexcept>
#include <iostream>
#include <cstdlib>
#include <cmath>
#include "array.h"
#include "auto_md.h"
#include "matpackVII.h"
#include "ppath.h"
#include "agenda_class.h"
#include "physics_funcs.h"
#include "lin_alg.h"
#include "math_funcs.h"
#include "messages.h"
#include "xml_io.h"
#include "rte.h"
#include "special_interp.h"
#include "doit.h"
#include "logic.h"
#include "check_input.h"
#include "sorting.h"
#include "cloudbox.h"
#include "geodetic.h"
Go to the source code of this file.
Functions | |
void | rte_step_doit (VectorView stokes_vec, MatrixView trans_mat, ConstMatrixView ext_mat_av, ConstVectorView abs_vec_av, ConstVectorView sca_vec_av, const Numeric &lstep, const Numeric &rtp_planck_value, const bool &trans_is_precalc) |
rte_step_doit More... | |
void | cloud_fieldsCalc (Workspace &ws, Tensor5View ext_mat_field, Tensor4View abs_vec_field, const Agenda &spt_calc_agenda, const Agenda &opt_prop_part_agenda, const Index &scat_za_index, const Index &scat_aa_index, const ArrayOfIndex &cloudbox_limits, ConstTensor3View t_field, ConstTensor4View pnd_field, const Verbosity &verbosity) |
cloud_fieldsCalc More... | |
void | cloud_ppath_update1D (Workspace &ws, Tensor6View doit_i_field, const Index &p_index, const Index &scat_za_index, ConstVectorView scat_za_grid, const ArrayOfIndex &cloudbox_limits, ConstTensor6View doit_scat_field, const Agenda &propmat_clearsky_agenda, ConstTensor4View vmr_field, const Agenda &ppath_step_agenda, const Numeric &ppath_lraytrace, ConstVectorView p_grid, ConstTensor3View z_field, ConstVectorView refellipsoid, ConstTensor3View t_field, ConstVectorView f_grid, const Index &f_index, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, const Agenda &surface_rtprop_agenda, const Index &scat_za_interp, const Verbosity &verbosity) |
cloud_ppath_update1D More... | |
void | cloud_ppath_update1D_noseq (Workspace &ws, Tensor6View doit_i_field, const Index &p_index, const Index &scat_za_index, ConstVectorView scat_za_grid, const ArrayOfIndex &cloudbox_limits, ConstTensor6View doit_i_field_old, ConstTensor6View doit_scat_field, const Agenda &propmat_clearsky_agenda, ConstTensor4View vmr_field, const Agenda &ppath_step_agenda, const Numeric &ppath_lraytrace, ConstVectorView p_grid, ConstTensor3View z_field, ConstVectorView refellipsoid, ConstTensor3View t_field, ConstVectorView f_grid, const Index &f_index, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, const Agenda &surface_rtprop_agenda, const Index &scat_za_interp, const Verbosity &verbosity) |
cloud_ppath_update1D_noseq More... | |
void | cloud_ppath_update3D (Workspace &ws, Tensor6View doit_i_field, const Index &p_index, const Index &lat_index, const Index &lon_index, const Index &scat_za_index, const Index &scat_aa_index, ConstVectorView scat_za_grid, ConstVectorView scat_aa_grid, const ArrayOfIndex &cloudbox_limits, ConstTensor6View doit_scat_field, const Agenda &propmat_clearsky_agenda, ConstTensor4View vmr_field, const Agenda &ppath_step_agenda, const Numeric &ppath_lraytrace, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstVectorView refellipsoid, ConstTensor3View t_field, ConstVectorView f_grid, const Index &f_index, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, const Index &, const Verbosity &verbosity) |
Radiative transfer calculation along a path inside the cloudbox (3D). More... | |
void | cloud_RT_no_background (Workspace &ws, Tensor6View doit_i_field, const Agenda &propmat_clearsky_agenda, const Ppath &ppath_step, ConstVectorView t_int, ConstMatrixView vmr_list_int, ConstTensor3View ext_mat_int, ConstMatrixView abs_vec_int, ConstMatrixView sca_vec_int, ConstMatrixView doit_i_field_int, ConstVectorView p_int, const ArrayOfIndex &cloudbox_limits, ConstVectorView f_grid, const Index &f_index, const Index &p_index, const Index &lat_index, const Index &lon_index, const Index &scat_za_index, const Index &scat_aa_index, const Verbosity &verbosity) |
cloud_RT_no_background More... | |
void | cloud_RT_surface (Workspace &ws, Tensor6View doit_i_field, const Agenda &surface_rtprop_agenda, ConstVectorView f_grid, const Index &f_index, const Index &stokes_dim, const Ppath &ppath_step, const ArrayOfIndex &cloudbox_limits, ConstVectorView scat_za_grid, const Index &scat_za_index) |
cloud_RT_surface More... | |
void | interp_cloud_coeff1D (Tensor3View ext_mat_int, MatrixView abs_vec_int, MatrixView sca_vec_int, MatrixView doit_i_field_int, VectorView t_int, MatrixView vmr_list_int, VectorView p_int, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, ConstTensor6View doit_scat_field, ConstTensor6View doit_i_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView p_grid, const Ppath &ppath_step, const ArrayOfIndex &cloudbox_limits, ConstVectorView scat_za_grid, const Index &scat_za_interp, const Verbosity &verbosity) |
interp_cloud_coeff1D More... | |
void | cloud_ppath_update1D_planeparallel (Workspace &ws, Tensor6View doit_i_field, const Index &p_index, const Index &scat_za_index, ConstVectorView scat_za_grid, const ArrayOfIndex &cloudbox_limits, ConstTensor6View doit_scat_field, const Agenda &propmat_clearsky_agenda, ConstTensor4View vmr_field, ConstVectorView p_grid, ConstTensor3View z_field, ConstTensor3View t_field, ConstVectorView f_grid, const Index &f_index, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, const Verbosity &verbosity) |
Radiative transfer calculation inside cloudbox for planeparallel case. More... | |
void | za_gridOpt (Vector &za_grid_opt, Matrix &doit_i_field_opt, ConstVectorView za_grid_fine, ConstTensor6View doit_i_field, const Numeric &acc, const Index &scat_za_interp) |
void | iy_interp_cloudbox_field (Matrix &iy, const Tensor7 &scat_i_p, const Tensor7 &scat_i_lat, const Tensor7 &scat_i_lon, const Tensor4 &doit_i_field1D_spectrum, const GridPos &rte_gp_p, const GridPos &rte_gp_lat, const GridPos &rte_gp_lon, const Vector &rte_los, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Index &atmosphere_dim, const Index &stokes_dim, const Vector &scat_za_grid, const Vector &scat_aa_grid, const Vector &f_grid, const String &interpmeth, const Index &rigorous, const Numeric &maxratio, const Verbosity &verbosity) |
Interpolation of cloud box intensity field. More... | |
void | doit_scat_fieldNormalize (Workspace &ws, Tensor6 &doit_scat_field, const Tensor6 &doit_i_field, const ArrayOfIndex &cloudbox_limits, const Agenda &spt_calc_agenda, const Index &atmosphere_dim, const Vector &scat_za_grid, const Vector &scat_aa_grid, const Tensor4 &pnd_field, const Agenda &opt_prop_part_agenda, const Tensor3 &t_field, const Numeric &norm_error_threshold, const Index &norm_debug, const Verbosity &verbosity) |
Normalization of scattered field. More... | |
Variables | |
const Numeric | PI |
const Numeric | RAD2DEG |
This file contains functions to calculate the radiative transfer inside the cloudbox using the DOIT method.
Definition in file doit.cc.
void cloud_fieldsCalc | ( | Workspace & | ws, |
Tensor5View | ext_mat_field, | ||
Tensor4View | abs_vec_field, | ||
const Agenda & | spt_calc_agenda, | ||
const Agenda & | opt_prop_part_agenda, | ||
const Index & | scat_za_index, | ||
const Index & | scat_aa_index, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
ConstTensor3View | t_field, | ||
ConstTensor4View | pnd_field, | ||
const Verbosity & | verbosity | ||
) |
cloud_fieldsCalc
Calculate ext_mat, abs_vec for all points inside the cloudbox for one propagation direction. sca_vec can be obtained from the workspace variable doit_scat_field. As we need the average for each layer, it makes sense to calculte the coefficients once and store them in an array instead of calculating at each point the coefficient of the point above and the point below.
Output
ws | Current Workspace |
ext_mat_field | extinction matrix field |
abs_vec_field | absorption vector field Input |
spt_calc_agenda | Agenda for calculation of single scattering properties |
opt_prop_part_agenda | Agenda for summing over all hydrometeor species |
scat_za_index | Indices for |
scat_aa_index | propagation direction |
cloudbox_limits | Cloudbox limits. |
t_field | Temperature field |
pnd_field | Particle number density field. |
Definition at line 257 of file doit.cc.
References CREATE_OUT3, joker, ConstTensor4View::nbooks(), ConstTensor4View::ncols(), ConstTensor5View::ncols(), Array< base >::nelem(), ConstTensor5View::nrows(), opt_prop_part_agendaExecute(), and spt_calc_agendaExecute().
Referenced by doit_i_fieldUpdate1D(), doit_i_fieldUpdateSeq1D(), doit_i_fieldUpdateSeq1DPP(), doit_i_fieldUpdateSeq3D(), and doit_scat_fieldNormalize().
void cloud_ppath_update1D | ( | Workspace & | ws, |
Tensor6View | doit_i_field, | ||
const Index & | p_index, | ||
const Index & | scat_za_index, | ||
ConstVectorView | scat_za_grid, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
ConstTensor6View | doit_scat_field, | ||
const Agenda & | propmat_clearsky_agenda, | ||
ConstTensor4View | vmr_field, | ||
const Agenda & | ppath_step_agenda, | ||
const Numeric & | ppath_lraytrace, | ||
ConstVectorView | p_grid, | ||
ConstTensor3View | z_field, | ||
ConstVectorView | refellipsoid, | ||
ConstTensor3View | t_field, | ||
ConstVectorView | f_grid, | ||
const Index & | f_index, | ||
ConstTensor5View | ext_mat_field, | ||
ConstTensor4View | abs_vec_field, | ||
const Agenda & | surface_rtprop_agenda, | ||
const Index & | scat_za_interp, | ||
const Verbosity & | verbosity | ||
) |
cloud_ppath_update1D
This function calculates the radiation field along a propagation path step for specified zenith direction and pressure level. This function is used in the sequential update and called inside a loop over the pressure grid. In the function the intersection point of the propagation path with the next layer is calculated and all atmospheric properties are interpolated an the intersection point. Then a radiative transfer step is performed.
[in,out] | ws | Current Workspace WS Output: |
[out] | doit_i_field | Updated radiation field inside the cloudbox. WS Input: |
p_index | // Pressure index | |
scat_za_index | // Index for proagation direction | |
scat_za_grid | ||
cloudbox_limits | ||
doit_scat_field | Scattered field. Calculate scalar gas absorption: | |
propmat_clearsky_agenda | ||
vmr_field | Propagation path calculation: | |
ppath_step_agenda | ||
p_grid | ||
z_field | ||
refellipsoid | ||
z_surface | Calculate thermal emission: | |
t_field | ||
f_grid | ||
f_index | Optical properties of particles | |
ext_mat_field | ||
abs_vec_field | ||
surface_rtprop_agenda | ||
scat_za_interp |
Definition at line 416 of file doit.cc.
References abs, cloud_RT_no_background(), cloud_RT_surface(), Ppath::gp_p, interp_cloud_coeff1D(), Ppath::los, ConstTensor4View::nbooks(), ConstTensor6View::ncols(), Ppath::np, Ppath::pos, ppath_init_structure(), ppath_step_agendaExecute(), ppath_what_background(), and Ppath::r.
Referenced by doit_i_fieldUpdateSeq1D().
void cloud_ppath_update1D_noseq | ( | Workspace & | ws, |
Tensor6View | doit_i_field, | ||
const Index & | p_index, | ||
const Index & | scat_za_index, | ||
ConstVectorView | scat_za_grid, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
ConstTensor6View | doit_i_field_old, | ||
ConstTensor6View | doit_scat_field, | ||
const Agenda & | propmat_clearsky_agenda, | ||
ConstTensor4View | vmr_field, | ||
const Agenda & | ppath_step_agenda, | ||
const Numeric & | ppath_lraytrace, | ||
ConstVectorView | p_grid, | ||
ConstTensor3View | z_field, | ||
ConstVectorView | refellipsoid, | ||
ConstTensor3View | t_field, | ||
ConstVectorView | f_grid, | ||
const Index & | f_index, | ||
ConstTensor5View | ext_mat_field, | ||
ConstTensor4View | abs_vec_field, | ||
const Agenda & | surface_rtprop_agenda, | ||
const Index & | scat_za_interp, | ||
const Verbosity & | verbosity | ||
) |
cloud_ppath_update1D_noseq
Definition at line 556 of file doit.cc.
References abs, cloud_RT_no_background(), cloud_RT_surface(), Ppath::gp_p, interp_cloud_coeff1D(), Ppath::los, ConstTensor4View::nbooks(), ConstTensor6View::ncols(), Ppath::np, Ppath::pos, ppath_init_structure(), ppath_step_agendaExecute(), ppath_what_background(), and Ppath::r.
Referenced by doit_i_fieldUpdate1D().
void cloud_ppath_update1D_planeparallel | ( | Workspace & | ws, |
Tensor6View | doit_i_field, | ||
const Index & | p_index, | ||
const Index & | scat_za_index, | ||
ConstVectorView | scat_za_grid, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
ConstTensor6View | doit_scat_field, | ||
const Agenda & | propmat_clearsky_agenda, | ||
ConstTensor4View | vmr_field, | ||
ConstVectorView | p_grid, | ||
ConstTensor3View | z_field, | ||
ConstTensor3View | t_field, | ||
ConstVectorView | f_grid, | ||
const Index & | f_index, | ||
ConstTensor5View | ext_mat_field, | ||
ConstTensor4View | abs_vec_field, | ||
const Verbosity & | verbosity | ||
) |
Radiative transfer calculation inside cloudbox for planeparallel case.
This function calculates the radiation field along a line of sight. This function is used for the sequential update of the radiation field and called inside a loop over the pressure grid.
The function gets all the atmospheric points on the pressure grid. Then a radiative transfer step is performed using the stokes vector as output and input. The inermediate Stokes vectors are stored in the WSV doit_i_field.
[in,out] | ws | Current Workspace WS Output: |
[out] | doit_i_field | Updated radiation field inside the cloudbox. Variables used in opt_prop_xxx_agenda: WS Input: |
p_index | // Pressure index | |
scat_za_index | // Index for proagation direction | |
scat_za_grid | ||
cloudbox_limits | ||
doit_scat_field | Scattered field. Calculate scalar gas absorption: | |
propmat_clearsky_agenda | ||
vmr_field | Propagation path calculation: | |
ppath_step_agenda | ||
p_grid | ||
z_field | ||
refellipsoid | Calculate thermal emission: | |
t_field | ||
f_grid | ||
f_index | ||
ext_mat_field | ||
abs_vec_field |
Definition at line 1446 of file doit.cc.
References abs, CREATE_OUT3, is_singular(), joker, ConstTensor4View::nbooks(), ConstTensor6View::ncols(), opt_prop_sum_propmat_clearsky(), PI, planck(), propmat_clearsky_agendaExecute(), and rte_step_doit().
Referenced by doit_i_fieldUpdateSeq1DPP().
void cloud_ppath_update3D | ( | Workspace & | ws, |
Tensor6View | doit_i_field, | ||
const Index & | p_index, | ||
const Index & | lat_index, | ||
const Index & | lon_index, | ||
const Index & | scat_za_index, | ||
const Index & | scat_aa_index, | ||
ConstVectorView | scat_za_grid, | ||
ConstVectorView | scat_aa_grid, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
ConstTensor6View | doit_scat_field, | ||
const Agenda & | propmat_clearsky_agenda, | ||
ConstTensor4View | vmr_field, | ||
const Agenda & | ppath_step_agenda, | ||
const Numeric & | ppath_lraytrace, | ||
ConstVectorView | p_grid, | ||
ConstVectorView | lat_grid, | ||
ConstVectorView | lon_grid, | ||
ConstTensor3View | z_field, | ||
ConstVectorView | refellipsoid, | ||
ConstTensor3View | t_field, | ||
ConstVectorView | f_grid, | ||
const Index & | f_index, | ||
ConstTensor5View | ext_mat_field, | ||
ConstTensor4View | abs_vec_field, | ||
const Index & | , | ||
const Verbosity & | verbosity | ||
) |
Radiative transfer calculation along a path inside the cloudbox (3D).
This function calculates the radiation field along a propagation path step for a specified zenith direction. This function is used for the sequential update if the radiation field and called inside a loop over the pressure grid. In the function the intersection point of the propagation path with the next layer is calculated and all atmospheric properties are interpolated an the intersection point. Then a radiative transfer step is performed using the stokes vector as output and input. The inermediate Stokes vectors are stored in the WSV doit_i_field.
[in,out] | ws | Current workspace WS Output: |
doit_i_field | Updated radiation field inside the cloudbox. WS Input: | |
p_index | // Pressure index | |
lat_index | ||
lon_index | ||
scat_za_index | // Index for proagation direction | |
scat_aa_index | ||
scat_za_grid | ||
scat_aa_grid | ||
cloudbox_limits | ||
doit_scat_field | Scattered field. Calculate scalar gas absorption: | |
propmat_clearsky_agenda | ||
vmr_field | Propagation path calculation: | |
ppath_step_agenda | ||
p_grid | ||
lat_grid | ||
lon_grid | ||
z_field | ||
refellipsoid | ||
z_surface | Calculate thermal emission: | |
t_field | ||
f_grid | ||
f_index | ||
ext_mat_field | ||
abs_vec_field |
Definition at line 738 of file doit.cc.
References cloud_RT_no_background(), CREATE_OUT3, Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, gridpos(), gridpos_upperend_check(), interp(), interpweights(), is_inside_cloudbox(), itw2p(), joker, Ppath::los, ConstTensor4View::nbooks(), ConstTensor6View::ncols(), ConstVectorView::nelem(), Ppath::np, Ppath::pos, ppath_init_structure(), ppath_step_agendaExecute(), Ppath::r, and refell2r().
Referenced by doit_i_fieldUpdateSeq3D().
void cloud_RT_no_background | ( | Workspace & | ws, |
Tensor6View | doit_i_field, | ||
const Agenda & | propmat_clearsky_agenda, | ||
const Ppath & | ppath_step, | ||
ConstVectorView | t_int, | ||
ConstMatrixView | vmr_list_int, | ||
ConstTensor3View | ext_mat_int, | ||
ConstMatrixView | abs_vec_int, | ||
ConstMatrixView | sca_vec_int, | ||
ConstMatrixView | doit_i_field_int, | ||
ConstVectorView | p_int, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
ConstVectorView | f_grid, | ||
const Index & | f_index, | ||
const Index & | p_index, | ||
const Index & | lat_index, | ||
const Index & | lon_index, | ||
const Index & | scat_za_index, | ||
const Index & | scat_aa_index, | ||
const Verbosity & | verbosity | ||
) |
cloud_RT_no_background
Definition at line 1016 of file doit.cc.
References CREATE_OUT3, is_singular(), joker, Ppath::lstep, ConstTensor6View::ncols(), Array< base >::nelem(), Ppath::np, ConstMatrixView::nrows(), opt_prop_sum_propmat_clearsky(), planck(), propmat_clearsky_agendaExecute(), rte_step_doit(), and swap().
Referenced by cloud_ppath_update1D(), cloud_ppath_update1D_noseq(), and cloud_ppath_update3D().
void cloud_RT_surface | ( | Workspace & | ws, |
Tensor6View | doit_i_field, | ||
const Agenda & | surface_rtprop_agenda, | ||
ConstVectorView | f_grid, | ||
const Index & | f_index, | ||
const Index & | stokes_dim, | ||
const Ppath & | ppath_step, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
ConstVectorView | scat_za_grid, | ||
const Index & | scat_za_index | ||
) |
cloud_RT_surface
Definition at line 1175 of file doit.cc.
References chk_not_empty(), Ppath::dim, joker, Ppath::los, mult(), ConstMatrixView::ncols(), ConstVectorView::nelem(), Ppath::np, ConstMatrixView::nrows(), Ppath::pos, Vector::resize(), and surface_rtprop_agendaExecute().
Referenced by cloud_ppath_update1D(), and cloud_ppath_update1D_noseq().
void doit_scat_fieldNormalize | ( | Workspace & | ws, |
Tensor6 & | doit_scat_field, | ||
const Tensor6 & | doit_i_field, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Agenda & | spt_calc_agenda, | ||
const Index & | atmosphere_dim, | ||
const Vector & | scat_za_grid, | ||
const Vector & | scat_aa_grid, | ||
const Tensor4 & | pnd_field, | ||
const Agenda & | opt_prop_part_agenda, | ||
const Tensor3 & | t_field, | ||
const Numeric & | norm_error_threshold, | ||
const Index & | norm_debug, | ||
const Verbosity & | verbosity | ||
) |
Normalization of scattered field.
Calculate the scattered extinction field and apply the derived correction factor to doit_scat_field.
Only 1D is supported.
[in,out] | ws | Current workspace |
[in,out] | doit_scat_field | Scattered field |
[in] | cloudbox_limits | WS Input |
[in] | spt_calc_agenda | WS Input |
[in] | atmopshere_dim | WS Input |
[in] | scat_za_grid | WS Input |
[in] | scat_aa_grid | WS Input |
[in] | pnd_field | WS Input |
[in] | opt_prop_part_agenda | WS Input |
[in] | t_field | WS Input |
[in] | norm_error_threshold | Normalization error threshold |
[in] | verbosity | Verbosity |
Definition at line 2521 of file doit.cc.
References abs, AngIntegrate_trapezoid(), cloud_fieldsCalc(), CREATE_OUT0, CREATE_OUT2, joker, ConstTensor6View::nbooks(), ConstTensor6View::ncols(), ConstVectorView::nelem(), ConstTensor6View::npages(), ConstTensor6View::nrows(), ConstTensor6View::nshelves(), and ConstTensor6View::nvitrines().
Referenced by doit_i_fieldUpdateSeq1D().
void interp_cloud_coeff1D | ( | Tensor3View | ext_mat_int, |
MatrixView | abs_vec_int, | ||
MatrixView | sca_vec_int, | ||
MatrixView | doit_i_field_int, | ||
VectorView | t_int, | ||
MatrixView | vmr_list_int, | ||
VectorView | p_int, | ||
ConstTensor5View | ext_mat_field, | ||
ConstTensor4View | abs_vec_field, | ||
ConstTensor6View | doit_scat_field, | ||
ConstTensor6View | doit_i_field, | ||
ConstTensor3View | t_field, | ||
ConstTensor4View | vmr_field, | ||
ConstVectorView | p_grid, | ||
const Ppath & | ppath_step, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
ConstVectorView | scat_za_grid, | ||
const Index & | scat_za_interp, | ||
const Verbosity & | verbosity | ||
) |
interp_cloud_coeff1D
Interpolate all inputs of the VRTE on a propagation path step. Used in the WSM cloud_ppath_update1D.
Definition at line 1253 of file doit.cc.
References CREATE_OUT3, Ppath::gp_p, gridpos(), gridpos_upperend_check(), interp(), interp_poly(), interpweights(), itw2p(), joker, Ppath::los, ConstTensor4View::nbooks(), ConstTensor6View::ncols(), Array< base >::nelem(), ConstVectorView::nelem(), and Ppath::np.
Referenced by cloud_ppath_update1D(), and cloud_ppath_update1D_noseq().
void iy_interp_cloudbox_field | ( | Matrix & | iy, |
const Tensor7 & | scat_i_p, | ||
const Tensor7 & | scat_i_lat, | ||
const Tensor7 & | scat_i_lon, | ||
const Tensor4 & | doit_i_field1D_spectrum, | ||
const GridPos & | rte_gp_p, | ||
const GridPos & | rte_gp_lat, | ||
const GridPos & | rte_gp_lon, | ||
const Vector & | rte_los, | ||
const Index & | cloudbox_on, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Index & | atmosphere_dim, | ||
const Index & | stokes_dim, | ||
const Vector & | scat_za_grid, | ||
const Vector & | scat_aa_grid, | ||
const Vector & | f_grid, | ||
const String & | interpmeth, | ||
const Index & | rigorous, | ||
const Numeric & | maxratio, | ||
const Verbosity & | verbosity | ||
) |
Interpolation of cloud box intensity field.
Definition at line 2094 of file doit.cc.
References CREATE_OUT3, DEBUG_ONLY, fractional_gp(), gridpos(), gridpos_upperend_check(), GridPos::idx, interp(), interp_poly(), interpweights(), is_gridpos_at_index_i(), is_size(), joker, ConstTensor7View::nbooks(), Array< base >::nelem(), ConstVectorView::nelem(), ConstTensor7View::nlibraries(), ConstTensor7View::nshelves(), ConstTensor7View::nvitrines(), and Matrix::resize().
Referenced by iyInterpCloudboxField(), and iyInterpPolyCloudboxField().
void rte_step_doit | ( | VectorView | stokes_vec, |
MatrixView | trans_mat, | ||
ConstMatrixView | ext_mat_av, | ||
ConstVectorView | abs_vec_av, | ||
ConstVectorView | sca_vec_av, | ||
const Numeric & | lstep, | ||
const Numeric & | rtp_planck_value, | ||
const bool & | trans_is_precalc | ||
) |
rte_step_doit
Solves monochromatic VRTE for an atmospheric slab with constant conditions.
The function can be used for cloudbox calculations.
The function is best explained by considering a homogenous layer. That is, the physical conditions inside the layer are constant. In reality they are not constant, so in practical all coefficients have to be averaged before calling this function. Total extinction and absorption inside the layer are described by ext_mat_av* and abs_vec_av respectively, the blackbdody radiation of the layer is given by rte_planck_value and the propagation path length through the layer is lstep.
There is an additional scattering source term in the VRTE, the scattering integral term. For this function a constant scattering term is assumed. The radiative transfer step is only a part the iterative solution of the scattering problem, for more information consider AUG. In the clearsky case this variable has to be set to 0.
When calling the function, the vector stokes_vec shall contain the Stokes vector for the incoming radiation. The function returns this vector, then containing the outgoing radiation on the other side of the layer.
The function performs the calculations differently depending on the conditions to improve the speed. There are three cases:
stokes_vec | Input/Output: A Stokes vector. |
trans_mat | Output: Transmission matrix of slab. |
ext_mat_av | Input: Averaged extinction matrix. |
abs_vec_av | Input: Averaged absorption vector. |
sca_vec_av | Input: averaged scattering vector. |
lstep | Input: The length of the RTE step. |
rtp_planck_value | Input: Blackbody radiation. |
Definition at line 108 of file doit.cc.
References ext2trans(), id_mat(), is_singular(), is_size(), lubacksub(), ludcmp(), mult(), and ConstVectorView::nelem().
Referenced by cloud_ppath_update1D_planeparallel(), cloud_RT_no_background(), and fos().
void za_gridOpt | ( | Vector & | za_grid_opt, |
Matrix & | doit_i_field_opt, | ||
ConstVectorView | za_grid_fine, | ||
ConstTensor6View | doit_i_field, | ||
const Numeric & | acc, | ||
const Index & | scat_za_interp | ||
) |
Optimize the zenith angle grid,
This method optimizes the zenith angle grid. For optimization it uses the interpolation method given by scat_za_interp (0 - linear interpolation, 1 - polynomial interpolation). As input it needs the intensity field calculated on a very fine zenith angle grid (za_grid_fine). The function picks out as many grid points as required to achieve the required accuracy (acc [%]). This methods optimizes only the intensity (first Stokes component) for 1D cases (first latitude and longitude of the intensity field.
(Could be modified to optimize all Stokes components at the same time, if we don't want to use the clearsky field for grid optimuzation.)
za_grid_opt | Optimized zenith angle grid. |
doit_i_field_opt | Optimized intensity field. |
za_grid_fine | Fine zenith angle grid. |
doit_i_field | Radiation field calculated on a very fine za grid. |
acc | Accuracy of optimization [%]. |
scat_za_interp | Interpolation method. |
Definition at line 1944 of file doit.cc.
References abs, get_sorted_indexes(), gridpos(), interp(), interp_poly(), interpweights(), joker, Array< base >::nelem(), ConstVectorView::nelem(), ConstTensor6View::npages(), ConstTensor6View::nvitrines(), Vector::resize(), and Matrix::resize().
Referenced by doit_za_grid_optCalc().
|
extern |
Referenced by cloud_ppath_update1D_planeparallel().
|
extern |