ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
SDInitialization Class Reference

Super-droplets initialization structure. More...

#include <ERF_SDInitialization.H>

Inheritance diagram for SDInitialization:
Collaboration diagram for SDInitialization:

Public Member Functions

virtual ~SDInitialization ()=default
 
void readInputs (const std::string &, const std::string &, const amrex::Geometry &, const MatVec &, const MatVec &) override
 
void readInputs (const std::string &a_prefix, const amrex::Geometry &a_geom, const MatVec &a_species_mat, const MatVec &a_aerosol_mat)
 Read super-droplet initialization parameters from input file. More...
 
void printParameters (const MatVec &, const MatVec &) const override
 
int numSDPerCell (const amrex::Real a_dv) const override
 
amrex::Real numParticlesPerCell (const amrex::Real a_dv) const override
 
- Public Member Functions inherited from SDInitProperties
virtual void setDefaults (const amrex::Geometry &a_geom, const MatVec &a_species_mat, const MatVec &a_aerosol_mat)
 Set default values for initialization parameters. More...
 
void getDistribution (amrex::Vector< amrex::Real > &a_mass, const int a_np, const amrex::Real a_density, const std::string &a_init_type, const amrex::Real a_mass_min, const amrex::Real a_mass_max, const amrex::Real a_mass_mean, const amrex::Real a_radius_min, const amrex::Real a_radius_max, const amrex::Real a_radius_mean, const amrex::Real a_radius_gstd, std::mt19937 &a_rng) const
 Get a distribution with constant multiplicity. More...
 
void getDistribution (amrex::Vector< amrex::Real > &a_mass, amrex::Vector< amrex::Real > &a_mult, const amrex::Real a_dV, const int a_np, const amrex::Real a_density, const std::string &a_init_type, const amrex::Real a_mass_min, const amrex::Real a_mass_max, const amrex::Real a_mass_mean, const amrex::Real a_radius_min, const amrex::Real a_radius_max, const amrex::Real a_radius_mean, const amrex::Real a_radius_gstd, std::mt19937 &a_rng) const
 Get a distribution with sampled multiplicity. More...
 
void getAerosolDistribution (amrex::Vector< amrex::Real > &a_mass, const int a_idx, const int a_np, const amrex::Real a_density, std::mt19937 &a_rng) const
 Compute the aerosol mass distribution. More...
 
void getAerosolDistribution (amrex::Vector< amrex::Real > &a_mass, amrex::Vector< amrex::Real > &a_mult, amrex::Real a_dV, int a_idx, int a_np, amrex::Real a_density, std::mt19937 &a_rng) const
 Compute the aerosol mass distribution with sampled multiplicity. More...
 
void getSpeciesDistribution (amrex::Vector< amrex::Real > &a_mass, const int a_idx, const int a_np, const amrex::Real a_density, std::mt19937 &a_rng) const
 Compute the species mass distribution with constant multiplicity. More...
 
void getSpeciesDistribution (amrex::Vector< amrex::Real > &a_mass, amrex::Vector< amrex::Real > &a_mult, amrex::Real a_dV, int a_idx, int a_np, amrex::Real a_density, std::mt19937 &a_rng) const
 Compute the species mass distribution with sampled multiplicity. More...
 
bool sampledMultiplicity () const
 Determine whether multiplicity is sampled or constant. More...
 
amrex::Real volume () const
 Calculate the volume of the particle domain. More...
 

Public Attributes

amrex::Real m_numdens_sd_init = -1
 
- Public Attributes inherited from SDInitProperties
int m_ppc = 1
 
SDInitShape m_type = SDInitShape::uniform
 
amrex::Real m_numdens = -1
 
amrex::Real m_max_multiplicity = 1000000
 
std::vector< amrex::Realm_mass_species_min
 
std::vector< amrex::Realm_mass_species_max
 
std::vector< amrex::Realm_mass_species_mean
 
std::vector< amrex::Realm_radius_species_min
 
std::vector< amrex::Realm_radius_species_max
 
std::vector< amrex::Realm_radius_species_mean
 
std::vector< amrex::Realm_radius_species_geom_std
 
std::vector< std::string > m_species_init_type
 
std::vector< amrex::Realm_mass_aerosol_min
 
std::vector< amrex::Realm_mass_aerosol_max
 
std::vector< amrex::Realm_mass_aerosol_mean
 
std::vector< amrex::Realm_radius_aerosol_min
 
std::vector< amrex::Realm_radius_aerosol_max
 
std::vector< amrex::Realm_radius_aerosol_mean
 
std::vector< amrex::Realm_radius_aerosol_geom_std
 
std::vector< std::string > m_aerosol_init_type
 
int m_num_species = 0
 
int m_num_aerosols = 0
 
amrex::RealBox m_particle_domain
 
amrex::Vector< amrex::Realm_init_particle_p1
 
amrex::Vector< amrex::Realm_init_particle_p2
 
SDMultiplicityType m_mult_type
 

Additional Inherited Members

- Public Types inherited from SDInitProperties
using MatVec = std::vector< std::unique_ptr< MaterialProperties > >
 

Detailed Description

Super-droplets initialization structure.

Constructor & Destructor Documentation

◆ ~SDInitialization()

virtual SDInitialization::~SDInitialization ( )
virtualdefault

Initial number density of super-droplets

Member Function Documentation

◆ numParticlesPerCell()

amrex::Real SDInitialization::numParticlesPerCell ( const amrex::Real  a_dv) const
inlineoverridevirtual

Compute number of physical particles per grid cell

Implements SDInitProperties.

520  {
521  amrex::Real num_par_per_cell = 0.0;
522  if (this->m_numdens >= 0) {
523  num_par_per_cell = std::ceil(this->m_numdens*a_dv);
524  } else {
525  num_par_per_cell = 1;
526  }
527  return num_par_per_cell;
528  }
amrex::Real Real
Definition: ERF_ShocInterface.H:19
amrex::Real m_numdens
Definition: ERF_SDInitialization.H:56

◆ numSDPerCell()

int SDInitialization::numSDPerCell ( const amrex::Real  a_dv) const
inlineoverridevirtual

Compute number of super-droplets per grid cell

Implements SDInitProperties.

508  {
509  int num_sd_per_cell = 0;
510  if (m_numdens_sd_init >= 0) {
511  num_sd_per_cell = static_cast<int>(std::ceil(m_numdens_sd_init*a_dv));
512  } else {
513  num_sd_per_cell = this->m_ppc;
514  }
515  return num_sd_per_cell;
516  }
int m_ppc
Definition: ERF_SDInitialization.H:50
amrex::Real m_numdens_sd_init
Definition: ERF_SDInitialization.H:476

◆ printParameters()

void SDInitialization::printParameters ( const MatVec a_species_mat,
const MatVec a_aerosol_mat 
) const
overridevirtual

print super-droplets initialization parameters to screen

Reimplemented from SDInitProperties.

329 {
330  using namespace amrex;
331  Print() << " Initial number density: " << this->m_numdens << "\n"
332  << " Initial super-droplets number density: " << m_numdens_sd_init << "\n";
333  SDInitProperties::printParameters(a_species_mat, a_aerosol_mat);
334 }
virtual void printParameters(const MatVec &a_species_mat, const MatVec &a_aerosol_mat) const
Print super-droplets initialization parameters to screen.
Definition: ERF_SDInitialization.cpp:247
Definition: ERF_ConsoleIO.cpp:12
Here is the call graph for this function:

◆ readInputs() [1/2]

void SDInitialization::readInputs ( const std::string &  ,
const std::string &  ,
const amrex::Geometry &  ,
const MatVec ,
const MatVec  
)
inlineoverridevirtual

read super-droplets initialization parameters

Reimplemented from SDInitProperties.

484  {
485  amrex::Abort("SDInjection::readInputs(): Do not use this interface");
486  }

◆ readInputs() [2/2]

void SDInitialization::readInputs ( const std::string &  a_prefix,
const amrex::Geometry &  a_geom,
const MatVec a_species_mat,
const MatVec a_aerosol_mat 
)

Read super-droplet initialization parameters from input file.

This function reads initialization-specific parameters including distribution types, particle counts, and sizing parameters.

Parameters
[in]a_prefixPrefix for parameter parser
[in]a_geomSimulation geometry information
[in]a_species_matVector of species material properties
[in]a_aerosol_matVector of aerosol material properties
210 {
211  BL_PROFILE("SDInitialization::readInputs");
212 
213  SDInitProperties::readInputs( a_prefix, "initial_", a_geom, a_species_mat, a_aerosol_mat);
214 
215  amrex::ignore_unused(a_geom);
216  using namespace amrex;
217 
218  amrex::ParmParse pp(a_prefix);
219  pp.query("initial_number_density", this->m_numdens);
220  pp.query("initial_super_droplet_density", m_numdens_sd_init);
221 }
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real pp(amrex::Real y)
Definition: ERF_MicrophysicsUtils.H:233
virtual void readInputs(const std::string &a_prefix, const std::string &a_key, const amrex::Geometry &a_geom, const MatVec &a_species_mat, const MatVec &a_aerosol_mat)
Read super-droplets initialization parameters from input file.
Definition: ERF_SDInitialization.cpp:67
Here is the call graph for this function:

Member Data Documentation

◆ m_numdens_sd_init

amrex::Real SDInitialization::m_numdens_sd_init = -1

Referenced by numSDPerCell().


The documentation for this class was generated from the following files: