ARTS  2.4.0(git:4fb77825)
m_psd.cc File Reference

Workspace functions related to particle size distributions. More...

#include <cmath>
#include <cstdlib>
#include <stdexcept>
#include "array.h"
#include "arts.h"
#include "auto_md.h"
#include "check_input.h"
#include "lin_alg.h"
#include "math_funcs.h"
#include "messages.h"
#include "physics_funcs.h"
#include "psd.h"

Go to the source code of this file.

Functions

void psdMonoDispersive (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const ArrayOfArrayOfScatteringMetaData &scat_meta, const Index &species_index, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &verbosity)
 WORKSPACE METHOD: psdMonoDispersive. More...
 
void psdMonoMass (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const ArrayOfArrayOfScatteringMetaData &scat_meta, const Index &species_index, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &verbosity)
 WORKSPACE METHOD: psdMonoMass. More...
 
void psdModifiedGamma (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &n0, const Numeric &mu, const Numeric &la, const Numeric &ga, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &)
 WORKSPACE METHOD: psdModifiedGamma. More...
 
void psdModifiedGammaMass (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const Numeric &n0, const Numeric &mu, const Numeric &la, const Numeric &ga, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &)
 WORKSPACE METHOD: psdModifiedGammaMass. More...
 
void psdModifiedGammaMassNtot (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const Numeric &n0, const Numeric &mu, const Numeric &la, const Numeric &ga, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &verbosity)
 WORKSPACE METHOD: psdModifiedGammaMassNtot. More...
 
void psdModifiedGammaMassMeanParticleMass (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const Numeric &n0, const Numeric &mu, const Numeric &la, const Numeric &ga, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &verbosity)
 WORKSPACE METHOD: psdModifiedGammaMassMeanParticleMass. More...
 
void psdModifiedGammaMassXmean (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const Numeric &n0, const Numeric &mu, const Numeric &la, const Numeric &ga, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &verbosity)
 WORKSPACE METHOD: psdModifiedGammaMassXmean. More...
 
void psdModifiedGammaMassXmedian (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const Numeric &n0, const Numeric &mu, const Numeric &la, const Numeric &ga, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &verbosity)
 WORKSPACE METHOD: psdModifiedGammaMassXmedian. More...
 
void psdModifiedGammaMassSingleMoment (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const Numeric &n_alpha, const Numeric &n_b, const Numeric &mu, const Numeric &gamma, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &verbosity)
 WORKSPACE METHOD: psdModifiedGammaMassSingleMoment. More...
 
void psdDelanoeEtAl14 (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &iwc, const Numeric &n0, const Numeric &dm, const Numeric &rho, const Numeric &alpha, const Numeric &beta, const Numeric &t_min, const Numeric &t_max, const Numeric &dm_min, const Index &picky, const Verbosity &)
 WORKSPACE METHOD: psdDelanoeEtAl14. More...
 
void psdFieldEtAl07 (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const String &regime, const Numeric &t_min, const Numeric &t_max, const Numeric &t_min_psd, const Numeric &t_max_psd, const Numeric &b_min, const Numeric &b_max, const Index &picky, const Verbosity &)
 WORKSPACE METHOD: psdFieldEtAl07. More...
 
void psdMcFarquaharHeymsfield97 (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const Numeric &t_min, const Numeric &t_max, const Numeric &t_min_psd, const Numeric &t_max_psd, const Index &picky, const Index &noisy, const Verbosity &)
 WORKSPACE METHOD: psdMcFarquaharHeymsfield97. More...
 
void psdAbelBoutle12 (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &verbosity)
 WORKSPACE METHOD: psdAbelBoutle12. More...
 
void psdWangEtAl16 (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &verbosity)
 WORKSPACE METHOD: psdWangEtAl16. More...
 
void psdFieldEtAl19 (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const Numeric &scat_species_a, const Numeric &scat_species_b, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &verbosity)
 WORKSPACE METHOD: psdFieldEtAl19. More...
 
void psdSeifertBeheng06 (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const String &hydrometeor_type, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &)
 WORKSPACE METHOD: psdSeifertBeheng06. More...
 
void psdMilbrandtYau05 (Matrix &psd_data, Tensor3 &dpsd_data_dx, const Vector &psd_size_grid, const Vector &pnd_agenda_input_t, const Matrix &pnd_agenda_input, const ArrayOfString &pnd_agenda_input_names, const ArrayOfString &dpnd_data_dx_names, const String &hydrometeor_type, const Numeric &t_min, const Numeric &t_max, const Index &picky, const Verbosity &)
 WORKSPACE METHOD: psdMilbrandtYau05. More...
 

Detailed Description

Workspace functions related to particle size distributions.

Author
Patrick Eriksson, Jana Mendrok, Manfred Brath
Date
2017-11-05

Definition in file m_psd.cc.

Function Documentation

◆ psdAbelBoutle12()

void psdAbelBoutle12 ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdAbelBoutle12.

Abel and Boutle [2012] particle size distribution for rain.

Reference: Abel and Boutle, An improved representation of the raindrop size distribution for single-moment microphysics schemes, QJRMS, 2012.

This is a 1-parameter PSD, i.e. pnd_agenda_input shall have one column and pnd_agenda_input_names shall contain a single string. The input data in pnd_agenda_input shall be rain mass content in unit of [kg/m3]. The naming used is pnd_agenda_input_names is free but the same name must be used in particle_bulkprop_names and dpnd_data_dx_names*.

Particles are assumed to be near-spherical, ie. psd_size_grid can either be in terms of volume (or mass) equivalent diameter or maximum diameter.

Derivatives are obtained analytically.

The validity range of mass content is not limited. Negative mass contents will produce negative psd values following a distribution given by abs(RWC), ie. abs(psd)=f(abs(RWC)).

If temperature is outside [t_min,t_max] psd=0 and dpsd=0 if picky=0, or an error is thrown if picky=1.

Author
Patrick Eriksson
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_species_aWS Input
[in]scat_species_bWS Input
[in]t_minGeneric Input (Default: "273")
[in]t_maxGeneric Input (Default: "373")
[in]pickyGeneric Input (Default: "0")

Definition at line 1093 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_mgd_smm_common(), ARTS::Var::psd_size_grid(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and ARTS::Var::verbosity().

Referenced by psdAbelBoutle12_g().

◆ psdDelanoeEtAl14()

void psdDelanoeEtAl14 ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric iwc,
const Numeric n0Star,
const Numeric Dm,
const Numeric rho,
const Numeric alpha,
const Numeric beta,
const Numeric t_min,
const Numeric t_max,
const Numeric dm_min,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdDelanoeEtAl14.

Normalized PSD as proposed in Delanoë et al. ((2014)),

Title and journal: 'Normalized particle size distribution for remote sensing application', J. Geophys. Res. Atmos., 119, 4204–422.

The PSD has two independent parameters n0Star, the intercept parameter, and Dm, the volume-weighted diameter. This implementation expects as input two out of the following three quantities: iwc, n0Star, Dm. In this case one of the input parameters iwc, n0Star, Dm must be set to -999. It is also possible to provide only iwc, in which case an a priori assumption will be used to deduce n0Star from temperature. In this case both n0Star and Dm must be set to -999.0.

This PSD is not defined for vanishing concentrations of scatterers as it requires normalization by Dm. It is up to the user to ensure that the value of Dm is sufficiently large. An error is thrown if Dm is zero or below the value provided by dm_min.

Author
Simon Pfreundschuh
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]iwcGeneric Input (Default: "NaN")
[in]n0StarGeneric Input (Default: "NaN")
[in]DmGeneric Input (Default: "NaN")
[in]rhoGeneric Input (Default: "917.6")
[in]alphaGeneric Input (Default: "-0.237")
[in]betaGeneric Input (Default: "1.839")
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]dm_minGeneric Input (Default: "-1.0")
[in]pickyGeneric Input (Default: "0")

Definition at line 665 of file m_psd.cc.

Referenced by psdDelanoeEtAl14_g().

◆ psdFieldEtAl07()

void psdFieldEtAl07 ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const String regime,
const Numeric t_min,
const Numeric t_max,
const Numeric t_min_psd,
const Numeric t_max_psd,
const Numeric beta_min,
const Numeric beta_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdFieldEtAl07.

The Field et al. [2007] particle size distribution for snow and cloud ice.

This is a 1-parameter PSD, i.e. pnd_agenda_input shall have one column and pnd_agenda_input_names shall contain a single string. The input data in pnd_agenda_input shall be ice hydrometeor mass content in unit of [kg/m3]. The naming used is pnd_agenda_input_names is free but the same name must be used in particle_bulkprop_names and dpnd_data_dx_names*.

psd_size_grid* shall contain size in terms of maximum diameter.

Derivatives are obtained by perturbation of 0.1%, but not less than 1e-9 kg/m3.

Both parametrization for tropics and midlatitudes are handled, governed by setting of regime, where "TR" selectes the tropical case, and "ML" the midlatitude one.

The validity range of mass content is not limited. Negative mass contents will produce negative psd values following a distribution given by abs(IWC), ie. abs(psd)=f(abs(IWC)).

If temperature is outside [t_min,t_max] psd=0 and dpsd=0 if picky=0, or an error is thrown if picky=1.

For temperatures below t_min_psd, the size distribution is calculated for T = t_min_psd. Likewise, for temperatures above t_max_psd*, the distribution is derived for T = t_max_psd.

Defaults of t_min_psd and t_max_psd were set considering that the parametrization has been derived from measurements over temperatures of -60C to 0C. Checks of the sanity of the mass-dimension relationship are performed Errors are thrown if:

  • Mass-dimension relation exponent scat_species_b is outside <br> [beta_min, beta_max].

    Author
    Jana Mendrok
    Parameters
    [out]psd_dataWS Output
    [out]dpsd_data_dxWS Output
    [in]psd_size_gridWS Input
    [in]pnd_agenda_input_tWS Input
    [in]pnd_agenda_inputWS Input
    [in]pnd_agenda_input_namesWS Input
    [in]dpnd_data_dx_namesWS Input
    [in]scat_species_aWS Input
    [in]scat_species_bWS Input
    [in]regimeGeneric Input
    [in]t_minGeneric Input (Default: "0")
    [in]t_maxGeneric Input (Default: "290.")
    [in]t_min_psdGeneric Input (Default: "200.")
    [in]t_max_psdGeneric Input (Default: "273.15")
    [in]beta_minGeneric Input (Default: "1.01")
    [in]beta_maxGeneric Input (Default: "4")
    [in]pickyGeneric Input (Default: "0")

Definition at line 871 of file m_psd.cc.

References abs, ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and START_OF_PSD_METHODS.

Referenced by psdFieldEtAl07_g().

◆ psdFieldEtAl19()

void psdFieldEtAl19 ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdFieldEtAl19.

The Field [2019] particle size distribution for hail.

Reference: Field, Normalized hail particle size distributions from the T-28 storm-penetrating aircraft, JAMC, 2019

This is a 1-parmater PSD i.e. pnd_agenda_input shall have one column and pnd_agenda_input_names* shall contain a single string. The input data in pnd_agenda_input shall be hail mass content in unit of [kg/m3]. The naming used is pnd_agenda_input_names is free but the same name must be used in particle_bulkprop_names and dpnd_data_dx_names*. The parameters assume a constant effective density, i.e. scat_species_b pprox 3

Derivatives are obtained analytically.

The validity range of mass content is not limited. Negative mass contents will produce negative psd values following a distribution given by abs(HWC), ie. abs(psd)=f(abs(HWC)).

If temperature is outside [t_min,t_max] psd=0 and dpsd=0 if picky=0, or an error is thrown if picky=1.

Author
Stuart Fox
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_species_aWS Input
[in]scat_species_bWS Input
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]pickyGeneric Input (Default: "0")

Definition at line 1165 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_mgd_smm_common(), ARTS::Var::psd_size_grid(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and ARTS::Var::verbosity().

Referenced by psdFieldEtAl19_g().

◆ psdMcFarquaharHeymsfield97()

void psdMcFarquaharHeymsfield97 ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const Numeric t_min,
const Numeric t_max,
const Numeric t_min_psd,
const Numeric t_max_psd,
const Index picky,
const Index noisy,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdMcFarquaharHeymsfield97.

McFarquahar and Heymsfield [1997] particle size distribution for cloud ice.

This is a 1-parameter PSD, i.e. pnd_agenda_input shall have one column and pnd_agenda_input_names shall contain a single string. The input data in pnd_agenda_input shall be ice hydrometeor mass content in unit of [kg/m3]. The naming used is pnd_agenda_input_names is free but the same name must be used in particle_bulkprop_names and dpnd_data_dx_names*.

psd_size_grid* shall contain size in terms of volume equivalent diameter.

Derivatives are obtained by perturbation of 0.1%, but not less than 1e-9 kg/m3.

The validity range of mass content is not limited. Negative mass contents will produce negative psd values following a distribution given by abs(IWC), ie. abs(psd)=f(abs(IWC)).

If temperature is outside [t_min,t_max] psd=0 and dpsd=0 if picky=0, or an error is thrown if picky=1.

For temperatures below t_min_psd, the size distribution is calculated for T = t_min_psd. Likewise, for temperatures above t_max_psd*, the distribution is derived for T = t_max_psd.

Defaults of t_min_psd and t_max_psd were set considering that the parametrization has been derived from measurements over temperatures of -70C to -20C. The noisy option can not be used together with calculation of derivatives (ie. when dpnd_data_dx_names is not empty).

Author
Patrick Eriksson, Jana Mendrok
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_species_aWS Input
[in]scat_species_bWS Input
[in]t_minGeneric Input (Default: "0")
[in]t_maxGeneric Input (Default: "280.")
[in]t_min_psdGeneric Input (Default: "180")
[in]t_max_psdGeneric Input (Default: "273.15")
[in]pickyGeneric Input (Default: "0")
[in]noisyGeneric Input (Default: "0")

Definition at line 986 of file m_psd.cc.

References ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_t(), psd_cloudice_MH97(), ARTS::Var::psd_data(), ARTS::Var::psd_size_grid(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and START_OF_PSD_METHODS.

Referenced by psdMcFarquaharHeymsfield97_g().

◆ psdMilbrandtYau05()

void psdMilbrandtYau05 ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const String hydrometeor_type,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdMilbrandtYau05.

Calculates psd_data and dpsd_data_dx following Milbrandt and Yau (2005) two moment particle size distribution for cloud water, cloud ice, rain, snow, graupel and hail, which is used in the GEM model.

WSM for use in pnd_agenda_array for mapping particle_bulkprop_field to pnd_field using pnd_fieldCalcFromParticleBulkProps. Produces the particle size distribution values (dN/dD) and their derivates with respect to independent variables x by dpnd_data_dx_names over multiple particle sizes and atmospheric levels (or SWC/T combinations).

psd_size_grid* is considered to be in terms of maximum diameter. WC is considered to be in terms of mass content (or mass density), ie. units of [kg/m3]. N_tot in terms of number density, ie. units of [1/m3] . Derivatives with respect to WC and N_tot are obtained analytically.

Six particle size distributions for the different hydrometeors are handled, governed by setting of hydrometeor_type, where <br> "cloud_water" selects cloud liquid water , <br> "cloud_ice" selects cloud ice, <br> "snow" selects snow, <br> "rain" selects rain, <br> "graupel" selects graupel, and <br> "hail" selects hail,

Requirements:

pnd_agenda_input_names* must include : <br> ["X-mass_density", "X-number_density" ]. "X" is an arbitrary name The entries in dpnd_data_dx_names (ie. the allowed independent variablea ) can be "X-mass_density" and\or "X-number_density".

The validity range of WC is not limited. Negative WC will produce negative psd values following a distribution given by abs(WC), ie. abs(psd)=f(abs(WC)).

If temperature is outside [t_min,t_max] psd=0 and dpsd=0 if picky=0, or an error is thrown if picky=1.

Author
Manfred Brath
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]hydrometeor_typeGeneric Input
[in]t_minGeneric Input (Default: "0")
[in]t_maxGeneric Input (Default: "999")
[in]pickyGeneric Input (Default: "0")

Definition at line 1332 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), Array< base >::nelem(), my_basic_string< char >::npos, ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_MY05(), and ARTS::Var::psd_size_grid().

Referenced by psdMilbrandtYau05_g().

◆ psdModifiedGamma()

void psdModifiedGamma ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric n0,
const Numeric mu,
const Numeric la,
const Numeric ga,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdModifiedGamma.

Modified gamma distribution PSD using n0, mu, la and ga as parameters.

The modified gamma distribution is a 4-parameter (n0, mu, la and ga) distribution [Petty & Huang, JAS, 2011)]: <br> n(x) = n0 * x^mu * exp( -la*x^ga ) where x is particle size or mass.

The parameters can be given in two ways, either by pnd_agenda_input or as GIN arguments. The first option allows the parameter to vary, while in the second case the parameter gets a constant value. If a parameter is part of pnd_agenda_input, the corresponding GIN argument must be set to NaN (which is default). This means that the number of columns in pnd_agenda_input* and the number of non-NaN choices for n0, mu, la and ga must add up to four.

Data in pnd_agenda_input are linked to the MGD parameters in term of order, the naming in pnd_agenda_input_names is free. If all four parameteras are specified by pnd_agenda_input, the data in the first column are taken as n0, the second column as mu etc. If a parameter is given as a GIN argument, the columns are just shifted with one position. For example, if mu and ga are specified as GIN arguments, pnd_agenda_input shall have two columns, with n0-values in the first one and la-values in the second one.

The GIN route is especially suitable for selecting special cases of MGD. For example, by setting mu=0 and ga=1, an exponential PSD is obtained: <br> n(x) = n0 * exp( -la*x ) With mu=1 and ga=1, the gamma PSD is obtained: <br> n(x) = n0 * x^mu *exp( -la*x ) There should be little overhead in using the method for exponential and gamma PSDs, there is an internal switch to dedicated expressions for those PSDs.

Derivatives can only be obtained for parameters that are specified by pnd_agenda_input*.

If temperature is outside [t_min,t_max] psd=0 and dpsd=0 if picky=0, or an error is thrown if picky=1.

These requirements apply to the MGD parameters: <br> la > 0 <br> ga > 0

Author
Patrick Eriksson
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]n0Generic Input (Default: "NaN")
[in]muGeneric Input (Default: "NaN")
[in]laGeneric Input (Default: "NaN")
[in]gaGeneric Input (Default: "NaN")
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]pickyGeneric Input (Default: "0")

Definition at line 110 of file m_psd.cc.

References ARTS::Var::dpsd_data_dx(), joker, mgd_with_derivatives(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), ARTS::Var::psd_size_grid(), and START_OF_PSD_METHODS.

Referenced by psdModifiedGamma_g().

◆ psdModifiedGammaMass()

void psdModifiedGammaMass ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const Numeric n0,
const Numeric mu,
const Numeric la,
const Numeric ga,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdModifiedGammaMass.

Modified gamma distribution (MGD) PSD, with mass content as input.

See psdModifiedGamma for a defintion of MGD parameters and how this PSD is handled in ARTS. Only deviations with respect to psdModifiedGamma* are described here.

This version of MGD PSD takes mass content as first input argument. This means that the first column of pnd_agenda_input shall hold mass content data.

The mass content basically replaces one of the standard parameters (n0, mu, la and ga). This parameter is denoted as the dependent one. The dependent parameter is selected by setting the corresponding GIN to -999. So far only n0 and la are allowed to be dependent.

Regarding remaining columns in pnd_agenda_input and constant parameter values (by GIN) follows the same principle as for psdModifiedGamma* except that mass is always in column one (as mentioned) and that there is no position in pnd_agenda_input for the dependent parameter.

These requirements apply to the MGD parameters: <br> mu + scat_species_b + 1 > 0 <br> la > 0 <br> ga > 0 <br> If la is the dependent parameter, mass content must be > 0.

Author
Patrick Eriksson
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_species_aWS Input
[in]scat_species_bWS Input
[in]n0Generic Input (Default: "NaN")
[in]muGeneric Input (Default: "NaN")
[in]laGeneric Input (Default: "NaN")
[in]gaGeneric Input (Default: "NaN")
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]pickyGeneric Input (Default: "0")

Definition at line 253 of file m_psd.cc.

References ARTS::Var::dpsd_data_dx(), joker, mgd_with_derivatives(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_t(), pow(), ARTS::Var::psd_data(), ARTS::Var::psd_size_grid(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and START_OF_PSD_METHODS.

Referenced by psdModifiedGammaMass_g().

◆ psdModifiedGammaMassMeanParticleMass()

void psdModifiedGammaMassMeanParticleMass ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const Numeric n0,
const Numeric mu,
const Numeric la,
const Numeric ga,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdModifiedGammaMassMeanParticleMass.

Modified gamma distribution PSD, with mass content and mean particle mass (Mmean) as inputs.

"Mean particle mass" is here defined as the mass content divided with the total number density.

This version of MGD PSD works as psdModifiedGammaMass, but takes mass content and mean particle mass as first two arguments. This means that the first and second column of pnd_agenda_input shall hold mass content and Mmean, respectively. Accordingly, the number of dependent parameters is two.

These requirements apply to the MGD parameters: <br> mu + 1 > 0 <br> la > 0 <br> ga > 0 <br> Mmean must be > 0.

Author
Patrick Eriksson
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_species_aWS Input
[in]scat_species_bWS Input
[in]n0Generic Input (Default: "NaN")
[in]muGeneric Input (Default: "NaN")
[in]laGeneric Input (Default: "NaN")
[in]gaGeneric Input (Default: "NaN")
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]pickyGeneric Input (Default: "0")

Definition at line 508 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_mgd_mass_and_something(), ARTS::Var::psd_size_grid(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and ARTS::Var::verbosity().

Referenced by psdModifiedGammaMassMeanParticleMass_g().

◆ psdModifiedGammaMassNtot()

void psdModifiedGammaMassNtot ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const Numeric n0,
const Numeric mu,
const Numeric la,
const Numeric ga,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdModifiedGammaMassNtot.

Modified gamma distribution PSD, with mass content and total number density (Ntot) as inputs.

This version of MGD PSD works as psdModifiedGammaMass, but takes mass content and total number density as first two arguments. This means that the first and second column of pnd_agenda_input shall hold mass content and Ntot, respectively. Accordingly, the number of dependent parameters is two.

These requirements apply: <br> mu + 1 > 0 <br> la > 0 <br> ga > 0 <br> Ntot must be > 0.

Author
Patrick Eriksson
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_species_aWS Input
[in]scat_species_bWS Input
[in]n0Generic Input (Default: "NaN")
[in]muGeneric Input (Default: "NaN")
[in]laGeneric Input (Default: "NaN")
[in]gaGeneric Input (Default: "NaN")
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]pickyGeneric Input (Default: "0")

Definition at line 470 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_mgd_mass_and_something(), ARTS::Var::psd_size_grid(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and ARTS::Var::verbosity().

Referenced by psdModifiedGammaMassNtot_g().

◆ psdModifiedGammaMassSingleMoment()

void psdModifiedGammaMassSingleMoment ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const Numeric n_alpha,
const Numeric n_b,
const Numeric mu,
const Numeric gamma,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdModifiedGammaMassSingleMoment.

Modified gamma distribution PSD, with mass content as input.

The intercept parameter N0 is assumed dependent on the slope parameter lambda, such that N0=N_alpha*lambda^n_b with fixed N_alpha and n_b. This is a common form for many PSD parametrizations for use with single-moment mass-based schemes.

This version of MGD PSD takes mass content as first input argument. This means that the first column of pnd_agenda_input shall hold mass content data. The dependent parameter is assumed to be lambda.

Author
Stuart Fox
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_species_aWS Input
[in]scat_species_bWS Input
[in]n_alphaGeneric Input
[in]n_bGeneric Input
[in]muGeneric Input
[in]gammaGeneric Input
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]pickyGeneric Input (Default: "0")

Definition at line 622 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_mgd_smm_common(), ARTS::Var::psd_size_grid(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and ARTS::Var::verbosity().

Referenced by psdModifiedGammaMassSingleMoment_g().

◆ psdModifiedGammaMassXmean()

void psdModifiedGammaMassXmean ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const Numeric n0,
const Numeric mu,
const Numeric la,
const Numeric ga,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdModifiedGammaMassXmean.

Modified gamma distribution PSD, with mass content and mean size (Xmean) as inputs.

"Mean size" is here defined as mass weighted size. Remembering that mass is a*x^b, this mean size can be expressed as M_b+1/M_b where M_b is b:th moment of the PSD (see e.g. Eq. 17 in Petty&Huang, JAS, 2011).

This version of MGD PSD works as psdModifiedGammaMass, but takes mass content and mass size as first two arguments. This means that the first and second column of pnd_agenda_input shall hold mass content and Xmean, respectively. Accordingly, the number of dependent parameters is two.

These requirements apply to the MGD parameters: <br> mu + scat_species_b + 1 > 0 <br> la > 0 <br> ga > 0 <br> Xmean must be > 0.

Author
Patrick Eriksson
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_species_aWS Input
[in]scat_species_bWS Input
[in]n0Generic Input (Default: "NaN")
[in]muGeneric Input (Default: "NaN")
[in]laGeneric Input (Default: "NaN")
[in]gaGeneric Input (Default: "NaN")
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]pickyGeneric Input (Default: "0")

Definition at line 546 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_mgd_mass_and_something(), ARTS::Var::psd_size_grid(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and ARTS::Var::verbosity().

Referenced by psdModifiedGammaMassXmean_g().

◆ psdModifiedGammaMassXmedian()

void psdModifiedGammaMassXmedian ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const Numeric n0,
const Numeric mu,
const Numeric la,
const Numeric ga,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdModifiedGammaMassXmedian.

Modified gamma distribution PSD, with mass content and median size (Xmedian) as inputs.

This version of MGD PSD works as psdModifiedGammaMass, but takes mass content and median size as first two arguments. This means that the first and second column of pnd_agenda_input shall hold mass content and Xmedian, respectively. Accordingly, the number of dependent parameters is two.

These requirements apply to the MGD parameters: <br> mu + scat_species_b + 1 > 0 <br> la > 0 <br> ga > 0 <br> Xmedian must be > 0.

Author
Patrick Eriksson
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_species_aWS Input
[in]scat_species_bWS Input
[in]n0Generic Input (Default: "NaN")
[in]muGeneric Input (Default: "NaN")
[in]laGeneric Input (Default: "NaN")
[in]gaGeneric Input (Default: "NaN")
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]pickyGeneric Input (Default: "0")

Definition at line 584 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_mgd_mass_and_something(), ARTS::Var::psd_size_grid(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and ARTS::Var::verbosity().

Referenced by psdModifiedGammaMassXmedian_g().

◆ psdMonoDispersive()

void psdMonoDispersive ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const ArrayOfArrayOfScatteringMetaData scat_meta,
const Index species_index,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdMonoDispersive.

Mono-dispersive PSD, with number density given.

This is a 1-parameter PSD, i.e. pnd_agenda_input shall have one column and pnd_agenda_input_names shall contain a single string. The input data in pnd_agenda_input shall be number densities, in unit of [#/m3]. The naming used is pnd_agenda_input_names is free but the same name must be used in particle_bulkprop_names and dpnd_data_dx_names*.

The method checks that the scattering species indicated (by species_index*) has a single element, and just inserts the provided number density in psd_data.

If temperature is outside [t_min,t_max] psd=0 and dpsd=0 if picky=0, or an error is thrown if picky=1.

Author
Patrick Eriksson
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_metaWS Input
[in]species_indexGeneric Input
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]pickyGeneric Input (Default: "0")

Definition at line 50 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_mono_common(), ARTS::Var::scat_meta(), and ARTS::Var::verbosity().

Referenced by psdMonoDispersive_g().

◆ psdMonoMass()

void psdMonoMass ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const ArrayOfArrayOfScatteringMetaData scat_meta,
const Index species_index,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdMonoMass.

Mono-dispersive PSD, with mass content given.

This is a 1-parameter PSD, i.e. pnd_agenda_input shall have one column and pnd_agenda_input_names shall contain a single string. The input data in pnd_agenda_input shall be mass contents, in unit of [#/m3]. The naming used is pnd_agenda_input_names is free but the same name must be used in particle_bulkprop_names and dpnd_data_dx_names*.

The method checks that the scattering species indicated (by species_index*) has a single element, and sets psd_data based on the mass contents given and the particle mass (derived from scat_meta*).

If temperature is outside [t_min,t_max] psd=0 and dpsd=0 if picky=0, or an error is thrown if picky=1.

Author
Patrick Eriksson
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_metaWS Input
[in]species_indexGeneric Input
[in]t_minGeneric Input
[in]t_maxGeneric Input
[in]pickyGeneric Input (Default: "0")

Definition at line 78 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_mono_common(), ARTS::Var::scat_meta(), and ARTS::Var::verbosity().

Referenced by psdMonoMass_g().

◆ psdSeifertBeheng06()

void psdSeifertBeheng06 ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const String hydrometeor_type,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdSeifertBeheng06.

Calculates psd_data and dpsd_data_dx following Seifert and Beheng (2006) two moment particle size distribution for cloud water, cloud ice, rain, snow, graupel and hail, which is used in the ICON model.

WSM for use in pnd_agenda_array for mapping particle_bulkprop_field to pnd_field using pnd_fieldCalcFromParticleBulkProps. Produces the particle size distribution values (dN/dD) and their derivates with respect to independent variables x by dpnd_data_dx_names over multiple particle sizes and atmospheric levels (or SWC/T combinations).

psd_size_grid* is considered to be in terms of mass. WC is considered to be in terms of mass content (or mass density), ie. units of [kg/m3]. N_tot in terms of number density, ie. units of [1/m3] . Derivatives with respect to WC and N_tot are obtained analytically.

Six particle size distributions for the different hydrometeors are handled, governed by setting of hydrometeor_type, where <br> "cloud_water" selects cloud liquid water , <br> "cloud_ice" selects cloud ice, <br> "snow" selects snow, <br> "rain" selects rain, <br> "graupel" selects graupel, and <br> "hail" selects hail,

Requirements:

pnd_agenda_input_names* must include : <br> ["X-mass_density", "X-number_density" ]. "X" is an arbitrary name The entries in dpnd_data_dx_names (ie. the allowed independent variablea ) can be "X-mass_density" and\or "X-number_density".

The validity range of WC is not limited. Negative WC will produce negative psd values following a distribution given by abs(WC), ie. abs(psd)=f(abs(WC)).

If temperature is outside [t_min,t_max] psd=0 and dpsd=0 if picky=0, or an error is thrown if picky=1.

Author
Manfred Brath
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]hydrometeor_typeGeneric Input
[in]t_minGeneric Input (Default: "0")
[in]t_maxGeneric Input (Default: "999")
[in]pickyGeneric Input (Default: "0")

Definition at line 1203 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), Array< base >::nelem(), my_basic_string< char >::npos, ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_SB06(), and ARTS::Var::psd_size_grid().

Referenced by psdSeifertBeheng06_g().

◆ psdWangEtAl16()

void psdWangEtAl16 ( Matrix psd_data,
Tensor3 dpsd_data_dx,
const Vector psd_size_grid,
const Vector pnd_agenda_input_t,
const Matrix pnd_agenda_input,
const ArrayOfString pnd_agenda_input_names,
const ArrayOfString dpnd_data_dx_names,
const Numeric scat_species_a,
const Numeric scat_species_b,
const Numeric t_min,
const Numeric t_max,
const Index picky,
const Verbosity verbosity 
)

WORKSPACE METHOD: psdWangEtAl16.

Wang et al. [2016] particle size distribution for rain.

Reference: Wang et al., Investigation of liquid cloud microphysical properties of deep convective systems: 1. Parameterization raindrop size distribution and its application ..., 2016.

This is a 1-parameter PSD, i.e. pnd_agenda_input shall have one column and pnd_agenda_input_names shall contain a single string. The input data in pnd_agenda_input shall be rain mass content in unit of [kg/m3]. The naming used is pnd_agenda_input_names is free but the same name must be used in particle_bulkprop_names and dpnd_data_dx_names*.

Particles are assumed to be near-spherical, ie. psd_size_grid can either be in terms of volume (or mass) equivalent diameter or maximum diameter.

Derivatives are obtained analytically.

The validity range of mass content is not limited. Negative mass contents will produce negative psd values following a distribution given by abs(RWC), ie. abs(psd)=f(abs(RWC)).

If temperature is outside [t_min,t_max] psd=0 and dpsd=0 if picky=0, or an error is thrown if picky=1.

Author
Jana Mendrok, Patrick Eriksson
Parameters
[out]psd_dataWS Output
[out]dpsd_data_dxWS Output
[in]psd_size_gridWS Input
[in]pnd_agenda_input_tWS Input
[in]pnd_agenda_inputWS Input
[in]pnd_agenda_input_namesWS Input
[in]dpnd_data_dx_namesWS Input
[in]scat_species_aWS Input
[in]scat_species_bWS Input
[in]t_minGeneric Input (Default: "273")
[in]t_maxGeneric Input (Default: "373")
[in]pickyGeneric Input (Default: "0")

Definition at line 1127 of file m_psd.cc.

References ARTS::Var::dpnd_data_dx_names(), ARTS::Var::dpsd_data_dx(), ARTS::Var::pnd_agenda_input(), ARTS::Var::pnd_agenda_input_names(), ARTS::Var::pnd_agenda_input_t(), ARTS::Var::psd_data(), psd_mgd_smm_common(), ARTS::Var::psd_size_grid(), ARTS::Var::scat_species_a(), ARTS::Var::scat_species_b(), and ARTS::Var::verbosity().

Referenced by psdWangEtAl16_g().