ARTS
2.2.66
|
Workspace functions related to the definintion of the cloud box. More...
#include <stdexcept>
#include <cstdlib>
#include <cmath>
#include "arts.h"
#include "array.h"
#include "auto_md.h"
#include "check_input.h"
#include "xml_io.h"
#include "messages.h"
#include "gridded_fields.h"
#include "logic.h"
#include "rte.h"
#include "interpolation.h"
#include "special_interp.h"
#include "cloudbox.h"
#include "optproperties.h"
#include "math_funcs.h"
#include "physics_funcs.h"
#include "sorting.h"
Go to the source code of this file.
Functions | |
void | cloudboxOff (Index &cloudbox_on, ArrayOfIndex &cloudbox_limits, Agenda &iy_cloudbox_agenda, Tensor4 &pnd_field, ArrayOfSingleScatteringData &scat_data_array, Matrix &particle_masses, const Verbosity &) |
WORKSPACE METHOD: cloudboxOff. More... | |
void | cloudboxSetAutomatically (Index &cloudbox_on, ArrayOfIndex &cloudbox_limits, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor4 &massdensity_field, const Numeric &cloudbox_margin, const Verbosity &verbosity) |
WORKSPACE METHOD: cloudboxSetAutomatically. More... | |
void | cloudboxSetFullAtm (Index &cloudbox_on, ArrayOfIndex &cloudbox_limits, const Index &atmosphere_dim, const Vector &p_grid, const Verbosity &) |
WORKSPACE METHOD: cloudboxSetFullAtm. More... | |
void | cloudboxSetManually (Index &cloudbox_on, ArrayOfIndex &cloudbox_limits, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Numeric &p1, const Numeric &p2, const Numeric &lat1, const Numeric &lat2, const Numeric &lon1, const Numeric &lon2, const Verbosity &) |
WORKSPACE METHOD: cloudboxSetManually. More... | |
void | cloudboxSetManuallyAltitude (Index &cloudbox_on, ArrayOfIndex &cloudbox_limits, const Index &atmosphere_dim, const Tensor3 &z_field, const Vector &lat_grid, const Vector &lon_grid, const Numeric &z1, const Numeric &z2, const Numeric &lat1, const Numeric &lat2, const Numeric &lon1, const Numeric &lon2, const Verbosity &) |
WORKSPACE METHOD: cloudboxSetManuallyAltitude. More... | |
void | Massdensity_cleanup (Tensor4 &massdensity_field, const Numeric &massdensity_threshold, const Verbosity &) |
WORKSPACE METHOD: Massdensity_cleanup. More... | |
void | ParticleSpeciesInit (ArrayOfString &part_species, const Verbosity &) |
WORKSPACE METHOD: ParticleSpeciesInit. More... | |
void | ParticleSpeciesSet (ArrayOfString &part_species, const ArrayOfString &particle_tags, const String &delim, const Verbosity &verbosity) |
WORKSPACE METHOD: ParticleSpeciesSet. More... | |
void | ParticleTypeInit (ArrayOfSingleScatteringData &scat_data_array, ArrayOfGriddedField3 &pnd_field_raw, const Verbosity &) |
WORKSPACE METHOD: ParticleTypeInit. More... | |
void | ParticleTypeAdd (ArrayOfSingleScatteringData &scat_data_array, ArrayOfGriddedField3 &pnd_field_raw, const Index &atmosphere_dim, const Vector &f_grid, const String &scat_data_file, const String &pnd_field_file, const Verbosity &verbosity) |
WORKSPACE METHOD: ParticleTypeAdd. More... | |
void | ParticleTypeAddAll (ArrayOfSingleScatteringData &scat_data_array, ArrayOfGriddedField3 &pnd_field_raw, const Index &atmosphere_dim, const Vector &f_grid, const String &filelist_scat_data, const String &pnd_fieldarray_file, const Verbosity &verbosity) |
WORKSPACE METHOD: ParticleTypeAddAll. More... | |
void | ParticleType2abs_speciesAdd (ArrayOfSingleScatteringData &scat_data_array, ArrayOfGriddedField3 &vmr_field_raw, ArrayOfArrayOfSpeciesTag &abs_species, Index &propmat_clearsky_agenda_checked, Index &abs_xsec_agenda_checked, const Index &atmosphere_dim, const Vector &f_grid, const String &scat_data_file, const String &pnd_field_file, const Verbosity &verbosity) |
WORKSPACE METHOD: ParticleType2abs_speciesAdd. More... | |
void | ScatteringParticleTypeAndMetaRead (ArrayOfSingleScatteringData &scat_data_array, ArrayOfScatteringMetaData &scat_meta_array, const Vector &f_grid, const String &filename_scat_data, const String &filename_scat_meta_data, const Verbosity &verbosity) |
WORKSPACE METHOD: ScatteringParticleTypeAndMetaRead. More... | |
void | ScatteringParticlesSelect (ArrayOfSingleScatteringData &scat_data_array, ArrayOfScatteringMetaData &scat_meta_array, ArrayOfIndex &scat_data_per_part_species, const ArrayOfString &part_species, const String &delim, const Verbosity &verbosity) |
WORKSPACE METHOD: ScatteringParticlesSelect. More... | |
void | particle_massesFromMetaDataSingleCategory (Matrix &particle_masses, const ArrayOfScatteringMetaData &scat_meta_array, const Verbosity &) |
WORKSPACE METHOD: particle_massesFromMetaDataSingleCategory. More... | |
void | particle_massesFromMetaDataAndPart_species (Matrix &particle_masses, const ArrayOfScatteringMetaData &scat_meta_array, const ArrayOfIndex &scat_data_per_part_species, const ArrayOfString &part_species, const Verbosity &) |
WORKSPACE METHOD: particle_massesFromMetaDataAndPart_species. More... | |
void | pnd_fieldCalc (Tensor4 &pnd_field, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const ArrayOfGriddedField3 &pnd_field_raw, const Index &atmosphere_dim, const ArrayOfIndex &cloudbox_limits, const Index &zeropadding, const Verbosity &verbosity) |
WORKSPACE METHOD: pnd_fieldCalc. More... | |
void | pnd_fieldExpand1D (Tensor4 &pnd_field, const Index &atmosphere_dim, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Index &nzero, const Verbosity &) |
WORKSPACE METHOD: pnd_fieldExpand1D. More... | |
void | pnd_fieldZero (Tensor4 &pnd_field, ArrayOfSingleScatteringData &scat_data_array, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Verbosity &) |
WORKSPACE METHOD: pnd_fieldZero. More... | |
void | pnd_fieldSetup (Tensor4 &pnd_field, const Index &atmosphere_dim, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Tensor4 &massdensity_field, const Tensor3 &t_field, const ArrayOfScatteringMetaData &scat_meta_array, const ArrayOfString &part_species, const ArrayOfIndex &scat_data_per_part_species, const String &delim, const Verbosity &verbosity) |
WORKSPACE METHOD: pnd_fieldSetup. More... | |
void | dN_MH97 (Vector &dN, const Vector &Dme, const Numeric &IWC, const Numeric &t, const Vector &density, const Index &noisy, const Verbosity &) |
WORKSPACE METHOD: dN_MH97. More... | |
void | dN_H11 (Vector &dN, const Vector &Dmax, const Numeric &t, const Verbosity &) |
WORKSPACE METHOD: dN_H11. More... | |
void | dN_Ar_H13 (Vector &dN, Vector &Ar, const Vector &Dmax, const Numeric &t, const Verbosity &) |
WORKSPACE METHOD: dN_Ar_H13. More... | |
void | dN_F07TR (Vector &dN, const Vector &diameter_max, const Numeric &SWC, const Numeric &t, const Numeric &alpha, const Numeric &beta, const Verbosity &) |
WORKSPACE METHOD: dN_F07TR. More... | |
void | dN_F07ML (Vector &dN, const Vector &diameter_max, const Numeric &SWC, const Numeric &t, const Numeric &alpha, const Numeric &beta, const Verbosity &) |
WORKSPACE METHOD: dN_F07ML. More... | |
void | dN_MGD_LWC (Vector &dN, const Vector &deq, const Numeric &rho, const Numeric &LWC, const Verbosity &) |
WORKSPACE METHOD: dN_MGD_LWC. More... | |
void | dN_MGD_IWC (Vector &dN, const Vector &deq, const Numeric &rho, const Numeric &IWC, const Verbosity &) |
WORKSPACE METHOD: dN_MGD_IWC. More... | |
void | dN_H98 (Vector &dN, const Vector &R, const Numeric &LWC, const Vector &density, const Verbosity &) |
WORKSPACE METHOD: dN_H98. More... | |
void | dN_MP48 (Vector &dN, const Vector &Dme, const Numeric &PR, const Verbosity &) |
WORKSPACE METHOD: dN_MP48. More... | |
void | pndFromdN (Vector &pnd, const Vector &dN, const Vector &diameter, const Numeric &total_content, const Vector &scatelem_volume, const Vector &scatelem_density, const Verbosity &verbosity) |
WORKSPACE METHOD: pndFromdN. More... | |
Variables | |
const Index | GFIELD3_P_GRID |
const Index | GFIELD3_LAT_GRID |
const Index | GFIELD3_LON_GRID |
const Numeric | PI |
Workspace functions related to the definintion of the cloud box.
These functions are listed in the doxygen documentation as entries of the file auto_md.h.
Definition in file m_cloudbox.cc.
void cloudboxOff | ( | Index & | cloudbox_on, |
ArrayOfIndex & | cloudbox_limits, | ||
Agenda & | iy_cloudbox_agenda, | ||
Tensor4 & | pnd_field, | ||
ArrayOfSingleScatteringData & | scat_data_array, | ||
Matrix & | particle_masses, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: cloudboxOff.
Deactivates the cloud box.
Use this method if no scattering calculations shall be performed.
The function sets cloudbox_on to 0, cloudbox_limits, pnd_field*, scat_data_array, iy_cloudbox_agenda and particle_masses* to be empty and use_mean_scat_data to -999.
[out] | cloudbox_on | WS Output |
[out] | cloudbox_limits | WS Output |
[out] | iy_cloudbox_agenda | WS Output |
[out] | pnd_field | WS Output |
[out] | scat_data_array | WS Output |
[out] | particle_masses | WS Output |
Definition at line 76 of file m_cloudbox.cc.
References Tensor4::resize(), Matrix::resize(), and Agenda::set_name().
Referenced by cloudboxOff_g().
void cloudboxSetAutomatically | ( | Index & | cloudbox_on, |
ArrayOfIndex & | cloudbox_limits, | ||
const Index & | atmosphere_dim, | ||
const Vector & | p_grid, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Tensor4 & | massdensity_field, | ||
const Numeric & | cloudbox_margin, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: cloudboxSetAutomatically.
Sets the cloud box to encompass the cloud given by the entries in massdensity_field.
The function must be called before any cloudbox_limits using WSMs. NOTE: only 1-dim case is handeled in the moment!
The function iterates over all part_species and performs a check, to see if the corresponding scattering particle profiles do not contain a cloud (all values equal zero). If, after all iterations, all the considrered profiles proove to contain no cloud, the cloudbox is switched off! (see WSM cloudboxOff)
Each scattering particle profile is searched for the first and last pressure index, where the value is unequal to zero. This index is then copied to cloudbox_limits.
Additionaly the lower cloudbox_limit is altered by cloudbox_margin*. The margin is given as a height difference in meters and trasformed into a pressure.(via isothermal barometric heightformula) This alteration is needed to ensure, that scattered photons do not leave and re-enter the cloudbox, due to its convex shape. If cloudbox_margin is set to -1 (default), the cloudbox will extend to the surface. Hence the lower cloudbox_limit is set to 0 (index of first pressure level).
[out] | cloudbox_on | WS Output |
[out] | cloudbox_limits | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | p_grid | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | massdensity_field | WS Input |
[in] | cloudbox_margin | Generic Input (Default: "-1") |
Definition at line 97 of file m_cloudbox.cc.
References barometric_heightformula(), chk_atm_grids(), chk_if_in_range(), chk_massdensity_field(), CREATE_OUT0, CREATE_OUT2, DEBUG_ONLY, joker, max, min, ConstTensor4View::nbooks(), ConstTensor4View::ncols(), ConstVectorView::nelem(), ConstTensor4View::npages(), and ConstTensor4View::nrows().
Referenced by cloudboxSetAutomatically_g().
void cloudboxSetFullAtm | ( | Index & | cloudbox_on, |
ArrayOfIndex & | cloudbox_limits, | ||
const Index & | atmosphere_dim, | ||
const Vector & | p_grid, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: cloudboxSetFullAtm.
Sets the cloudbox to cover the full atmosphere.
Can only handle atmosphere_dim=1 cases.
[out] | cloudbox_on | WS Output |
[out] | cloudbox_limits | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | p_grid | WS Input |
Definition at line 343 of file m_cloudbox.cc.
References ConstVectorView::nelem().
Referenced by cloudboxSetFullAtm_g().
void cloudboxSetManually | ( | Index & | cloudbox_on, |
ArrayOfIndex & | cloudbox_limits, | ||
const Index & | atmosphere_dim, | ||
const Vector & | p_grid, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Numeric & | p1, | ||
const Numeric & | p2, | ||
const Numeric & | lat1, | ||
const Numeric & | lat2, | ||
const Numeric & | lon1, | ||
const Numeric & | lon2, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: cloudboxSetManually.
Sets the cloud box to encompass the given positions.
The function sets cloudbox_on to 1 and sets cloudbox_limits following the given pressure, latitude and longitude positions. The index limits in cloudbox_limits are selected to give the smallest possible cloud box that encompass the given points.
The points must be given in the same order as used in cloudbox_limits*. That means that the first keyword argument shall be a higher pressure than argument two, while the latitude and longitude points are given in increasing order. Positions given for dimensions not used by the selected atmospheric dimensionality are ignored.
The given pressure points can be outside the range of p_grid. The pressure limit is then set to the end point of p_grid. The given latitude and longitude points must be inside the range of the corresponding grid. In addition, the latitude and longitude points cannot be inside the outermost grid ranges as the latitude and longitude limits in cloudbox_limits are not allowed to be grid end points.
[out] | cloudbox_on | WS Output |
[out] | cloudbox_limits | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | p_grid | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | p1 | Generic Input |
[in] | p2 | Generic Input |
[in] | lat1 | Generic Input |
[in] | lat2 | Generic Input |
[in] | lon1 | Generic Input |
[in] | lon2 | Generic Input |
Definition at line 365 of file m_cloudbox.cc.
References chk_atm_grids(), chk_if_in_range(), and ConstVectorView::nelem().
Referenced by cloudboxSetManually_g(), and ybatchMetProfiles().
void cloudboxSetManuallyAltitude | ( | Index & | cloudbox_on, |
ArrayOfIndex & | cloudbox_limits, | ||
const Index & | atmosphere_dim, | ||
const Tensor3 & | z_field, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Numeric & | z1, | ||
const Numeric & | z2, | ||
const Numeric & | lat1, | ||
const Numeric & | lat2, | ||
const Numeric & | lon1, | ||
const Numeric & | lon2, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: cloudboxSetManuallyAltitude.
Sets the cloud box to encompass the given positions.
As cloudboxSetManually but uses altitudes instead of pressure. The given altitude points can be outside the range of z_field. The altitude limit is then set to the end point of p_grid.
[out] | cloudbox_on | WS Output |
[out] | cloudbox_limits | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | z_field | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | z1 | Generic Input |
[in] | z2 | Generic Input |
[in] | lat1 | Generic Input |
[in] | lat2 | Generic Input |
[in] | lon1 | Generic Input |
[in] | lon2 | Generic Input |
Definition at line 468 of file m_cloudbox.cc.
References chk_if_in_range(), ConstVectorView::nelem(), and ConstTensor3View::npages().
Referenced by cloudboxSetManuallyAltitude_g().
void dN_Ar_H13 | ( | Vector & | dN, |
Vector & | Ar, | ||
const Vector & | Dmax, | ||
const Numeric & | t, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: dN_Ar_H13.
Calculation of particle size and shape distribution (dN/dD, area ratio) following Heymsfield (2013).
A wrapper to internal particle size and shape distribution calculation. Heymsfield (2013) is a globally valid parametrization for cloud ice. The parametrization is in ambient atmospheric temperature over particle size in terms of maximum dimension. It provides the shape of the distribution function of both number density and area ratio.
For testing purposes mainly.
[out] | dN | Generic output |
[out] | Ar | Generic output |
[in] | Dmax | Generic Input |
[in] | t | Generic Input |
Definition at line 1913 of file m_cloudbox.cc.
References area_ratioH13(), IWCtopnd_H13Shape(), ConstVectorView::nelem(), and Vector::resize().
Referenced by dN_Ar_H13_g().
void dN_F07ML | ( | Vector & | dN, |
const Vector & | diameter_max, | ||
const Numeric & | SWC, | ||
const Numeric & | t, | ||
const Numeric & | alpha, | ||
const Numeric & | beta, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: dN_F07ML.
Calculation of particle size distribution (dN/dD) following Field et al. (2007) for mid latitude parametrization.
A wrapper to internal particle size distribution calculation. Field et al. (2007) for mid latitude is a parametrization for Snow and cloud ice in the mid latitude. Parametrization is in ice water content (IWC) and ambient atmospheric temperature over particle size in terms of maximum diameter. Provides number density normalized to the given snow/ice water content.
[out] | dN | Generic output |
[in] | diameter_max | Generic Input |
[in] | SWC | Generic Input |
[in] | t | Generic Input |
[in] | alpha | Generic Input (Default: "0.0257") |
[in] | beta | Generic Input (Default: "2.0") |
Definition at line 1958 of file m_cloudbox.cc.
References beta, IWCtopnd_F07ML(), ConstVectorView::nelem(), and Vector::resize().
Referenced by dN_F07ML_g().
void dN_F07TR | ( | Vector & | dN, |
const Vector & | diameter_max, | ||
const Numeric & | SWC, | ||
const Numeric & | t, | ||
const Numeric & | alpha, | ||
const Numeric & | beta, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: dN_F07TR.
Calculation of particle size distribution (dN/dD) following Field et al. (2007) for tropics parametrization.
A wrapper to internal particle size distribution calculation. Field et al. (2007) for tropics is a parametrization for Snow and cloud ice in the tropics. Parametrization is in ice water content (IWC) and ambient atmospheric temperature over particle size in terms of maximum diameter. Provides number density normalized to the given snow/ice water content.
[out] | dN | Generic output |
[in] | diameter_max | Generic Input |
[in] | SWC | Generic Input |
[in] | t | Generic Input |
[in] | alpha | Generic Input (Default: "0.0257") |
[in] | beta | Generic Input (Default: "2.0") |
Definition at line 1936 of file m_cloudbox.cc.
References beta, IWCtopnd_F07TR(), ConstVectorView::nelem(), and Vector::resize().
Referenced by dN_F07TR_g().
WORKSPACE METHOD: dN_H11.
Calculation of particle size distribution (dN/dD) following a parametrization by Heymsfield (2011; unpublished).
A wrapper to internal particle size distribution calculation. Heymsfield (2011) is an unpublished pre-version of Heymsfield (2013). It is a globally valid parametrization for cloud ice. The parametrization is in ambient atmospheric temperature over particle size in terms of maximum dimension of the particles. Provides only the shape of the number density disribution function.
For testing purposes mainly.
[out] | dN | Generic output |
[in] | Dmax | Generic Input |
[in] | t | Generic Input |
Definition at line 1894 of file m_cloudbox.cc.
References IWCtopnd_H11(), ConstVectorView::nelem(), and Vector::resize().
Referenced by dN_H11_g().
void dN_H98 | ( | Vector & | dN, |
const Vector & | R, | ||
const Numeric & | LWC, | ||
const Vector & | density, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: dN_H98.
Calculation of particle size shape distribution (dN/dR) following Hess et al. (1998).
A wrapper to internal particle size distribution calculation. The distribution implemented here is for cloud liquid water, specifically for continental stratus. The parametrization is over radius of spherical droplets. Provides number density normalized to the given liquid water content.
For testing purposes mainly.
[out] | dN | Generic output |
[in] | R | Generic Input |
[in] | LWC | Generic Input |
[in] | density | Generic Input |
Definition at line 2023 of file m_cloudbox.cc.
References LWCtopnd(), ConstVectorView::nelem(), and Vector::resize().
Referenced by dN_H98_g().
void dN_MGD_IWC | ( | Vector & | dN, |
const Vector & | deq, | ||
const Numeric & | rho, | ||
const Numeric & | IWC, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: dN_MGD_IWC.
Calculation of particle size distribution (dN/dD) according to the modified gamma distribution for cloud ice inside of Geer and Baordo (2014)
A wrapper to internal particle size distribution calculation. MDG_IWC is a parametrization for cloud ice. It is a modified gamma distribution with the coefficients of Geer and Baordo (2014) Parametrization is in liquid water content (IWC) Assumptions are: density of particles is constant and particle shape is sphere. Provides number density normalized to the given ice water content.
[out] | dN | Generic output |
[in] | deq | Generic Input |
[in] | rho | Generic Input |
[in] | IWC | Generic Input |
Definition at line 2001 of file m_cloudbox.cc.
References IWCtopnd_MGD_IWC(), ConstVectorView::nelem(), and Vector::resize().
Referenced by dN_MGD_IWC_g().
void dN_MGD_LWC | ( | Vector & | dN, |
const Vector & | deq, | ||
const Numeric & | rho, | ||
const Numeric & | LWC, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: dN_MGD_LWC.
Calculation of particle size distribution (dN/dD) according to the modified gamma distribution for cloud water inside of Geer and Baordo (2014)
A wrapper to internal particle size distribution calculation. MDG_LWC is a parametrization for cloud liquid water. It is a modified gamma distribution with the coefficients of Geer and Baordo (2014) Parametrization is in liquid water content (LWC) Assumptions are: density of particles is constant and particle shape is sphere. Provides number density normalized to the given liquid water content.
[out] | dN | Generic output |
[in] | deq | Generic Input |
[in] | rho | Generic Input |
[in] | LWC | Generic Input |
Definition at line 1981 of file m_cloudbox.cc.
References LWCtopnd_MGD_LWC(), ConstVectorView::nelem(), and Vector::resize().
Referenced by dN_MGD_LWC_g().
void dN_MH97 | ( | Vector & | dN, |
const Vector & | Dme, | ||
const Numeric & | IWC, | ||
const Numeric & | t, | ||
const Vector & | density, | ||
const Index & | noisy, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: dN_MH97.
Calculation of particle size distribution (dN/dD) following McFarquahar and Heymsfield (1997) parametrization.
A wrapper to internal particle size distribution calculation. McFarquhar and Heymsfield (1997) is a parametrization for cloud ice in the tropics. Parametrization is in ice water content (IWC) and ambient atmospheric temperature over particle size in terms of mass equivalent sphere diameter. McFarquhar and Heymsfield (1997) additionally provide uncertainties of the distribution's parameters, which can be used here to created perturbed distributions (set noisy to 1). Provides number density normalized to the given ice water content.
For testing purposes mainly.
[out] | dN | Generic output |
[in] | Dme | Generic Input |
[in] | IWC | Generic Input |
[in] | t | Generic Input |
[in] | density | Generic Input |
[in] | noisy | Generic Input (Default: "0") |
Definition at line 1863 of file m_cloudbox.cc.
References IWCtopnd_MH97(), ConstVectorView::nelem(), and Vector::resize().
Referenced by dN_MH97_g().
WORKSPACE METHOD: dN_MP48.
Calculation of particle size distribution (dN/dD) following Marshall and Palmer (1948) parametrization.
A wrapper to internal particle size distribution calculation. Marshall and Palmer (1948) is a parametrization for liquid and ice precipitation, i.e., rain and snow. Parametrization is in precipitation rate (PR) over particle size in terms of mass equivalent sphere diameter. Provides number density normalized to the given precipitation rate.
For testing purposes mainly.
[out] | dN | Generic output |
[in] | Dme | Generic Input |
[in] | PR | Generic Input |
Definition at line 2052 of file m_cloudbox.cc.
References ConstVectorView::nelem(), and PRtopnd_MP48().
Referenced by dN_MP48_g().
void Massdensity_cleanup | ( | Tensor4 & | massdensity_field, |
const Numeric & | massdensity_threshold, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: Massdensity_cleanup.
This WSM checks if massdensity_field contains values smaller than massdensity_threshold*. In this case, these values will be set to zero.
The Method should be applied if massdensity_field contains unrealistic small or erroneous data. (e.g. the chevallierl_91l data sets contain these small values)
Massdensity_cleanup* is called after generation of atmopheric fields.
Default value*: 1e-15
[out] | massdensity_field | WS Output |
[in] | massdensity_threshold | Generic Input (Default: "1e-15") |
Definition at line 570 of file m_cloudbox.cc.
References ConstTensor4View::nbooks(), ConstTensor4View::ncols(), ConstTensor4View::npages(), and ConstTensor4View::nrows().
Referenced by Massdensity_cleanup_g().
void particle_massesFromMetaDataAndPart_species | ( | Matrix & | particle_masses, |
const ArrayOfScatteringMetaData & | scat_meta_array, | ||
const ArrayOfIndex & | scat_data_per_part_species, | ||
const ArrayOfString & | part_species, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: particle_massesFromMetaDataAndPart_species.
Derives particle_masses from scat_meta_array.
This method is supposed to be used to derive particle_masses when pnd_field is internally calculated using pnd_fieldSetup (in contrast to reading it from external sources using ParticleTypeAdd* and pnd_fieldCalc). It extracts particle the mass information (density*volume) from scat_meta_array*. Different entries in part_species are taken as different categories of particle_masses, i.e., the resulting particle_masses matrix will contain as many columns as entries exist in part_species.
[out] | particle_masses | WS Output |
[in] | scat_meta_array | WS Input |
[in] | scat_data_per_part_species | WS Input |
[in] | part_species | WS Input |
Definition at line 1054 of file m_cloudbox.cc.
References Array< base >::nelem(), and Matrix::resize().
Referenced by particle_massesFromMetaDataAndPart_species_g().
void particle_massesFromMetaDataSingleCategory | ( | Matrix & | particle_masses, |
const ArrayOfScatteringMetaData & | scat_meta_array, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: particle_massesFromMetaDataSingleCategory.
Sets particle_masses based on scat_meta_array assuming all particles are of the same mass category.
This method calculates the particle masses as density*volume for each particle type. Single phase particles, and that all all particles consist of the same (bulk) matter (e.g. water or ice) are assumed. With other words, a single mass category is assumed (see particle_masses for a definition of "mass category").
To be clear, the above are assumptions of the method, the user is free to work with any particle type. For Earth and just having cloud and particles, the resulting mass category can be seen as the total cloud water content, with possible contribution from both ice and liquid phase.
[out] | particle_masses | WS Output |
[in] | scat_meta_array | WS Input |
Definition at line 1015 of file m_cloudbox.cc.
References Array< base >::nelem(), and Matrix::resize().
Referenced by particle_massesFromMetaDataSingleCategory_g().
void ParticleSpeciesInit | ( | ArrayOfString & | part_species, |
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: ParticleSpeciesInit.
Initializes empty part_species array.
[out] | part_species | WS Output |
Definition at line 598 of file m_cloudbox.cc.
Referenced by ParticleSpeciesInit_g().
void ParticleSpeciesSet | ( | ArrayOfString & | part_species, |
const ArrayOfString & | particle_tags, | ||
const String & | delim, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: ParticleSpeciesSet.
Sets the WSV part_species. With this function, the user specifies settings for the particle number density calculations using pnd_fieldSetup. The input is an ArrayOfString that needs to be in a specific format, for details, see WSV part_species.
Example:* ['IWC-MH97-Ice-0.1-200', 'LWC-H98_STCO-Water-0.1-50']
NOTE: The order of the Strings need to match the order of the atm_fields_compact* field names, their number determines how many fields of atm_fields_compact are considered particle profiles.
[out] | part_species | WS Output |
[in] | particle_tags | Generic Input |
[in] | delim | Generic Input (Default: "-") |
Definition at line 606 of file m_cloudbox.cc.
References chk_part_species(), CREATE_OUT3, and Array< base >::nelem().
Referenced by ParticleSpeciesSet_g().
void ParticleType2abs_speciesAdd | ( | ArrayOfSingleScatteringData & | scat_data_array, |
ArrayOfGriddedField3 & | vmr_field_raw, | ||
ArrayOfArrayOfSpeciesTag & | abs_species, | ||
Index & | propmat_clearsky_agenda_checked, | ||
Index & | abs_xsec_agenda_checked, | ||
const Index & | atmosphere_dim, | ||
const Vector & | f_grid, | ||
const String & | filename_scat_data, | ||
const String & | filename_pnd_field, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: ParticleType2abs_speciesAdd.
Appends an instance of species 'particles' to abs_species including reading single scattering data and corresponding pnd field.
The methods reads the specified single scattering and pnd_field data and appends the obtained data to scat_data_array and vmr_field_raw*. It also appends one instance of species 'particles' to abs_species.
[out] | scat_data_array | WS Output |
[out] | vmr_field_raw | WS Output |
[out] | abs_species | WS Output |
[out] | propmat_clearsky_agenda_checked | WS Output |
[out] | abs_xsec_agenda_checked | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | f_grid | WS Input |
[in] | filename_scat_data | Generic Input |
[in] | filename_pnd_field | Generic Input |
Definition at line 759 of file m_cloudbox.cc.
References abs_speciesAdd(), chk_if_in_range(), chk_if_increasing(), chk_pnd_data(), chk_scat_data(), CREATE_OUT1, CREATE_OUT2, Array< base >::nelem(), ConstVectorView::nelem(), my_basic_string< charT >::nelem(), and xml_read_from_file().
Referenced by ParticleType2abs_speciesAdd_g().
void ParticleTypeAdd | ( | ArrayOfSingleScatteringData & | scat_data_array, |
ArrayOfGriddedField3 & | pnd_field_raw, | ||
const Index & | atmosphere_dim, | ||
const Vector & | f_grid, | ||
const String & | filename_scat_data, | ||
const String & | filename_pnd_field, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: ParticleTypeAdd.
Reads single scattering data and corresonding particle number density fields.
The methods reads the specified files and appends the obtained data to scat_data_array and pnd_field_raw.
[out] | scat_data_array | WS Output |
[out] | pnd_field_raw | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | f_grid | WS Input |
[in] | filename_scat_data | Generic Input |
[in] | filename_pnd_field | Generic Input |
Definition at line 643 of file m_cloudbox.cc.
References chk_if_in_range(), chk_if_increasing(), chk_pnd_data(), chk_scat_data(), CREATE_OUT1, CREATE_OUT2, Array< base >::nelem(), ConstVectorView::nelem(), my_basic_string< charT >::nelem(), and xml_read_from_file().
Referenced by ParticleTypeAdd_g().
void ParticleTypeAddAll | ( | ArrayOfSingleScatteringData & | scat_data_array, |
ArrayOfGriddedField3 & | pnd_field_raw, | ||
const Index & | atmosphere_dim, | ||
const Vector & | f_grid, | ||
const String & | filelist_scat_data, | ||
const String & | filename_pnd_fieldarray, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: ParticleTypeAddAll.
Reads single scattering data and particle number densities.
The WSV pnd_field_raw containing particle number densities for all scattering particle species can be generated outside ARTS, for example by using PyARTS. This method needs as input an XML-file containing an array of filenames (ArrayOfString) of single scattering data and a file containing the corresponding pnd_field_raw*. In contrast to the scattering data, all corresponding pnd-fields are stored in a single XML-file containing an ArrayofGriddedField3
Important note: The order of the filenames for the scattering data files has to correspond to the order of the pnd-fields, stored in the variable pnd_field_raw*.
[out] | scat_data_array | WS Output |
[out] | pnd_field_raw | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | f_grid | WS Input |
[in] | filelist_scat_data | Generic Input |
[in] | filename_pnd_fieldarray | Generic Input |
Definition at line 705 of file m_cloudbox.cc.
References chk_if_in_range(), chk_if_increasing(), chk_pnd_raw_data(), chk_scat_data(), CREATE_OUT2, Array< base >::nelem(), ConstVectorView::nelem(), and xml_read_from_file().
Referenced by ParticleTypeAddAll_g().
void ParticleTypeInit | ( | ArrayOfSingleScatteringData & | scat_data_array, |
ArrayOfGriddedField3 & | pnd_field_raw, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: ParticleTypeInit.
Initializes scat_data_array and pnd_field_raw.
This method initializes variables containing data about the optical properties of particles (scat_data_array) and about the particle number distribution (pnd_field_raw)
This method has to be executed before executing e.g. ParticleTypeAdd*.
[out] | scat_data_array | WS Output |
[out] | pnd_field_raw | WS Output |
Definition at line 632 of file m_cloudbox.cc.
Referenced by ParticleTypeInit_g().
void pnd_fieldCalc | ( | Tensor4 & | pnd_field, |
const Vector & | p_grid, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const ArrayOfGriddedField3 & | pnd_field_raw, | ||
const Index & | atmosphere_dim, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Index & | zeropadding, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: pnd_fieldCalc.
Interpolation of particle number density fields to calculation grid inside cloudbox.
This method interpolates the particle number density field from the raw data pnd_field_raw to obtain pnd_field. For 1D cases, where internally GriddedFieldPRegrid and GriddedFieldLatLonRegrid* are applied, zeropadding=1 sets the pnd_field* at pressure levels levels exceeding pnd_field_raw's pressure grid to 0 (not implemented for 2D and 3D yet). Default: zeropadding=0, which throws an error if the calculation pressure grid p_grid* is not completely covered by pnd_field_raw's pressure grid.
[out] | pnd_field | WS Output |
[in] | p_grid | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | pnd_field_raw | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | cloudbox_limits | WS Input |
[in] | zeropadding | Generic Input (Default: "0") |
Definition at line 1092 of file m_cloudbox.cc.
References chk_atm_grids(), chk_pnd_field_raw_only_in_cloudbox(), CREATE_OUT0, FieldFromGriddedField(), GFIELD3_LAT_GRID, GFIELD3_LON_GRID, GFIELD3_P_GRID, GriddedFieldPRegrid(), gridpos(), interp(), interpweights(), joker, Array< base >::nelem(), p2gridpos(), and Tensor4::resize().
Referenced by pnd_fieldCalc_g().
void pnd_fieldExpand1D | ( | Tensor4 & | pnd_field, |
const Index & | atmosphere_dim, | ||
const Index & | cloudbox_on, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Index & | nzero, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: pnd_fieldExpand1D.
Maps a 1D pnd_field to a (homogeneous) 2D or 3D pnd_field.
This method takes a 1D pnd_field and converts it to a 2D or 3D "cloud". It is assumed that a complete 1D case has been created, and after this atmosphere_dim, lat_grid, lon_grid and cloudbox_limits* have been changed to a 2D or 3D case (without changing the vertical extent of the cloudbox.
No modification of pnd_field is made for the pressure dimension. At the latitude and longitude cloudbox edge points pnd_field is set to zero. This corresponds to nzero=1. If you want a larger margin between the lat and lon cloudbox edges and the "cloud" you increase nzero*, where nzero is the number of grid points for which pnd_field* shall be set to 0, counted from each lat and lon edge.
See further AtmFieldsExpand1D.
[out] | pnd_field | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_limits | WS Input |
[in] | nzero | Generic Input (Default: "1") |
Definition at line 1289 of file m_cloudbox.cc.
References ConstTensor4View::nbooks(), ConstTensor4View::ncols(), ConstTensor4View::npages(), ConstTensor4View::nrows(), and Tensor4::resize().
Referenced by pnd_fieldExpand1D_g().
void pnd_fieldSetup | ( | Tensor4 & | pnd_field, |
const Index & | atmosphere_dim, | ||
const Index & | cloudbox_on, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Tensor4 & | massdensity_field, | ||
const Tensor3 & | t_field, | ||
const ArrayOfScatteringMetaData & | scat_meta_array, | ||
const ArrayOfString & | part_species, | ||
const ArrayOfIndex & | scat_data_per_part_species, | ||
const String & | delim, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: pnd_fieldSetup.
Calculation of pnd_field using ScatteringMetaData and massdensity_field.
The WSM first checks if cloudbox is empty. If so, the pnd calculations will be skipped. The cloudbox_limits are used to determine the p, lat and lon size for the pnd_field tensor. Currently there are three particle size distribution (PSD) parameterisations implemented:
According to the selection criteria in part_species, the first specified psd parametrisation is selected together with all particles of specified phase and size. Then pnd calculations are performed on all levels inside the cloudbox. The massdensity_field input weights the pnds by the amount of scattering particles in each gridbox inside the cloudbox. Where massdensity_field is zero, the pnd_field will be zero as well. Subsequently the pnd values get written to pnd_field.
Now the next selection criteria string in part_species is used to repeat the process.The new pnd values will be appended to the existing pnd_field. And so on...
NOTE: the order of scattering particle profiles in massdensity_field has to fit the order of part_species tags!
[out] | pnd_field | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | cloudbox_on | WS Input |
[in] | cloudbox_limits | WS Input |
[in] | massdensity_field | WS Input |
[in] | t_field | WS Input |
[in] | scat_meta_array | WS Input |
[in] | part_species | WS Input |
[in] | scat_data_per_part_species | WS Input |
[in] | delim | Generic Input (Default: "-") |
Definition at line 1388 of file m_cloudbox.cc.
References CREATE_OUT1, joker, ConstTensor3View::ncols(), ConstTensor4View::ncols(), Array< base >::nelem(), ConstTensor3View::npages(), ConstTensor4View::npages(), ConstTensor3View::nrows(), ConstTensor4View::nrows(), parse_part_material(), parse_partfield_name(), parse_psd_param(), pnd_fieldF07ML(), pnd_fieldF07TR(), pnd_fieldGM58(), pnd_fieldH11(), pnd_fieldH13(), pnd_fieldH13Shape(), pnd_fieldH98(), pnd_fieldMGD_IWC(), pnd_fieldMGD_LWC(), pnd_fieldMH97(), pnd_fieldMP48(), pnd_fieldSS70(), and Tensor4::resize().
Referenced by pnd_fieldSetup_g().
void pnd_fieldZero | ( | Tensor4 & | pnd_field, |
ArrayOfSingleScatteringData & | scat_data_array, | ||
const Vector & | p_grid, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: pnd_fieldZero.
Sets pnd_field to hold only zeros.
Scattering calculations using the DOIT method include interpolation errors. If one is interested in this effect, one should compare the DOIT result with a clearsky calculation using an empty cloudbox. That means that the iterative method is performed for a cloudbox including no particles. This method sets the particle number density field to zero and creates a dummy scat_data_array structure.
[out] | pnd_field | WS Output |
[out] | scat_data_array | WS Output |
[in] | p_grid | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
Definition at line 1344 of file m_cloudbox.cc.
References ConstVectorView::nelem(), nlinspace(), PARTICLE_TYPE_MACROS_ISO, and Tensor4::resize().
Referenced by pnd_fieldZero_g().
void pndFromdN | ( | Vector & | pnd, |
const Vector & | dN, | ||
const Vector & | diameter, | ||
const Numeric & | total_content, | ||
const Vector & | scatelem_volume, | ||
const Vector & | scatelem_density, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: pndFromdN.
Calculates pnds from given dN.
The method mimics what happens inside pnd_fieldSetup, but for a single size distribution. It is supposed to be used with the dN methods.
[out] | pnd | Generic output |
[in] | dN | Generic Input |
[in] | diameter | Generic Input |
[in] | total_content | Generic Input |
[in] | scatelem_volume | Generic Input |
[in] | scatelem_density | Generic Input |
Definition at line 2072 of file m_cloudbox.cc.
References chk_pndsum(), ConstVectorView::nelem(), Vector::resize(), and scale_pnd().
Referenced by pndFromdN_g().
void ScatteringParticlesSelect | ( | ArrayOfSingleScatteringData & | scat_data_array, |
ArrayOfScatteringMetaData & | scat_meta_array, | ||
ArrayOfIndex & | scat_data_per_part_species, | ||
const ArrayOfString & | part_species, | ||
const String & | delim, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: ScatteringParticlesSelect.
Selects data of scat_data_array corresponding to particles that according to part_species shall be considered in the scattering calculation.
Selection is controlled by part_species settings and done based on particle type and size. scat_meta_array is searched for particles that fulfill the selection criteria. Selection is done individually for each element of part_species, i.e. for each considered particle field (implying a sorting of the selected scat_meta_array* and scat_data_array according to the particle field they correspond to). Additionaly scat_data_per_part_species is created, which contains the number of particles that have been selected for each of the particle fields.
[out] | scat_data_array | WS Output |
[out] | scat_meta_array | WS Output |
[out] | scat_data_per_part_species | WS Output |
[in] | part_species | WS Input |
[in] | delim | Generic Input (Default: "-") |
Definition at line 889 of file m_cloudbox.cc.
References CREATE_OUT1, CREATE_OUT3, Array< base >::nelem(), parse_part_material(), parse_part_size(), parse_partfield_name(), and PI.
Referenced by ScatteringParticlesSelect_g().
void ScatteringParticleTypeAndMetaRead | ( | ArrayOfSingleScatteringData & | scat_data_array, |
ArrayOfScatteringMetaData & | scat_meta_array, | ||
const Vector & | f_grid, | ||
const String & | filename_scat_data, | ||
const String & | filename_scat_meta_data, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: ScatteringParticleTypeAndMetaRead.
Reads single scattering data and scattering meta data.
This method's input needs two XML-files, one containing an array of path/filenames (ArrayOfString) of single scattering data and the corresponding path/filenames to scattering meta data. For each single scattering file, there needs to be exactly one scattering meta data file.
Currently particles of phase ice and/or water can be added for the same calculation. It is also possible to read SingleScatteringData for different shapes of ice particles. But all ice particels will share the same IWC, while performing the pnd_field calculations with pnd_fieldSetup. Also make sure, that two scattering particles of the same phase are never equal in size. This will break the calculations in pnd_fieldSetup
Very important note: The order of the filenames for the single scattering data files has to exactly correspond to the order of the scattering meta data files.
[out] | scat_data_array | WS Output |
[out] | scat_meta_array | WS Output |
[in] | f_grid | WS Input |
[in] | filename_scat_data | Generic Input |
[in] | filename_scat_meta_data | Generic Input |
Definition at line 835 of file m_cloudbox.cc.
References chk_scat_data(), chk_scattering_data(), chk_scattering_meta_data(), CREATE_OUT3, Array< base >::nelem(), and xml_read_from_file().
Referenced by ScatteringParticleTypeAndMetaRead_g().
|
extern |
Referenced by pnd_fieldCalc().
|
extern |
Referenced by pnd_fieldCalc().
|
extern |
Referenced by pnd_fieldCalc().
|
extern |
Referenced by ScatteringParticlesSelect().