ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_CloudChamberWallFlux.H File Reference
#include <AMReX_Array4.H>
#include <AMReX_Box.H>
#include <AMReX_GpuContainers.H>
#include <AMReX_Math.H>
#include <AMReX_MultiFab.H>
#include "ERF_Constants.H"
#include "ERF_DataStruct.H"
#include "ERF_EOS.H"
#include "ERF_IndexDefines.H"
#include "ERF_MicrophysicsUtils.H"
#include "BoundaryConditions/ERF_MOSTUtils.H"
#include "BoundaryConditions/ERF_WallThermodynamics.H"
#include <cmath>
#include <type_traits>
Include dependency graph for ERF_CloudChamberWallFlux.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_wall_flux::WallFlux
 
struct  erf_cloud_chamber_wall_flux::FaceRuntimeCoefficients
 
struct  erf_cloud_chamber_wall_flux::MostStabilityResult
 
struct  erf_cloud_chamber_wall_flux::ScalarWallSample
 
struct  erf_cloud_chamber_wall_flux::NeutralLogMomentumState
 
struct  erf_cloud_chamber_wall_flux::MomentumWallSample
 
struct  erf_cloud_chamber_wall_flux::ScalarFluxReplacement
 

Namespaces

 erf_cloud_chamber_wall_flux
 

Enumerations

enum  erf_cloud_chamber_wall_flux::OwnedChannel : unsigned char {
  erf_cloud_chamber_wall_flux::OwnNone = 0 , erf_cloud_chamber_wall_flux::OwnMomentum = 1 << 0 , erf_cloud_chamber_wall_flux::OwnHeat = 1 << 1 , erf_cloud_chamber_wall_flux::OwnVapor = 1 << 2 ,
  erf_cloud_chamber_wall_flux::OwnCloudWater = 1 << 3
}
 
enum class  erf_cloud_chamber_wall_flux::ScalarChannel : unsigned char { erf_cloud_chamber_wall_flux::None , erf_cloud_chamber_wall_flux::Heat , erf_cloud_chamber_wall_flux::Vapor , erf_cloud_chamber_wall_flux::CloudWater }
 

Functions

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool erf_cloud_chamber_wall_flux::wall_uses_most_vapor (const erf_wall_thermodynamics::FaceWall &wall) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool erf_cloud_chamber_wall_flux::wall_uses_most (const erf_wall_thermodynamics::FaceWall &wall) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE ScalarChannel erf_cloud_chamber_wall_flux::scalar_channel_from_quantity (int quantity) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int erf_cloud_chamber_wall_flux::primitive_component (ScalarChannel channel) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool erf_cloud_chamber_wall_flux::wall_owns_scalar_channel (const erf_wall_thermodynamics::FaceWall &wall, ScalarChannel channel) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE unsigned char erf_cloud_chamber_wall_flux::scalar_channel_mask (ScalarChannel channel) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool erf_cloud_chamber_wall_flux::owns (const WallFlux &flux, ScalarChannel channel) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE NeutralLogMomentumState erf_cloud_chamber_wall_flux::neutral_log_momentum_state (amrex::Real U_t, amrex::Real wall_distance, amrex::Real z0_m) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::neutral_log_scalar_coefficient (amrex::Real wall_distance, amrex::Real z0_m, amrex::Real z0_scalar) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE MostStabilityResult erf_cloud_chamber_wall_flux::most_stability_coordinate (amrex::Real Ri, amrex::Real D_m, amrex::Real D_s) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE FaceRuntimeCoefficients erf_cloud_chamber_wall_flux::most_wall_coefficients (const erf_wall_thermodynamics::FaceWall &wall, amrex::Real theta_air, amrex::Real qv_air, amrex::Real p_hse, amrex::Real rdOcp, amrex::Real U_t, amrex::Real wall_distance, int gravity_sign) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > erf_cloud_chamber_wall_flux::neutral_log_traction_on_fluid (const MomentumWallSample &sample, const NeutralLogMomentumState &neutral) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::neutral_scalar_rate (amrex::Real coefficient, amrex::Real U_t, amrex::Real dx_inv) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::momentum_infinity_row_sum_factor () noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::momentum_row_sum_rate (int component, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &low_rate, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &high_rate) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::momentum_rate_for_face (const erf_wall_thermodynamics::FaceWall &wall, amrex::Real U_t, amrex::Real dx_inv, const FaceRuntimeCoefficients &runtime=FaceRuntimeCoefficients{}) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool erf_cloud_chamber_wall_flux::requires_tangential_speed (const erf_wall_thermodynamics::FaceWall &wall, ScalarChannel channel) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool erf_cloud_chamber_wall_flux::requires_tangential_momentum (const erf_wall_thermodynamics::FaceWall &wall) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE bool erf_cloud_chamber_wall_flux::wall_rate_requires_tangential_speed (const erf_wall_thermodynamics::FaceWall &wall) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::wall_rate_for_face (const erf_wall_thermodynamics::FaceWall &wall, amrex::Real U_t, amrex::Real dx_inv, const FaceRuntimeCoefficients &runtime) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::wall_rate_for_face (const erf_wall_thermodynamics::FaceWall &wall, amrex::Real U_t, amrex::Real dx_inv) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::wall_rate_for_face (const erf_wall_thermodynamics::FaceWall &wall, amrex::Real theta_air, amrex::Real qv_air, amrex::Real p_hse, amrex::Real rdOcp, amrex::Real U_t, amrex::Real dx_inv, int gravity_sign) noexcept
 
template<int DIR, bool HIGH>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::to_coordinate_flux (amrex::Real inward) noexcept
 
template<int DIR, bool HIGH>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > erf_cloud_chamber_wall_flux::traction_from_local_inward (amrex::Real normal_in, amrex::Real tangent_a, amrex::Real tangent_b) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::bulk_theta_flux_in (amrex::Real rho, amrex::Real C_H, amrex::Real U_t, amrex::Real wall_temperature_K, amrex::Real theta_air, amrex::Real p_hse, amrex::Real rdOcp) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::bulk_vapor_flux_in (amrex::Real rho, amrex::Real C_E, amrex::Real U_t, amrex::Real wall_temperature_K, amrex::Real qv_air, amrex::Real p_hse) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > erf_cloud_chamber_wall_flux::relative_tangential_velocity_cell_centered (int dir, int i, int j, int k, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const erf_wall_thermodynamics::FaceWall &wall) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::tangential_magnitude (const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &u_t) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::tangential_speed (int dir, int i, int j, int k, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const erf_wall_thermodynamics::FaceWall &wall) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::tangential_speed_cell_centered (int dir, int i, int j, int k, const amrex::Array4< const amrex::Real > &velocity, const erf_wall_thermodynamics::FaceWall &wall) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::resolved_theta_flux_in (amrex::Real rho, amrex::Real alpha_T, amrex::Real wall_temperature_K, amrex::Real theta_air, amrex::Real p_hse, amrex::Real dx_inv, amrex::Real rdOcp) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::resolved_vapor_flux_in (amrex::Real rho, amrex::Real alpha_C, amrex::Real wall_temperature_K, amrex::Real qv_air, amrex::Real p_hse, amrex::Real dx_inv) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE WallFlux erf_cloud_chamber_wall_flux::evaluate_momentum_traction (const erf_wall_thermodynamics::FaceWall &wall, const MomentumWallSample &sample) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE WallFlux erf_cloud_chamber_wall_flux::evaluate_scalar_flux_in (const erf_wall_thermodynamics::FaceWall &wall, ScalarChannel channel, const ScalarWallSample &sample) noexcept
 
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::scalar_flux_in (const WallFlux &flux, ScalarChannel channel) noexcept
 
template<int DIR, bool HIGH>
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE ScalarFluxReplacement erf_cloud_chamber_wall_flux::scalar_flux_replacement (amrex::Real old_flux, amrex::Real inward_flux, amrex::Real dx_inv) noexcept
 
template<int DIR, bool HIGH>
AMREX_FORCE_INLINE void erf_cloud_chamber_wall_flux::apply_face (const amrex::Box &bx, const amrex::Box &domain, const int quantity, const int flux_comp, const amrex::Array4< const amrex::Real > &state, const amrex::Array4< const amrex::Real > &prim, const amrex::Array4< const amrex::Real > &base_state, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< amrex::Real > &rhs, const amrex::Array4< amrex::Real > &xflux, const amrex::Array4< amrex::Real > &yflux, const amrex::Array4< amrex::Real > &zflux, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dx_inv, const erf_wall_thermodynamics::Boundary &walls, const amrex::Real alpha_T, const amrex::Real alpha_C, const amrex::Real rdOcp, const bool cloudy)
 
void erf_cloud_chamber_wall_flux::apply (const amrex::Box &bx, const amrex::Box &domain, const int quantity, const int flux_comp, const amrex::Array4< const amrex::Real > &state, const amrex::Array4< const amrex::Real > &prim, const amrex::Array4< const amrex::Real > &base_state, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< amrex::Real > &rhs, const amrex::Array4< amrex::Real > &xflux, const amrex::Array4< amrex::Real > &yflux, const amrex::Array4< amrex::Real > &zflux, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dx_inv, const erf_wall_thermodynamics::Boundary &walls, const amrex::Real alpha_T, const amrex::Real alpha_C, const amrex::Real rdOcp, const bool cloudy=false)
 
bool erf_cloud_chamber_wall_flux::has_velocity_dependent_scalar_wall (const erf_wall_thermodynamics::Boundary &walls) noexcept
 
AMREX_FORCE_INLINE amrex::Real erf_cloud_chamber_wall_flux::wall_dt_from_max_rate (amrex::Real max_rate, amrex::Real wall_cfl=amrex::Real(0.5)) noexcept