ARTS  2.2.66
doit.cc File Reference

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
 

Detailed Description

This file contains functions to calculate the radiative transfer inside the cloudbox using the DOIT method.

Author
Claudia Emde claud.nosp@m.ia.e.nosp@m.mde@d.nosp@m.lr.d.nosp@m.e
Date
Wed Jun 04 11:03:57 2003

Definition in file doit.cc.

Function Documentation

◆ cloud_fieldsCalc()

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

Parameters
wsCurrent Workspace
ext_mat_fieldextinction matrix field
abs_vec_fieldabsorption vector field Input
spt_calc_agendaAgenda for calculation of single scattering properties
opt_prop_part_agendaAgenda for summing over all hydrometeor species
scat_za_indexIndices for
scat_aa_indexpropagation direction
cloudbox_limitsCloudbox limits.
t_fieldTemperature field
pnd_fieldParticle number density field.
Author
Claudia Emde
Date
2002-06-03

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().

◆ cloud_ppath_update1D()

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.

Parameters
[in,out]wsCurrent Workspace WS Output:
[out]doit_i_fieldUpdated 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_fieldScattered field. Calculate scalar gas absorption:
propmat_clearsky_agenda
vmr_fieldPropagation path calculation:
ppath_step_agenda
p_grid
z_field
refellipsoid
z_surfaceCalculate thermal emission:
t_field
f_grid
f_indexOptical properties of particles
ext_mat_field
abs_vec_field
surface_rtprop_agenda
scat_za_interp
Author
Claudia Emde
Date
2003-06-04

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().

◆ cloud_ppath_update1D_noseq()

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_planeparallel()

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.

Parameters
[in,out]wsCurrent Workspace WS Output:
[out]doit_i_fieldUpdated 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_fieldScattered field. Calculate scalar gas absorption:
propmat_clearsky_agenda
vmr_fieldPropagation path calculation:
ppath_step_agenda
p_grid
z_field
refellipsoidCalculate thermal emission:
t_field
f_grid
f_index
ext_mat_field
abs_vec_field
Author
Sreerekha Ravi
Date
2003-11-17

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().

◆ cloud_ppath_update3D()

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.

Parameters
[in,out]wsCurrent workspace WS Output:
doit_i_fieldUpdated 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_fieldScattered field. Calculate scalar gas absorption:
propmat_clearsky_agenda
vmr_fieldPropagation path calculation:
ppath_step_agenda
p_grid
lat_grid
lon_grid
z_field
refellipsoid
z_surfaceCalculate thermal emission:
t_field
f_grid
f_index
ext_mat_field
abs_vec_field
Author
Claudia Emde
Date
2003-06-04

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().

◆ cloud_RT_no_background()

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_surface()

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 
)

◆ doit_scat_fieldNormalize()

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.

Parameters
[in,out]wsCurrent workspace
[in,out]doit_scat_fieldScattered field
[in]cloudbox_limitsWS Input
[in]spt_calc_agendaWS Input
[in]atmopshere_dimWS Input
[in]scat_za_gridWS Input
[in]scat_aa_gridWS Input
[in]pnd_fieldWS Input
[in]opt_prop_part_agendaWS Input
[in]t_fieldWS Input
[in]norm_error_thresholdNormalization error threshold
[in]verbosityVerbosity
Author
Oliver Lemke
Date
2013-01-17

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().

◆ interp_cloud_coeff1D()

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.

Author
Claudia Emde
Date
2003-06-06

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().

◆ iy_interp_cloudbox_field()

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 
)

◆ rte_step_doit()

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:

  1. Scalar absorption (stokes_dim = 1).
  2. The matrix ext_mat_gas is diagonal (unpolarised absorption).
  3. The total general case.
Parameters
stokes_vecInput/Output: A Stokes vector.
trans_matOutput: Transmission matrix of slab.
ext_mat_avInput: Averaged extinction matrix.
abs_vec_avInput: Averaged absorption vector.
sca_vec_avInput: averaged scattering vector.
lstepInput: The length of the RTE step.
rtp_planck_valueInput: Blackbody radiation.
Author
Claudia Emde and Patrick Eriksson,
Date
2002-11-22

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().

◆ za_gridOpt()

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

Parameters
za_grid_optOptimized zenith angle grid.
doit_i_field_optOptimized intensity field.
za_grid_fineFine zenith angle grid.
doit_i_fieldRadiation field calculated on a very fine za grid.
accAccuracy of optimization [%].
scat_za_interpInterpolation method.
Author
Claudia Emde
Date
2004-04-05

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().

Variable Documentation

◆ PI

const Numeric PI
extern

◆ RAD2DEG

const Numeric RAD2DEG
extern