ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_WallThermodynamics.H
Go to the documentation of this file.
1 #ifndef ERF_WALL_THERMODYNAMICS_H_
2 #define ERF_WALL_THERMODYNAMICS_H_
3 
4 #include <AMReX_Array.H>
5 #include <AMReX_REAL.H>
6 
7 #include <type_traits>
8 
10 
11 // These compact enums and the face record are copied into GPU kernels. Keep
12 // parsing strings and all other host-only state outside this representation.
13 enum class ThermalMode : unsigned char {
16 };
17 
18 enum class MoistureMode : unsigned char {
22 };
23 
24 enum class MomentumModel : unsigned char {
26  BulkAero,
28 };
29 
30 enum class ScalarModel : unsigned char {
32  BulkAero,
34 };
35 
36 enum class CoefficientProvider : unsigned char {
37  None,
38  Fixed,
39  MOST
40 };
41 
45 };
46 
52 };
53 
59 };
60 
61 struct FaceWall {
67  amrex::GpuArray<amrex::Real, AMREX_SPACEDIM> wall_velocity{};
68 };
69 
70 using Boundary = amrex::GpuArray<FaceWall, 2 * AMREX_SPACEDIM>;
71 
72 static_assert(std::is_trivially_copyable_v<ThermalBoundary>);
73 static_assert(std::is_standard_layout_v<ThermalBoundary>);
74 static_assert(std::is_trivially_copyable_v<MomentumTransfer>);
75 static_assert(std::is_standard_layout_v<MomentumTransfer>);
76 static_assert(std::is_trivially_copyable_v<ScalarTransfer>);
77 static_assert(std::is_standard_layout_v<ScalarTransfer>);
78 static_assert(std::is_trivially_copyable_v<FaceWall>);
79 static_assert(std::is_standard_layout_v<FaceWall>);
80 
81 } // namespace erf_wall_thermodynamics
82 
83 #endif
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_WallThermodynamics.H:9
MomentumModel
Definition: ERF_WallThermodynamics.H:24
CoefficientProvider
Definition: ERF_WallThermodynamics.H:36
ScalarModel
Definition: ERF_WallThermodynamics.H:30
MoistureMode
Definition: ERF_WallThermodynamics.H:18
ThermalMode
Definition: ERF_WallThermodynamics.H:13
amrex::GpuArray< FaceWall, 2 *AMREX_SPACEDIM > Boundary
Definition: ERF_WallThermodynamics.H:70
Definition: ERF_WallThermodynamics.H:61
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > wall_velocity
Definition: ERF_WallThermodynamics.H:67
ScalarTransfer vapor
Definition: ERF_WallThermodynamics.H:66
ScalarTransfer heat
Definition: ERF_WallThermodynamics.H:65
MoistureMode moisture
Definition: ERF_WallThermodynamics.H:63
MomentumTransfer momentum
Definition: ERF_WallThermodynamics.H:64
ThermalBoundary thermal
Definition: ERF_WallThermodynamics.H:62
Definition: ERF_WallThermodynamics.H:47
amrex::Real z0_m
Definition: ERF_WallThermodynamics.H:51
CoefficientProvider provider
Definition: ERF_WallThermodynamics.H:49
amrex::Real C_D
Definition: ERF_WallThermodynamics.H:50
MomentumModel model
Definition: ERF_WallThermodynamics.H:48
Definition: ERF_WallThermodynamics.H:54
amrex::Real coefficient
Definition: ERF_WallThermodynamics.H:57
CoefficientProvider provider
Definition: ERF_WallThermodynamics.H:56
amrex::Real z0
Definition: ERF_WallThermodynamics.H:58
ScalarModel model
Definition: ERF_WallThermodynamics.H:55
Definition: ERF_WallThermodynamics.H:42
amrex::Real temperature_K
Definition: ERF_WallThermodynamics.H:44
ThermalMode mode
Definition: ERF_WallThermodynamics.H:43