ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
MoistureComponentIndices Struct Reference

The moisture data carried by the active microphysics scheme. More...

#include <ERF_DataStruct.H>

Collaboration diagram for MoistureComponentIndices:

Classes

struct  CompList
 An ordered list of conserved-state components forming an aggregate moisture output variable (qt, qn, qp, moist_density). More...
 
struct  VarAvailability
 Whether this map decides a variable's availability, and if so whether the variable is available. More...
 

Public Member Functions

 MoistureComponentIndices (int qv_comp, int qc_comp, int qi_comp=absent, int qr_comp=absent, int qs_comp=absent, int qg_comp=absent, int nc_comp=absent, int ni_comp=absent, int nr_comp=absent, int ns_comp=absent, int ng_comp=absent, int nn_comp=absent)
 Construct the conserved-state component map. More...
 
 MoistureComponentIndices ()=default
 Construct an empty map, i.e. a dry run. More...
 
CompList total_water_comps () const
 Components summed for total water, "qt": every mass mixing ratio. More...
 
CompList nonprecipitating_comps () const
 Components summed for non-precipitating water, "qn": vapor plus the suspended condensate. Also the moist part of "moist_density". More...
 
CompList precipitating_comps () const
 Components summed for precipitating water, "qp": the falling species. More...
 
bool has_comp (int comp) const
 Test whether a conserved-state component holds one of the moisture variables this scheme carries. More...
 
bool has_reflectivity_species () const
 Test whether the active scheme carries rain, snow and graupel in the RhoQ4/RhoQ5/RhoQ6 slots assumed by erf_derreflectivity and erf_dermaxreflectivity. More...
 
bool has_moisture () const
 Test whether the active scheme carries any moisture at all. More...
 
int comp_for_var (const std::string &name) const
 The conserved-state component behind a single-species output name, or absent if the name is not a single species or the scheme does not carry it. More...
 
int qmoist_index_for_var (const std::string &name) const
 The qmoist slot behind a moist diagnostic output name. More...
 
VarAvailability query_var (const std::string &name) const
 Classify an output variable name against this index map. More...
 
bool has_derived_var (const std::string &name) const
 Test whether the moist species behind a derived/plot variable name is carried by the active scheme. More...
 

Static Public Member Functions

static MoistureComponentIndices from_moisture_model (const MoistureType moisture_type)
 Build the complete index map – conserved-state components and qmoist diagnostic slots – for a moisture model. More...
 

Public Attributes

int qv = absent
 water vapor More...
 
int qc = absent
 cloud liquid water More...
 
int qi = absent
 cloud ice More...
 
int qr = absent
 rain More...
 
int qs = absent
 snow More...
 
int qg = absent
 graupel More...
 
int nc = absent
 cloud liquid water number More...
 
int ni = absent
 cloud ice number More...
 
int nr = absent
 rain number More...
 
int ns = absent
 snow number More...
 
int ng = absent
 graupel number More...
 
int nn = absent
 CCN / total aerosol number. More...
 
int rain_accum = absent
 accumulated surface rain More...
 
int snow_accum = absent
 accumulated surface snow More...
 
int graupel_accum = absent
 accumulated surface graupel More...
 
int precip_accum = absent
 accumulated surface precipitation, all species More...
 
int rel_hum = absent
 relative humidity More...
 
int cond_rate = absent
 condensation rate More...
 

Static Public Attributes

static constexpr int absent = -1
 not carried by the active scheme More...
 
static constexpr int computed_from_state = -2
 

Detailed Description

The moisture data carried by the active microphysics scheme.

This struct is the single source of truth for the question "which moisture quantities does this run actually have?". Everything downstream of the microphysics – source terms, turbulence closures, and every output path (3D plotfiles, 2D plotfiles, subvolumes) – answers that question by querying this struct instead of enumerating MoistureType values, so a newly added scheme only has to declare its layout once, in from_moisture_model() below.

Two kinds of index live here:

  1. Conserved-state components (qv ... nn). Absolute component indices into the conserved state array, i.e. one of RhoQ1_comp ... RhoQ11_comp. They name the rho-weighted species: state(i,j,k,qv) is rho*qv, so an output path must divide by Rho_comp to recover the mixing ratio.
  2. qmoist diagnostic slots (rain_accum ... cond_rate). Indices into the per-level qmoist vector that is filled from Microphysics::Get_Qmoist_Ptr(lev,idx). Each scheme chooses that layout independently, so the slot numbers differ between schemes and are recorded per scheme below.

In both cases the value is absent when the active scheme does not carry the quantity, so index >= 0 is the criterion for "this exists and is meaningful to write". That is deliberately not the same test as "the storage is allocated": several schemes allocate a wider state than they integrate (the Morrison class always allocates eleven moist components, so Morrison_NoIce owns ice slots it never fills), and writing those slots to a plotfile would publish untouched memory as if it were data.

Constructor & Destructor Documentation

◆ MoistureComponentIndices() [1/2]

MoistureComponentIndices::MoistureComponentIndices ( int  qv_comp,
int  qc_comp,
int  qi_comp = absent,
int  qr_comp = absent,
int  qs_comp = absent,
int  qg_comp = absent,
int  nc_comp = absent,
int  ni_comp = absent,
int  nr_comp = absent,
int  ns_comp = absent,
int  ng_comp = absent,
int  nn_comp = absent 
)
inline

Construct the conserved-state component map.

Prefer from_moisture_model() for production code: it fills in the qmoist diagnostic slots as well. This constructor exists for the callers – unit tests and kernels exercised in isolation – that only need the state map.

Parameters
qv_compWater vapor component index.
qc_compCloud liquid water component index.
qi_compCloud ice component index.
qr_compRain component index.
qs_compSnow component index.
qg_compGraupel component index.
nc_compCloud liquid water number concentration component index.
ni_compCloud ice number concentration component index.
nr_compRain number concentration component index.
ns_compSnow number concentration component index.
ng_compGraupel number concentration component index.
nn_compCCN / total aerosol number concentration component index.
334  : qv(qv_comp), qc(qc_comp), qi(qi_comp), qr(qr_comp), qs(qs_comp), qg(qg_comp),
335  nc(nc_comp), ni(ni_comp), nr(nr_comp), ns(ns_comp), ng(ng_comp),
336  nn(nn_comp) {}
int nc
cloud liquid water number
Definition: ERF_DataStruct.H:272
int qs
snow
Definition: ERF_DataStruct.H:266
int nn
CCN / total aerosol number.
Definition: ERF_DataStruct.H:282
int qr
rain
Definition: ERF_DataStruct.H:265
int qi
cloud ice
Definition: ERF_DataStruct.H:264
int ni
cloud ice number
Definition: ERF_DataStruct.H:273
int qv
water vapor
Definition: ERF_DataStruct.H:262
int nr
rain number
Definition: ERF_DataStruct.H:274
int qc
cloud liquid water
Definition: ERF_DataStruct.H:263
int ng
graupel number
Definition: ERF_DataStruct.H:276
int qg
graupel
Definition: ERF_DataStruct.H:267
int ns
snow number
Definition: ERF_DataStruct.H:275

◆ MoistureComponentIndices() [2/2]

MoistureComponentIndices::MoistureComponentIndices ( )
default

Construct an empty map, i.e. a dry run.

Member Function Documentation

◆ comp_for_var()

int MoistureComponentIndices::comp_for_var ( const std::string &  name) const
inline

The conserved-state component behind a single-species output name, or absent if the name is not a single species or the scheme does not carry it.

An output path can use this to copy a species without repeating the name-to-component mapping.

Parameters
nameDerived or plot variable name.
604  {
605  if (name == "qv") { return qv; }
606  if (name == "qc") { return qc; }
607  if (name == "qi") { return qi; }
608  if (name == "qrain") { return qr; }
609  if (name == "qsnow") { return qs; }
610  if (name == "qgraup") { return qg; }
611  if (name == "nc") { return nc; }
612  if (name == "ni") { return ni; }
613  if (name == "nr") { return nr; }
614  if (name == "ns") { return ns; }
615  if (name == "ng") { return ng; }
616  if (name == "nn") { return nn; }
617  return absent;
618  }
std::string name
Definition: ERF_Plotfile2DCatalog.cpp:116
static constexpr int absent
not carried by the active scheme
Definition: ERF_DataStruct.H:254

Referenced by ERF::FillPlot3DVars(), and query_var().

Here is the caller graph for this function:

◆ from_moisture_model()

static MoistureComponentIndices MoistureComponentIndices::from_moisture_model ( const MoistureType  moisture_type)
inlinestatic

Build the complete index map – conserved-state components and qmoist diagnostic slots – for a moisture model.

This is the one place a scheme declares what it carries. The conserved layout must match the component the scheme reads and writes in its Copy_State_to_Micro / Copy_Micro_to_State pair, and the qmoist slots must match the order the scheme installs in its MicVarMap. A slot that a scheme allocates but never fills is left absent on purpose: see the class comment for why allocation is not the criterion here.

Parameters
moisture_typeActive moisture/microphysics model.
358  {
360 
361  switch (moisture_type) {
362 
363  case MoistureType::None:
364  // Dry: no moisture data of any kind.
365  break;
366 
367  case MoistureType::MoistNoCondensation:
368  case MoistureType::SAM_NoPrecip_NoIce:
369  case MoistureType::Kessler_NoRain:
370  // Vapor plus suspended cloud water, no precipitation and no
371  // accumulation diagnostics.
372  mi.qv = RhoQ1_comp;
373  mi.qc = RhoQ2_comp;
374  break;
375 
376  case MoistureType::SatAdj:
377  // As above, but relative humidity is recovered from the state at
378  // output time rather than stored: SatAdj publishes no qmoist arrays.
379  mi.qv = RhoQ1_comp;
380  mi.qc = RhoQ2_comp;
382  break;
383 
384  case MoistureType::Kessler:
385  // Warm rain in three moist components; qmoist is {rain_accum}.
386  // Rain is the only species that falls, so the precipitation total
387  // is the rain accumulation itself.
388  mi.qv = RhoQ1_comp;
389  mi.qc = RhoQ2_comp;
390  mi.qr = RhoQ3_comp;
391  mi.rain_accum = 0;
392  mi.precip_accum = 0;
393  break;
394 
395  case MoistureType::SBM:
396  // SBM stores the distribution in an auxiliary state. These two
397  // compact liquid lanes are projections for host compatibility.
398  mi.qv = RhoQ1_comp;
399  mi.qc = RhoQ2_comp;
400  mi.qr = RhoQ3_comp;
401  break;
402 
403  case MoistureType::SAM_NoIce:
404  // The SAM class always allocates six moist components, so rain sits
405  // in the fourth slot even with the ice species switched off.
406  mi.qv = RhoQ1_comp;
407  mi.qc = RhoQ2_comp;
408  mi.qr = RhoQ4_comp;
409  mi.rain_accum = 0;
410  mi.precip_accum = 3;
411  break;
412 
413  case MoistureType::SAM:
414  case MoistureType::WSM6:
415  // Single-moment mixed phase; qmoist is
416  // {rain_accum, snow_accum, graupel_accum, precip_accum}.
417  mi.qv = RhoQ1_comp;
418  mi.qc = RhoQ2_comp;
419  mi.qi = RhoQ3_comp;
420  mi.qr = RhoQ4_comp;
421  mi.qs = RhoQ5_comp;
422  mi.qg = RhoQ6_comp;
423  mi.rain_accum = 0;
424  mi.snow_accum = 1;
425  mi.graupel_accum = 2;
426  mi.precip_accum = 3;
427  break;
428 
429  case MoistureType::Morrison:
430  // Two-moment mixed phase: six mass species followed by five number
431  // concentrations.
432  mi.qv = RhoQ1_comp;
433  mi.qc = RhoQ2_comp;
434  mi.qi = RhoQ3_comp;
435  mi.qr = RhoQ4_comp;
436  mi.qs = RhoQ5_comp;
437  mi.qg = RhoQ6_comp;
438  mi.nc = RhoQ7_comp;
439  mi.ni = RhoQ8_comp;
440  mi.nr = RhoQ9_comp;
441  mi.ns = RhoQ10_comp;
442  mi.ng = RhoQ11_comp;
443  mi.rain_accum = 0;
444  mi.snow_accum = 1;
445  mi.graupel_accum = 2;
446  mi.precip_accum = 3;
447  break;
448 
449  case MoistureType::Morrison_NoIce:
450  // Liquid-only Morrison: the class still allocates all eleven moist
451  // components, but only vapor, cloud water and rain -- and the cloud
452  // and rain numbers -- are integrated, so the frozen species and
453  // their numbers stay absent here.
454  mi.qv = RhoQ1_comp;
455  mi.qc = RhoQ2_comp;
456  mi.qr = RhoQ4_comp;
457  mi.nc = RhoQ7_comp;
458  mi.nr = RhoQ9_comp;
459  mi.rain_accum = 0;
460  mi.precip_accum = 3;
461  break;
462 
463  case MoistureType::WDM6:
464  // Double-moment warm phase on top of single-moment ice: nn is the
465  // aerosol reservoir and takes the slot Morrison uses for ice number,
466  // and there are no snow or graupel numbers.
467  mi.qv = RhoQ1_comp;
468  mi.qc = RhoQ2_comp;
469  mi.qi = RhoQ3_comp;
470  mi.qr = RhoQ4_comp;
471  mi.qs = RhoQ5_comp;
472  mi.qg = RhoQ6_comp;
473  mi.nc = RhoQ7_comp;
474  mi.nn = RhoQ8_comp;
475  mi.nr = RhoQ9_comp;
476  mi.rain_accum = 0;
477  mi.snow_accum = 1;
478  mi.graupel_accum = 2;
479  mi.precip_accum = 3;
480  break;
481 
482  case MoistureType::SuperDroplets:
483  // Lagrangian microphysics that still carries the six Eulerian mass
484  // species. Its qmoist layout is its own (see the MicVarMap in
485  // SuperDropletsMoist::Init): the graupel accumulation slot exists
486  // but is never filled, so it stays absent.
487  mi.qv = RhoQ1_comp;
488  mi.qc = RhoQ2_comp;
489  mi.qi = RhoQ3_comp;
490  mi.qr = RhoQ4_comp;
491  mi.qs = RhoQ5_comp;
492  mi.qg = RhoQ6_comp;
493  mi.cond_rate = 3;
494  mi.rel_hum = 7;
495  mi.rain_accum = 8;
496  mi.snow_accum = 10;
497  mi.precip_accum = 11;
498  break;
499 
500  default:
501  amrex::Abort("Unknown MoistureType in MoistureComponentIndices::from_moisture_model");
502  }
503 
504  return mi;
505  }
#define RhoQ4_comp
Definition: ERF_IndexDefines.H:69
#define RhoQ2_comp
Definition: ERF_IndexDefines.H:67
#define RhoQ3_comp
Definition: ERF_IndexDefines.H:68
#define RhoQ11_comp
Definition: ERF_IndexDefines.H:76
#define RhoQ9_comp
Definition: ERF_IndexDefines.H:74
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:66
#define RhoQ6_comp
Definition: ERF_IndexDefines.H:71
#define RhoQ8_comp
Definition: ERF_IndexDefines.H:73
#define RhoQ5_comp
Definition: ERF_IndexDefines.H:70
#define RhoQ7_comp
Definition: ERF_IndexDefines.H:72
#define RhoQ10_comp
Definition: ERF_IndexDefines.H:75
@ None
Definition: ERF_LSM_Types.H:6
The moisture data carried by the active microphysics scheme.
Definition: ERF_DataStruct.H:251
int cond_rate
condensation rate
Definition: ERF_DataStruct.H:301
int precip_accum
accumulated surface precipitation, all species
Definition: ERF_DataStruct.H:299
int rel_hum
relative humidity
Definition: ERF_DataStruct.H:300
int graupel_accum
accumulated surface graupel
Definition: ERF_DataStruct.H:298
static constexpr int computed_from_state
Definition: ERF_DataStruct.H:255
int rain_accum
accumulated surface rain
Definition: ERF_DataStruct.H:296
int snow_accum
accumulated surface snow
Definition: ERF_DataStruct.H:297

Referenced by SolverChoice::init_params().

Here is the caller graph for this function:

◆ has_comp()

bool MoistureComponentIndices::has_comp ( int  comp) const
inline

Test whether a conserved-state component holds one of the moisture variables this scheme carries.

Use this rather than enumerating moisture models when deciding whether a "rhoQn" state component is meaningful for the active scheme.

Parameters
compAbsolute component index into the conserved state array.
566  {
567  return ( (comp >= 0) &&
568  ( (comp == qv) || (comp == qc) || (comp == qi) ||
569  (comp == qr) || (comp == qs) || (comp == qg) ||
570  (comp == nc) || (comp == ni) || (comp == nr) ||
571  (comp == ns) || (comp == ng) || (comp == nn) ) );
572  }

Referenced by erf_plotfile::plot3d_fixed_variable_available().

Here is the caller graph for this function:

◆ has_derived_var()

bool MoistureComponentIndices::has_derived_var ( const std::string &  name) const
inline

Test whether the moist species behind a derived/plot variable name is carried by the active scheme.

Names this map does not govern return true, so this can be used directly as a filter over a mixed list of variable names. Use query_var() instead when the caller needs to distinguish "not a moisture variable" from "available".

Parameters
nameDerived or plot variable name.
705  {
706  const VarAvailability status = query_var(name);
707  return (!status.governed) || status.available;
708  }
VarAvailability query_var(const std::string &name) const
Classify an output variable name against this index map.
Definition: ERF_DataStruct.H:659

Referenced by ERF::setSubVolVariables().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ has_moisture()

bool MoistureComponentIndices::has_moisture ( ) const
inline

Test whether the active scheme carries any moisture at all.

Every moist scheme allocates water vapor, so this is equivalent to testing moisture_type != MoistureType::None without needing the enum.

592 { return (qv >= 0); }

Referenced by ERF::FillPlot3DVars(), query_var(), ERF::setSubVolVariables(), and ERF::WriteSubvolume().

Here is the caller graph for this function:

◆ has_reflectivity_species()

bool MoistureComponentIndices::has_reflectivity_species ( ) const
inline

Test whether the active scheme carries rain, snow and graupel in the RhoQ4/RhoQ5/RhoQ6 slots assumed by erf_derreflectivity and erf_dermaxreflectivity.

Those kernels read the precipitating species by hardcoded component, so this checks the layout and not just the presence of the species.

582  {
583  return ( (qr == RhoQ4_comp) && (qs == RhoQ5_comp) && (qg == RhoQ6_comp) );
584  }

◆ nonprecipitating_comps()

CompList MoistureComponentIndices::nonprecipitating_comps ( ) const
inline

Components summed for non-precipitating water, "qn": vapor plus the suspended condensate. Also the moist part of "moist_density".

542  {
543  CompList list;
544  list.append(qv); list.append(qc); list.append(qi);
545  return list;
546  }

Referenced by ERF::FillPlot3DVars().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ precipitating_comps()

CompList MoistureComponentIndices::precipitating_comps ( ) const
inline

Components summed for precipitating water, "qp": the falling species.

551  {
552  CompList list;
553  list.append(qr); list.append(qs); list.append(qg);
554  return list;
555  }

Referenced by ERF::FillPlot3DVars(), and query_var().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ qmoist_index_for_var()

int MoistureComponentIndices::qmoist_index_for_var ( const std::string &  name) const
inline

The qmoist slot behind a moist diagnostic output name.

Returns absent when the scheme does not provide the diagnostic, and computed_from_state when it does provide it but not through a qmoist array – in that case the caller must derive it from the conserved state.

Parameters
nameDerived or plot variable name.
629  {
630  if (name == "rain_accum") { return rain_accum; }
631  if (name == "snow_accum") { return snow_accum; }
632  if (name == "graupel_accum") { return graupel_accum; }
633  if (name == "precip_accum") { return precip_accum; }
634  if (name == "rel_humidity") { return rel_hum; }
635  if (name == "condensation_rate") { return cond_rate; }
636  return absent;
637  }

Referenced by ERF::FillPlot3DVars(), and query_var().

Here is the caller graph for this function:

◆ query_var()

VarAvailability MoistureComponentIndices::query_var ( const std::string &  name) const
inline

Classify an output variable name against this index map.

This is the one table pairing output names with the data behind them. It is driven off the scheme's index map rather than an enumerated list of moisture models, so it stays correct as schemes are added. Names with no moisture dependence come back not-governed, which lets a caller walk a mixed list of variable names and only defer to this map where it applies.

Parameters
nameDerived or plot variable name.
659  {
660 
661  // Single species, taken straight from the conserved state
662  if ( (name == "qv") || (name == "qc") || (name == "qi") ||
663  (name == "qrain") || (name == "qsnow") || (name == "qgraup") ||
664  (name == "nc") || (name == "ni") || (name == "nr") ||
665  (name == "ns") || (name == "ng") || (name == "nn") ) {
666  return {true, comp_for_var(name) >= 0};
667  }
668 
669  // Moist diagnostics, either from a qmoist array or derived at output time
670  if ( (name == "rain_accum") || (name == "snow_accum") ||
671  (name == "graupel_accum") || (name == "precip_accum") ||
672  (name == "rel_humidity") ||
673  (name == "condensation_rate") ) {
674  return {true, qmoist_index_for_var(name) != absent};
675  }
676 
677  // Aggregates over several species
678  if (name == "qt") { return {true, !total_water_comps().empty()}; }
679  if (name == "qp") { return {true, !precipitating_comps().empty()}; }
680 
681  // Non-precipitating water is vapor plus the suspended condensate, and
682  // moist density adds that same sum to the dry density
683  if ( (name == "qn") || (name == "moist_density") ) {
684  return {true, (qv >= 0) && (qc >= 0)};
685  }
686 
687  // Column and thermodynamic diagnostics that read vapor only
688  if ( (name == "qsat") || (name == "precipitable") ) {
689  return {true, has_moisture()};
690  }
691 
692  return {false, false};
693  }
bool empty() const
Definition: ERF_DataStruct.H:523
int comp_for_var(const std::string &name) const
The conserved-state component behind a single-species output name, or absent if the name is not a sin...
Definition: ERF_DataStruct.H:604
CompList total_water_comps() const
Components summed for total water, "qt": every mass mixing ratio.
Definition: ERF_DataStruct.H:531
CompList precipitating_comps() const
Components summed for precipitating water, "qp": the falling species.
Definition: ERF_DataStruct.H:551
bool has_moisture() const
Test whether the active scheme carries any moisture at all.
Definition: ERF_DataStruct.H:592
int qmoist_index_for_var(const std::string &name) const
The qmoist slot behind a moist diagnostic output name.
Definition: ERF_DataStruct.H:629

Referenced by has_derived_var(), and erf_plotfile::plot3d_fixed_variable_available().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ total_water_comps()

CompList MoistureComponentIndices::total_water_comps ( ) const
inline

Components summed for total water, "qt": every mass mixing ratio.

Number concentrations are excluded – they are counts, not masses.

531  {
532  CompList list;
533  list.append(qv); list.append(qc); list.append(qi);
534  list.append(qr); list.append(qs); list.append(qg);
535  return list;
536  }

Referenced by ERF::FillPlot3DVars(), and query_var().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ absent

constexpr int MoistureComponentIndices::absent = -1
staticconstexpr

not carried by the active scheme

Referenced by comp_for_var(), qmoist_index_for_var(), and query_var().

◆ computed_from_state

constexpr int MoistureComponentIndices::computed_from_state = -2
staticconstexpr

carried, but derived at output time from the conserved state rather than read from a qmoist slot

Referenced by ERF::FillPlot3DVars(), and from_moisture_model().

◆ cond_rate

int MoistureComponentIndices::cond_rate = absent

condensation rate

Referenced by from_moisture_model(), and qmoist_index_for_var().

◆ graupel_accum

int MoistureComponentIndices::graupel_accum = absent

◆ nc

int MoistureComponentIndices::nc = absent

cloud liquid water number

Referenced by comp_for_var(), from_moisture_model(), and has_comp().

◆ ng

int MoistureComponentIndices::ng = absent

graupel number

Referenced by comp_for_var(), from_moisture_model(), and has_comp().

◆ ni

int MoistureComponentIndices::ni = absent

cloud ice number

Referenced by comp_for_var(), from_moisture_model(), and has_comp().

◆ nn

int MoistureComponentIndices::nn = absent

CCN / total aerosol number.

Referenced by comp_for_var(), from_moisture_model(), and has_comp().

◆ nr

int MoistureComponentIndices::nr = absent

rain number

Referenced by comp_for_var(), from_moisture_model(), and has_comp().

◆ ns

int MoistureComponentIndices::ns = absent

snow number

Referenced by comp_for_var(), from_moisture_model(), and has_comp().

◆ precip_accum

int MoistureComponentIndices::precip_accum = absent

accumulated surface precipitation, all species

Referenced by ERF::convert_legacy_precip_accumulations(), from_moisture_model(), and qmoist_index_for_var().

◆ qc

◆ qg

◆ qi

◆ qr

◆ qs

◆ qv

◆ rain_accum

int MoistureComponentIndices::rain_accum = absent

◆ rel_hum

int MoistureComponentIndices::rel_hum = absent

relative humidity

Referenced by ERF::FillPlot3DVars(), from_moisture_model(), and qmoist_index_for_var().

◆ snow_accum

int MoistureComponentIndices::snow_accum = absent

The documentation for this struct was generated from the following file: