ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_CloudChamber.H File Reference
#include <AMReX_Array.H>
#include <AMReX_ParmParse.H>
#include <AMReX_REAL.H>
#include "ERF_Constants.H"
#include "ERF_EOS.H"
#include "ERF_MicrophysicsUtils.H"
#include "BoundaryConditions/ERF_WallThermodynamics.H"
#include <cmath>
#include <limits>
#include <string>
#include <vector>
Include dependency graph for ERF_CloudChamber.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  erf_cloud_chamber::WallSpec
 Metadata describing a chamber wall. More...
 
struct  erf_cloud_chamber::Config
 Configuration parameters for cloud chamber initialization. More...
 
struct  erf_cloud_chamber::InitializationContract
 Contract used to validate initialization parameter consistency. More...
 
struct  erf_cloud_chamber::WallTransferContract
 

Namespaces

 erf_cloud_chamber
 

Enumerations

enum class  erf_cloud_chamber::WallFace : unsigned char {
  erf_cloud_chamber::XLo , erf_cloud_chamber::XHi , erf_cloud_chamber::YLo , erf_cloud_chamber::YHi ,
  erf_cloud_chamber::ZLo , erf_cloud_chamber::ZHi
}
 
enum class  erf_cloud_chamber::InitializationMode : unsigned char { erf_cloud_chamber::PhysicalTemperatureRH , erf_cloud_chamber::LegacyThetaQv }
 

Functions

std::string erf_cloud_chamber::initialization_contract_error (const InitializationContract &contract)
 Validate the initialization contract and return an error message if violated. More...
 
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE amrex::Real erf_cloud_chamber::linear_profile (amrex::Real bottom, amrex::Real top, amrex::Real coordinate, amrex::Real lower, amrex::Real length) noexcept
 Compute a linear profile between two values. More...
 
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE amrex::Real erf_cloud_chamber::deterministic_perturbation (amrex::Real x, amrex::Real y, amrex::Real z, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &lo, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &length, amrex::Real amplitude) noexcept
 Compute a deterministic 3D sine perturbation. More...
 
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE amrex::Real erf_cloud_chamber::staggered_velocity_v_scale (amrex::Real lx, amrex::Real ly, amrex::Real dx, amrex::Real dy, int nx, int ny) noexcept
 Discrete derivative ratio for the staggered initial velocity field. More...
 
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE amrex::Real erf_cloud_chamber::initial_u_velocity_perturbation (amrex::Real x, amrex::Real y, amrex::Real z, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &lo, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &length, amrex::Real U_0, int nx, int ny) noexcept
 Evaluate the x-face component of the Cloud Chamber initial velocity. More...
 
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE amrex::Real erf_cloud_chamber::initial_v_velocity_perturbation (amrex::Real x, amrex::Real y, amrex::Real z, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &lo, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &length, amrex::Real U_0, amrex::Real v_scale, int nx, int ny) noexcept
 Evaluate the y-face component of the Cloud Chamber initial velocity. More...
 
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE amrex::Real erf_cloud_chamber::initial_w_velocity_perturbation () noexcept
 The Cloud Chamber initial vertical velocity perturbation. More...
 
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE amrex::Real erf_cloud_chamber::theta_at (const Config &config, amrex::Real x, amrex::Real y, amrex::Real z) noexcept
 Compute the potential temperature at a given location. More...
 
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE amrex::Real erf_cloud_chamber::qv_at (const Config &config, amrex::Real z) noexcept
 Compute the water vapor mixing ratio at a given height. More...
 
AMREX_FORCE_INLINE AMREX_GPU_HOST_DEVICE amrex::Real erf_cloud_chamber::vapor_mixing_ratio_from_relative_humidity (amrex::Real temperature_K, amrex::Real pressure_Pa, amrex::Real relative_humidity) noexcept
 Convert relative humidity to water vapor mixing ratio. More...
 
bool erf_cloud_chamber::finite (amrex::Real value) noexcept
 
void erf_cloud_chamber::require_finite (const std::string &key, amrex::Real value)
 
std::string erf_cloud_chamber::face_name (WallFace face)
 
std::string erf_cloud_chamber::wall_transfer_contract_error (const WallTransferContract &contract, const std::string &face)
 
std::string erf_cloud_chamber::wall_coupled_most_roughness_error (const WallTransferContract &contract, const std::string &face, bool wet_wall)
 
void erf_cloud_chamber::require_zero_periodicity ()
 
void erf_cloud_chamber::require_no_unsupported_geometry ()
 
void erf_cloud_chamber::reject_unsupported_face_keys (amrex::ParmParse &pp, const std::string &face)
 
std::string erf_cloud_chamber::wall_roughness_geometry_error (const erf_wall_thermodynamics::Boundary &walls, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dx)
 
void erf_cloud_chamber::validate_wall_roughness_geometry (const erf_wall_thermodynamics::Boundary &walls, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dx)
 
Config erf_cloud_chamber::parse_config (const amrex::Real *problo, const amrex::Real *probhi)