ARTS  2.0.49
doit.h File Reference

Radiative transfer in cloudbox. More...

#include "agenda_class.h"
#include "matpackVI.h"
#include "ppath.h"

Go to the source code of this file.

Functions

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 i_field, const Index &p_index, const Index &scat_za_index, ConstVectorView scat_za_grid, const ArrayOfIndex &cloudbox_limits, ConstTensor6View scat_field, const Agenda &abs_scalar_gas_agenda, ConstTensor4View vmr_field, const Agenda &opt_prop_gas_agenda, const Agenda &ppath_step_agenda, ConstVectorView p_grid, ConstTensor3View z_field, ConstMatrixView r_geoid, ConstMatrixView z_surface, ConstTensor3View t_field, ConstVectorView f_grid, const Index &f_index, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, const Agenda &surface_prop_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 &abs_scalar_gas_agenda, ConstTensor4View vmr_field, const Agenda &opt_prop_gas_agenda, const Agenda &ppath_step_agenda, ConstVectorView p_grid, ConstTensor3View z_field, ConstMatrixView r_geoid, ConstMatrixView z_surface, ConstTensor3View t_field, ConstVectorView f_grid, const Index &f_index, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, const Agenda &surface_prop_agenda, const Index &scat_za_interp, const Verbosity &verbosity)
 cloud_ppath_update1D_noseq More...
 
void cloud_ppath_update1D_planeparallel (Workspace &ws, Tensor6View i_field, const Index &p_index, const Index &scat_za_index, ConstVectorView scat_za_grid, const ArrayOfIndex &cloudbox_limits, ConstTensor6View scat_field, const Agenda &abs_scalar_gas_agenda, ConstTensor4View vmr_field, const Agenda &opt_prop_gas_agenda, const Agenda &ppath_step_agenda, ConstVectorView p_grid, ConstTensor3View z_field, ConstMatrixView r_geoid, 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 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 &abs_scalar_gas_agenda, ConstTensor4View vmr_field, const Agenda &opt_prop_gas_agenda, const Agenda &ppath_step_agenda, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstMatrixView r_geoid, ConstMatrixView z_surface, 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 &abs_scalar_gas_agenda, const Agenda &opt_prop_gas_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_prop_agenda, 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 ppath_step_in_cloudbox (Workspace &ws, Ppath &ppath_step, const Agenda &ppath_step_agenda, const Index &p, const Index &lat, const Index &lon, ConstTensor3View z_field, ConstMatrixView r_geoid, ConstMatrixView z_surface, ConstVectorView scat_za_grid, ConstVectorView aa_grid, const Index &scat_za_index, const Index &scat_aa_index, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid)
 
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 za_gridOpt (Vector &za_grid_opt, Matrix &i_field_opt, ConstVectorView za_grid_fine, ConstTensor6View 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 Verbosity &verbosity)
 Interpolation of cloud box intensity field. More...
 

Detailed Description

Radiative transfer in cloudbox.

Author
Claudia Emde claud.nosp@m.ia.e.nosp@m.mde@d.nosp@m.lr.d.nosp@m.e
Date
2003-06-03

This file contains functions related to the radiative transfer in the cloudbox using the DOIT method.

Definition in file doit.h.

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 86 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(), and doit_i_fieldUpdateSeq3D().

◆ 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 abs_scalar_gas_agenda,
ConstTensor4View  vmr_field,
const Agenda opt_prop_gas_agenda,
const Agenda ppath_step_agenda,
ConstVectorView  p_grid,
ConstTensor3View  z_field,
ConstMatrixView  r_geoid,
ConstMatrixView  z_surface,
ConstTensor3View  t_field,
ConstVectorView  f_grid,
const Index f_index,
ConstTensor5View  ext_mat_field,
ConstTensor4View  abs_vec_field,
const Agenda surface_prop_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:
abs_scalar_gas_agenda
vmr_fieldScalar gas absorption:
opt_prop_gas_agendaPropagation path calculation:
ppath_step_agenda
p_grid
z_field
r_geoid
z_surfaceCalculate thermal emission:
t_field
f_grid
f_indexOptical properties of particles
ext_mat_field
abs_vec_field
surface_prop_agenda
scat_za_interp
Author
Claudia Emde
Date
2003-06-04

Definition at line 247 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::z.

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 abs_scalar_gas_agenda,
ConstTensor4View  vmr_field,
const Agenda opt_prop_gas_agenda,
const Agenda ppath_step_agenda,
ConstVectorView  p_grid,
ConstTensor3View  z_field,
ConstMatrixView  r_geoid,
ConstMatrixView  z_surface,
ConstTensor3View  t_field,
ConstVectorView  f_grid,
const Index f_index,
ConstTensor5View  ext_mat_field,
ConstTensor4View  abs_vec_field,
const Agenda surface_prop_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 abs_scalar_gas_agenda,
ConstTensor4View  vmr_field,
const Agenda opt_prop_gas_agenda,
const Agenda ppath_step_agenda,
ConstVectorView  p_grid,
ConstTensor3View  z_field,
ConstMatrixView  r_geoid,
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:
abs_scalar_gas_agenda
vmr_fieldScalar gas absorption:
opt_prop_gas_agendaPropagation path calculation:
ppath_step_agenda
p_grid
z_field
r_geoidCalculate thermal emission:
t_field
f_grid
f_index
ext_mat_field
abs_vec_field
Author
Sreerekha Ravi
Date
2003-11-17

Definition at line 1382 of file doit.cc.

References abs, abs_scalar_gas_agendaExecute(), CREATE_OUT3, is_singular(), joker, ConstTensor4View::nbooks(), ConstTensor6View::ncols(), opt_prop_gas_agendaExecute(), PI, planck(), and rte_step_std().

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 abs_scalar_gas_agenda,
ConstTensor4View  vmr_field,
const Agenda opt_prop_gas_agenda,
const Agenda ppath_step_agenda,
ConstVectorView  p_grid,
ConstVectorView  lat_grid,
ConstVectorView  lon_grid,
ConstTensor3View  z_field,
ConstMatrixView  r_geoid,
ConstMatrixView  z_surface,
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:
abs_scalar_gas_agenda
vmr_fieldScalar gas absorption:
opt_prop_gas_agendaPropagation path calculation:
ppath_step_agenda
p_grid
lat_grid
lon_grid
z_field
r_geoid
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 581 of file doit.cc.

References cloud_RT_no_background(), CREATE_OUT3, gridpos(), gridpos_upperend_check(), interp(), interpweights(), is_inside_cloudbox(), itw2p(), joker, ConstTensor4View::nbooks(), ConstTensor6View::ncols(), ConstVectorView::nelem(), ppath_init_structure(), and ppath_step_agendaExecute().

Referenced by doit_i_fieldUpdateSeq3D().

◆ cloud_RT_no_background()

void cloud_RT_no_background ( Workspace ws,
Tensor6View  doit_i_field,
const Agenda abs_scalar_gas_agenda,
const Agenda opt_prop_gas_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_prop_agenda,
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 
)

◆ 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 1187 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 Verbosity verbosity 
)

◆ ppath_step_in_cloudbox()

void ppath_step_in_cloudbox ( Workspace ws,
Ppath ppath_step,
const Agenda ppath_step_agenda,
const Index p,
const Index lat,
const Index lon,
ConstTensor3View  z_field,
ConstMatrixView  r_geoid,
ConstMatrixView  z_surface,
ConstVectorView  scat_za_grid,
ConstVectorView  aa_grid,
const Index scat_za_index,
const Index scat_aa_index,
ConstVectorView  p_grid,
ConstVectorView  lat_grid,
ConstVectorView  lon_grid 
)

Calculates for a given point and a given direction one propagation path step.

This function initializes the ppath structure and executes ppath_step_agenda. Output of the fuinction is a propagation path with two points. The starting point and the next point.

The function is needed in the sequential update (doit_i_fieldUpdateSeq3D).

Parameters
[in,out]wsCurrent workspace
ppath_stepPropagation path step
ppath_step_agendaAgenda for calculating propagation paths
pPressure index
latLatitude index
lonLongitude index
z_fieldAltitude field
r_geoidGeoid
z_surfaceSurface altitude
scat_za_gridZenith angle grid
aa_gridAzimuth angle grid
scat_za_indexZenith angle index
scat_aa_indexAzimuth angle index
p_gridPressure grid
lat_gridLatitude grid
lon_gridLongitude grid
Author
Claudia Emde
Date
2003-06-06

Definition at line 1119 of file doit.cc.

References Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, Ppath::los, Ppath::pos, ppath_init_structure(), ppath_step_agendaExecute(), and Ppath::z.

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