ARTS  2.4.0(git:4fb77825)
disort.h File Reference

Functions for disort interface. More...

#include "agenda_class.h"
#include "matpackIV.h"
#include "mystring.h"
#include "optproperties.h"

Go to the source code of this file.

Functions

void check_disort_input (const Index &cloudbox_on, const Index &atmfields_checked, const Index &atmgeom_checked, const Index &cloudbox_checked, const Index &scat_data_checked, const Index &atmosphere_dim, const Index &stokes_dim, const ArrayOfIndex &cloudbox_limits, const ArrayOfArrayOfSingleScatteringData &scat_data, ConstVectorView za_grid, const Index &nstreams, const String &pfct_method)
 check_disort_input. More...
 
void init_ifield (Tensor7 &cloudbox_field, const Vector &f_grid, const ArrayOfIndex &cloudbox_limits, const Index &nang, const Index &stokes_dim)
 init_ifield. More...
 
void get_disortsurf_props (Vector &albedo, Numeric &btemp, ConstVectorView f_grid, const Numeric &surface_skin_t, ConstVectorView surface_scalar_reflectivity)
 get_disortsurf_props. More...
 
void run_cdisort (Workspace &ws, Tensor7 &cloudbox_field, ConstVectorView f_grid, ConstVectorView p_grid, ConstVectorView z_profile, const Numeric &z_surface, ConstVectorView t_profile, ConstMatrixView vmr_profiles, ConstMatrixView pnd_profiles, const ArrayOfArrayOfSingleScatteringData &scat_data, const Agenda &propmat_clearsky_agenda, const ArrayOfIndex &cloudbox_limits, const Numeric &surface_skin_t, const Vector &surface_scalar_reflectivity, ConstVectorView za_grid, const Index &nstreams, const Index &Npfct, const Index &quiet, const Verbosity &verbosity)
 Calculate doit_i_feild with Disort. More...
 
void get_gasoptprop (Workspace &ws, MatrixView ext_bulk_gas, const Agenda &propmat_clearsky_agenda, ConstVectorView t_profile, ConstMatrixView vmr_profiles, ConstVectorView p_grid, ConstVectorView f_grid)
 get_gasoptprop. More...
 
void get_paroptprop (MatrixView ext_bulk_par, MatrixView abs_bulk_par, const ArrayOfArrayOfSingleScatteringData &scat_data, ConstMatrixView pnd_profiles, ConstVectorView t_profile, ConstVectorView p_grid, const ArrayOfIndex &cloudbox_limits, ConstVectorView f_grid)
 get_paroptprop. More...
 
void get_dtauc_ssalb (MatrixView dtauc, MatrixView ssalb, ConstMatrixView ext_bulk_gas, ConstMatrixView ext_bulk_par, ConstMatrixView abs_bulk_par, ConstVectorView z_profile)
 get_dtauc_ssalb More...
 
void get_angs (Vector &pfct_angs, const ArrayOfArrayOfSingleScatteringData &scat_data, const Index &Npfct)
 get_angs. More...
 
void get_parZ (Tensor3 &pha_bulk_par, const ArrayOfArrayOfSingleScatteringData &scat_data, ConstMatrixView pnd_profiles, ConstVectorView t_profile, ConstVectorView pfct_angs, const ArrayOfIndex &cloudbox_limits)
 get_parZ. More...
 
void get_pfct (Tensor3 &pfct_bulk_par, ConstTensor3View &pha_bulk_par, ConstMatrixView ext_bulk_par, ConstMatrixView abs_bulk_par, const ArrayOfIndex &cloudbox_limits)
 get_pfct. More...
 
void get_pmom (Tensor3View pmom, ConstTensor3View pfct_bulk_par, ConstVectorView pfct_angs, const Index &Nlegendre)
 get_pmom More...
 
void reduced_1datm (Vector &p, Vector &z, Vector &t, Matrix &vmr, Matrix &pnd, ArrayOfIndex &cboxlims, Index &ncboxremoved, ConstVectorView p_grid, ConstVectorView z_profile, const Numeric &z_surface, ConstVectorView t_profile, ConstMatrixView vmr_profiles, ConstMatrixView pnd_profiles, const ArrayOfIndex &cloudbox_limits)
 reduced_1datm More...
 
void surf_albedoCalc (Workspace &ws, VectorView albedo, Numeric &btemp, const Agenda &surface_rtprop_agenda, ConstVectorView f_grid, ConstVectorView scat_za_grid, const Numeric &surf_alt, const Verbosity &verbosity)
 Surface albed. More...
 

Detailed Description

Functions for disort interface.

Author
Claudia Emde claud.nosp@m.ia.e.nosp@m.mde@d.nosp@m.lr.d.nosp@m.e
Date
Tue Feb 7 11:48:17 2006

Definition in file disort.h.

Function Documentation

◆ check_disort_input()

void check_disort_input ( const Index cloudbox_on,
const Index atmfields_checked,
const Index atmgeom_checked,
const Index cloudbox_checked,
const Index scat_data_checked,
const Index atmosphere_dim,
const Index stokes_dim,
const ArrayOfIndex cloudbox_limits,
const ArrayOfArrayOfSingleScatteringData scat_data,
ConstVectorView  za_grid,
const Index nstreams,
const String pfct_method 
)

check_disort_input.

*** FIXMEDOC *** in disort.cc, line 197

Checks that input of DisortCalc* is sane.

Parameters
[in]cloudbox_onas the WSV.
[in]disort_is_initializedas the WSV.
[in]atmfields_checkedas the WSV.
[in]atmgeom_checkedas the WSV.
[in]cloudbox_checkedas the WSV.
[in]scat_dataas the WSV.
[in]za_gridas the WSV.
[in]nstreamsNumber of quadrature angles (both hemispheres).
[in]pfct_methodsee DisortCalc doc.
Author
Jana Mendrok
Date
2017-02-23

Definition at line 55 of file disort.cc.

References ARTS::Var::atmfields_checked(), ARTS::Var::atmgeom_checked(), ARTS::Var::atmosphere_dim(), ARTS::Var::cloudbox_checked(), ARTS::Var::cloudbox_limits(), ARTS::Var::cloudbox_on(), is_increasing(), ConstVectorView::nelem(), PTYPE_AZIMUTH_RND, PTYPE_GENERAL, PTYPE_TOTAL_RND, PTypeToString(), ARTS::Var::scat_data(), ARTS::Var::scat_data_checked(), and ARTS::Var::za_grid().

Referenced by DisortCalc(), and DisortCalcWithARTSSurface().

◆ get_angs()

void get_angs ( Vector pfct_angs,
const ArrayOfArrayOfSingleScatteringData scat_data,
const Index Npfct 
)

get_angs.

Derives angular grid to derive bulk phase matrix/function data on for further Legendre decomposition.

Parameters
[out]pfct_angsAngular grid of pfct_bulk_par.
[in]scat_dataAs the WSV.
[in]nangNumber of angular grid points in pfct_angs. If<0,

pfct_angs is taken from scat_data (the finest za_grid used over the scat elems), else an equidistant grid with nang grid points is used.

Author
Jana Mendrok
Date
2018-04-04

Definition at line 432 of file disort.cc.

References Absorption::nelem(), nlinspace(), ARTS::Var::scat_data(), and ARTS::Var::za_grid().

Referenced by run_cdisort().

◆ get_disortsurf_props()

void get_disortsurf_props ( Vector albedo,
Numeric btemp,
ConstVectorView  f_grid,
const Numeric surface_skin_t,
ConstVectorView  surface_scalar_reflectivity 
)

get_disortsurf_props.

*** FIXMEDOC *** input/output

Derive surface property input for RT4's proprietary surface handling depending on surface reflection type.

Parameters
[out]ground_albedoScalar surface albedo (for ground_type=L).
[out]ground_reflecVector surface relfectivity (for ground_type=S).
[out]ground_indexSurface complex refractive index (for ground_type=F).
[out]btempSurface temperature
[in]f_gridAs the WSV.
[in]ground_typeSurface reflection type flag.
[in]surface_skin_tAs the WSV.
[in]surface_scalar_reflectivityAs the WSV (used with ground_type=L).
[in]surface_reflectivityAs the WSV (used with ground_type=S).
[in]surface_complex_refr_indexAs the WSV (used with ground_type=F).
[in]stokes_dimAs the WSV.
Author
Jana Mendrok
Date
2017-02-23

Definition at line 223 of file disort.cc.

References ARTS::Var::f_grid(), ARTS::Var::f_index(), max, min, ARTS::Var::surface_scalar_reflectivity(), and ARTS::Var::surface_skin_t().

Referenced by DisortCalc().

◆ get_dtauc_ssalb()

void get_dtauc_ssalb ( MatrixView  dtauc,
MatrixView  ssalb,
ConstMatrixView  ext_bulk_gas,
ConstMatrixView  ext_bulk_par,
ConstMatrixView  abs_bulk_par,
ConstVectorView  z_profile 
)

get_dtauc_ssalb

Calculates layer averaged cloud optical depth (dtauc) and single scattering albedo (ssalb) as required as DISORT subroutine input from level-based gas extinction and particle extinction and absorption.

Parameters
[out]dtaucOptical depths for all layers.
[out]ssalbSingle scattering albedos for all layers.
[in]ext_bulk_gasSee get_gasoptprop.
[in]ext_bulk_parSee get_paroptprop.
[in]abs_bulk_parSee get_paroptprop.
[in]z_profileProfile of geometrical altitudes.
Author
Jana Mendrok
Date
2018-04-04

Definition at line 396 of file disort.cc.

References abs, ARTS::Var::f_index(), ConstMatrixView::ncols(), and ConstMatrixView::nrows().

Referenced by run_cdisort().

◆ get_gasoptprop()

void get_gasoptprop ( Workspace ws,
MatrixView  ext_bulk_gas,
const Agenda propmat_clearsky_agenda,
ConstVectorView  t_profile,
ConstMatrixView  vmr_profiles,
ConstVectorView  p_grid,
ConstVectorView  f_grid 
)

get_gasoptprop.

Derives level-based gas bulk optical properties (extinction).

Parameters
[in,out]wsCurrent workspace.
[out]ext_bulk_gasGas bulk extinction (all levels & freqs).
[in]propmat_clearsky_agendaAs the WSV.
[in]t_profileTemperature profile
[in]vmr_profilesVMR profiles
[in]p_gridAs the WSV.
[in]f_gridAs the WSV.
Author
Jana Mendrok
Date
2018-04-04

Definition at line 268 of file disort.cc.

References ARTS::Var::f_grid(), joker, PropagationMatrix::Kjj(), ConstMatrixView::ncols(), ConstMatrixView::nrows(), ARTS::Var::p_grid(), ARTS::Var::propmat_clearsky_agenda(), and propmat_clearsky_agendaExecute().

Referenced by run_cdisort().

◆ get_paroptprop()

void get_paroptprop ( MatrixView  ext_bulk_par,
MatrixView  abs_bulk_par,
const ArrayOfArrayOfSingleScatteringData scat_data,
ConstMatrixView  pnd_profiles,
ConstVectorView  t_profile,
ConstVectorView  p_grid,
const ArrayOfIndex cloudbox_limits,
ConstVectorView  f_grid 
)

get_paroptprop.

Derives level-based particle bulk optical properties (extinction and absorption).

Parameters
[out]ext_bulk_parParticle bulk extinction (all levels & freqs).
[out]abs_bulk_parParticle bulk absorption (all levels & freqs).
[in]scat_dataAs the WSV.
[in]pnd_profilesPND profiles.
[in]t_profileTemperature profile
[in]p_gridAs the WSV.
[in]cloudbox_limitsAs the WSV.
[in]f_gridAs the WSV.
Author
Jana Mendrok
Date
2018-04-04

◆ get_parZ()

void get_parZ ( Tensor3 pha_bulk_par,
const ArrayOfArrayOfSingleScatteringData scat_data,
ConstMatrixView  pnd_profiles,
ConstVectorView  t_profile,
ConstVectorView  pfct_angs,
const ArrayOfIndex cloudbox_limits 
)

get_parZ.

Derives level-based particle bulk phase matrix Z (Csca scaled). NOTE: Provided on ssd's freq grid (i.e. for nf=1 only of ssd.f_grid.nelem==1) in order to avoid duplicate calculations in get_pmom (instead we duplicate the results there to the RT calc's f_grid).

Parameters
[out]pha_bulk_parParticle bulk phase function (all levels & ssd freqs).
[out]pfct_angsAngular grid of pfct_bulk_par.
[in]scat_dataAs the WSV.
[in]pnd_profilesPND profiles.
[in]t_profileTemperature profile.
[in]p_gridAs the WSV.
[in]cloudbox_limitsAs the WSV.
[in]ext_bulk_parSee get_paroptprop.
[in]abs_bulk_parSee get_paroptprop.
[in]nangNumber of angular grid points in pfct_angs. If<0,

pfct_angs is taken from scat_data (the finest za_grid used over the scat elems), else an equidistant grid with nang grid points is used.

Author
Jana Mendrok
Date
2018-04-04

Definition at line 464 of file disort.cc.

References ARTS::Var::cloudbox_limits(), joker, ConstMatrixView::ncols(), ConstVectorView::nelem(), pha_mat_Bulk(), pha_mat_NScatElems(), pha_mat_ScatSpecBulk(), and ARTS::Var::scat_data().

Referenced by run_cdisort().

◆ get_pfct()

void get_pfct ( Tensor3 pfct_bulk_par,
ConstTensor3View pha_bulk_par,
ConstMatrixView  ext_bulk_par,
ConstMatrixView  abs_bulk_par,
const ArrayOfIndex cloudbox_limits 
)

get_pfct.

Derives layer averaged particle bulk phase function P (4Pi scaled) NOTE: Provided on ssd's freq grid (i.e. for nf=1 only if ssd.f_grid.nelem==1) in order to avoid duplicate calculations in get_pmom (instead we duplicate the results there to the RT calc's f_grid).

Parameters
[out]pfct_bulk_parParticle bulk phase function (all levels & ssd freqs).
[in]pha_bulk_parSee get_parZ.
[in]ext_bulk_parSee get_paroptprop.
[in]abs_bulk_parSee get_paroptprop.
Author
Jana Mendrok
Date
2018-04-04

Definition at line 516 of file disort.cc.

References ARTS::Var::cloudbox_limits(), ARTS::Var::f_index(), joker, ConstTensor3View::ncols(), ConstTensor3View::npages(), ConstTensor3View::nrows(), and PI.

Referenced by run_cdisort().

◆ get_pmom()

void get_pmom ( Tensor3View  pmom,
ConstTensor3View  pfct_bulk_par,
ConstVectorView  pfct_angs,
const Index Nlegendre 
)

get_pmom

Calculates Legendre moments of the layer averaged phase functionss (pmom) as required as DISORT subroutine input from level-based bulk particle phase function (4-Pi normalized scalar phase matrix).

Parameters
[out]pmomLegendre moments for all layers.
[in]pfct_bulk_parSee get_pfct.
[in]pfct_angsSee get_parZ.
[in]NlegendreNumber of Legendre moments to derive.
Author
Jana Mendrok
Date
2018-04-04

Definition at line 551 of file disort.cc.

References abs, ARTS::Var::f_index(), joker, ConstTensor3View::ncols(), ConstVectorView::nelem(), ConstTensor3View::npages(), ConstTensor3View::nrows(), and PI.

Referenced by run_cdisort().

◆ init_ifield()

void init_ifield ( Tensor7 cloudbox_field,
const Vector f_grid,
const ArrayOfIndex cloudbox_limits,
const Index nang,
const Index stokes_dim 
)

init_ifield.

Initialize cloudbox_field with the right size and NaN values.

Parameters
[out]cloudbox_fieldAs the WSV.
[in]f_gridAs the WSV.
[in]cloudbox_limitsAs the WSV.
[in]nangTotal number of angles with RT output.
[in]stokes_dimAs the WSV.
Author
Jana Mendrok
Date
2017-03-06

Definition at line 207 of file disort.cc.

References ARTS::Var::cloudbox_field(), ARTS::Var::cloudbox_limits(), ARTS::Var::f_grid(), and ARTS::Var::stokes_dim().

Referenced by DisortCalc(), and DisortCalcWithARTSSurface().

◆ reduced_1datm()

void reduced_1datm ( Vector p,
Vector z,
Vector t,
Matrix vmr,
Matrix pnd,
ArrayOfIndex cboxlims,
Index ncboxremoved,
ConstVectorView  p_grid,
ConstVectorView  z_profile,
const Numeric z_surface,
ConstVectorView  t_profile,
ConstMatrixView  vmr_profiles,
ConstMatrixView  pnd_profiles,
const ArrayOfIndex cloudbox_limits 
)

reduced_1datm

Crops a 1D atmosphere, to create an atmosphere where the surface is placed at p_grid[0]. Developed to work with DISORT and RT4.

Parameters
[out]pNew pressure grid,
[out]zNew profile of geometrical altitudes.
[out]tNew temperature profile,
[out]vmrNew VMR profiles.
[out]pndNew PND profiles.
[out]cboxlimsAdjusted version of cloudbox_limits.
[out]ncboxremovedNumber of levels inside cloudbox removed
[in]p_gridOriginal pressure grid
[in]z_profileOriginal profile of geometric altitudes.
[in]z_surfaceSurface altitude.
[in]t_profileOriginal temperature profile.
[in]vmr_profilesOriginal VMR profiles.
[in]pnd_profilesOriginal PND profiles.
[in]cloudbox_limitsOriginal cloudbox limits
Author
Patrick Eriksson
Date
2019-10-22

Definition at line 693 of file disort.cc.

References abs, and ARTS::Var::z_surface().

Referenced by run_cdisort().

◆ run_cdisort()

void run_cdisort ( Workspace ws,
Tensor7 cloudbox_field,
ConstVectorView  f_grid,
ConstVectorView  p_grid,
ConstVectorView  z_profile,
const Numeric z_surface,
ConstVectorView  t_profile,
ConstMatrixView  vmr_profiles,
ConstMatrixView  pnd_profiles,
const ArrayOfArrayOfSingleScatteringData scat_data,
const Agenda propmat_clearsky_agenda,
const ArrayOfIndex cloudbox_limits,
const Numeric surface_skin_t,
const Vector surface_scalar_reflectivity,
ConstVectorView  za_grid,
const Index nstreams,
const Index Npfct,
const Index quiet,
const Verbosity verbosity 
)

Calculate doit_i_feild with Disort.

Prepares actual input variables for Disort, runs it, and sorts the output into cloudbox_field.

This version uses the C implementation of Disort based on ::run_disort.

Altitudes, temperatures, VMRs and PNDs shall be provided with lat and lon dimensions removed

Parameters
[in,out]wsCurrent workspace
[out]cloudbox_fieldRadiation field
[in]f_gridFrequency grid
[in]p_gridPressure grid
[in]z_profileProfile of geometric altitudes.
[in]z_surfaceSurface altitude.
[in]t_profileTemperature profile.
[in]vmr_profilesVMR profiles.
[in]pnd_profilesPND profiles.
[in]scat_dataArray of single scattering data
[in]propmat_clearsky_agendacalculates the absorption coefficient matrix
[in]cloudbox_limitsCloudbox limits
[in]surface_skin_tSurface skin temperature
[in]surface_scalar_reflectivitySurface scalar reflectivity
[in]za_gridZenith angle grid
[in]nstreamsNumber of quadrature angles (both hemispheres).
[in]NpfctNumber of angular grid points to calculate bulk phase function
[in]quietSilence warnings
[in]verbosityVerbosity setting
Author
Oliver Lemke
Date
2019-09-19

Definition at line 769 of file disort.cc.

References ARTS::Var::cloudbox_limits(), COSMIC_BG_TEMP, disort_verbosity, ARTS::Var::f_grid(), ARTS::Var::f_index(), get_angs(), get_dtauc_ssalb(), get_gasoptprop(), get_paroptprop(), get_parZ(), get_pfct(), get_pmom(), joker, ConstVectorView::nelem(), ARTS::Var::p_grid(), PI, ARTS::Var::propmat_clearsky_agenda(), reduced_1datm(), ARTS::Var::scat_data(), SPEED_OF_LIGHT, ARTS::Var::surface_skin_t(), ARTS::Var::verbosity(), ARTS::Var::z_surface(), and ARTS::Var::za_grid().

Referenced by DisortCalc(), and DisortCalcWithARTSSurface().

◆ surf_albedoCalc()

void surf_albedoCalc ( Workspace ws,
VectorView  albedo,
Numeric btemp,
const Agenda surface_rtprop_agenda,
ConstVectorView  f_grid,
ConstVectorView  scat_za_grid,
const Numeric surf_alt,
const Verbosity verbosity 
)

Surface albed.

Computes surface albedo for using ARTS' surface with DISORT.

Parameters
[in,out]wsThe workspace
[out]albedoThe computed albedo
[out]btempUpw. bts.
[in]surface_rtprop_agendaAgenda to compute surf. props
[in]f_gridFrequency grid
[in]scat_za_gridZenith angle grid
[in]surface_altsurface altitude
[in]verbosity
Author
Patrick Eriksson
Date
2019-10-22

Definition at line 960 of file disort.cc.

References chk_not_empty(), CREATE_OUT2, ARTS::Var::f_grid(), ARTS::Var::f_index(), is_same_within_epsilon(), joker, ConstVectorView::nelem(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_rmatrix(), ARTS::Var::surface_rtprop_agenda(), surface_rtprop_agendaExecute(), and ARTS::Var::surface_skin_t().

Referenced by DisortCalcWithARTSSurface().