ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_ImmersedForcing.H
Go to the documentation of this file.
1 #ifndef ERF_IMMERSEDFORCING_H_
2 #define ERF_IMMERSEDFORCING_H_
3 
4 #include <AMReX.H>
5 #include <ERF_DataStruct.H>
6 #include <AMReX_MultiFab.H>
7 #include <AMReX_TableData.H>
8 
9 // Terrain immersed forcing - MOMENTUM
10 void ImmersedForcingTerrain_Xmom (const amrex::Box& tbx,
11  const amrex::Array4<const amrex::Real>& u,
12  const amrex::Array4<const amrex::Real>& v,
13  const amrex::Array4<const amrex::Real>& w,
14  const amrex::Array4<const amrex::Real>& cell_data,
15  const amrex::Array4<const amrex::Real>& t_blank_arr,
16  const amrex::Array4<const amrex::Real>& t_blank_xface_arr,
17  const amrex::Array4<const amrex::Real>& z_cc_arr,
18  const amrex::Array4< amrex::Real>& xmom_src_arr,
19  const amrex::Geometry& geom,
20  const SolverChoice& solverChoice,
21  const amrex::Real fac);
22 
23 void ImmersedForcingTerrain_Ymom (const amrex::Box& tby,
24  const amrex::Array4<const amrex::Real>& u,
25  const amrex::Array4<const amrex::Real>& v,
26  const amrex::Array4<const amrex::Real>& w,
27  const amrex::Array4<const amrex::Real>& cell_data,
28  const amrex::Array4<const amrex::Real>& t_blank_arr,
29  const amrex::Array4<const amrex::Real>& t_blank_yface_arr,
30  const amrex::Array4<const amrex::Real>& z_cc_arr,
31  const amrex::Array4< amrex::Real>& ymom_src_arr,
32  const amrex::Geometry& geom,
33  const SolverChoice& solverChoice,
34  const amrex::Real fac);
35 
36 void ImmersedForcingTerrain_Zmom (const amrex::Box& tbz,
37  const amrex::Array4<const amrex::Real>& u,
38  const amrex::Array4<const amrex::Real>& v,
39  const amrex::Array4<const amrex::Real>& w,
40  const amrex::Array4<const amrex::Real>& cell_data,
41  const amrex::Array4<const amrex::Real>& t_blank_arr,
42  const amrex::Array4<const amrex::Real>& t_blank_zface_arr,
43  const amrex::Array4<const amrex::Real>& z_cc_arr,
44  const amrex::Array4< amrex::Real>& zmom_src_arr,
45  const amrex::Geometry& geom,
46  const SolverChoice& solverChoice,
47  const amrex::Real fac);
48 
49 // Buildings immersed forcing - MOMENTUM
50 void ImmersedForcingBuildings_Xmom (const amrex::Box& tbx,
51  const amrex::Array4<const amrex::Real>& u,
52  const amrex::Array4<const amrex::Real>& v,
53  const amrex::Array4<const amrex::Real>& w,
54  const amrex::Array4<const amrex::Real>& cell_data,
55  const amrex::Array4<const amrex::Real>& t_blank_arr,
56  const amrex::Array4<const amrex::Real>& t_blank_xface_arr,
57  const amrex::Array4<const amrex::Real>& z_cc_arr,
58  const amrex::Array4< amrex::Real>& xmom_src_arr,
59  const amrex::Geometry& geom,
60  const SolverChoice& solverChoice,
61  const amrex::Real fac);
62 
63 void ImmersedForcingBuildings_Ymom (const amrex::Box& tby,
64  const amrex::Array4<const amrex::Real>& u,
65  const amrex::Array4<const amrex::Real>& v,
66  const amrex::Array4<const amrex::Real>& w,
67  const amrex::Array4<const amrex::Real>& cell_data,
68  const amrex::Array4<const amrex::Real>& t_blank_arr,
69  const amrex::Array4<const amrex::Real>& t_blank_yface_arr,
70  const amrex::Array4<const amrex::Real>& z_cc_arr,
71  const amrex::Array4< amrex::Real>& ymom_src_arr,
72  const amrex::Geometry& geom,
73  const SolverChoice& solverChoice,
74  const amrex::Real fac);
75 
76 void ImmersedForcingBuildings_Zmom (const amrex::Box& tbz,
77  const amrex::Array4<const amrex::Real>& u,
78  const amrex::Array4<const amrex::Real>& v,
79  const amrex::Array4<const amrex::Real>& w,
80  const amrex::Array4<const amrex::Real>& cell_data,
81  const amrex::Array4<const amrex::Real>& t_blank_arr,
82  const amrex::Array4<const amrex::Real>& t_blank_zface_arr,
83  const amrex::Array4<const amrex::Real>& z_cc_arr,
84  const amrex::Array4< amrex::Real>& zmom_src_arr,
85  const amrex::Geometry& geom,
86  const SolverChoice& solverChoice,
87  const amrex::Real fac);
88 
89 // Terrain immersed forcing - MOMENTUM, fraction-stress wall law (erf.if_wall_form = fraction_stress)
90 void ImmersedForcingTerrain_Xmom_FractionStress (const amrex::Box& tbx,
91  const amrex::Array4<const amrex::Real>& u,
92  const amrex::Array4<const amrex::Real>& v,
93  const amrex::Array4<const amrex::Real>& w,
94  const amrex::Array4<const amrex::Real>& cell_data,
95  const amrex::Array4<const amrex::Real>& t_blank_arr,
96  const amrex::Array4<const amrex::Real>& t_blank_xface_arr,
97  const amrex::Array4< amrex::Real>& xmom_src_arr,
98  const amrex::Geometry& geom,
99  const SolverChoice& solverChoice,
100  const amrex::Real fac,
101  const amrex::Real time);
102 
103 void ImmersedForcingTerrain_Ymom_FractionStress (const amrex::Box& tby,
104  const amrex::Array4<const amrex::Real>& u,
105  const amrex::Array4<const amrex::Real>& v,
106  const amrex::Array4<const amrex::Real>& w,
107  const amrex::Array4<const amrex::Real>& cell_data,
108  const amrex::Array4<const amrex::Real>& t_blank_arr,
109  const amrex::Array4<const amrex::Real>& t_blank_yface_arr,
110  const amrex::Array4< amrex::Real>& ymom_src_arr,
111  const amrex::Geometry& geom,
112  const SolverChoice& solverChoice,
113  const amrex::Real fac,
114  const amrex::Real time);
115 
116 // Terrain immersed forcing - SCALARS, fraction-stress wall law (erf.if_wall_form = fraction_stress)
118  const amrex::Array4<const amrex::Real>& u,
119  const amrex::Array4<const amrex::Real>& v,
120  const amrex::Array4<const amrex::Real>& cell_data,
121  const amrex::Array4<const amrex::Real>& t_blank_arr,
122  const amrex::Array4< amrex::Real>& cell_src,
123  const amrex::Array4< amrex::Real>& wall_hfx,
124  const amrex::Array4< amrex::Real>& wall_ktarget,
125  const amrex::Geometry& geom,
126  const SolverChoice& solverChoice,
127  const amrex::Table1D<amrex::Real>& r_avg,
128  const amrex::Table1D<amrex::Real>& t_avg,
129  const amrex::Real dt,
130  const amrex::Real time,
131  bool wall_tke = false,
132  amrex::Real Cmu0 = amrex::Real(0.5562));
133 
134 // Terrain immersed forcing - SCALARS
135 void ImmersedForcingTerrain_Scalar (const amrex::Box& bx,
136  const amrex::Array4<const amrex::Real>& u,
137  const amrex::Array4<const amrex::Real>& v,
138  const amrex::Array4<const amrex::Real>& cell_data,
139  const amrex::Array4<const amrex::Real>& t_blank_arr,
140  const amrex::Array4<const amrex::Real>& z_cc_arr,
141  const amrex::Array4< amrex::Real>& cell_src,
142  const amrex::Geometry& geom,
143  const SolverChoice& solverChoice,
144  const amrex::Table1D<amrex::Real>& r_avg,
145  const amrex::Table1D<amrex::Real>& t_avg,
146  const amrex::Real time);
147 
148 // Buildings immersed forcing - SCALARS
149 void ImmersedForcingBuildings_Scalar (const amrex::Box& bx,
150  const amrex::Array4<const amrex::Real>& u,
151  const amrex::Array4<const amrex::Real>& v,
152  const amrex::Array4<const amrex::Real>& w,
153  const amrex::Array4<const amrex::Real>& cell_data,
154  const amrex::Array4<const amrex::Real>& t_blank_arr,
155  const amrex::Array4<const amrex::Real>& z_cc_arr,
156  const amrex::Array4< amrex::Real>& cell_src,
157  const amrex::Geometry& geom,
158  const SolverChoice& solverChoice,
159  const amrex::Table1D<amrex::Real>& r_avg,
160  const amrex::Table1D<amrex::Real>& t_avg,
161  const amrex::Real time);
162 
163 #endif
void ImmersedForcingTerrain_Ymom(const amrex::Box &tby, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< const amrex::Real > &t_blank_yface_arr, const amrex::Array4< const amrex::Real > &z_cc_arr, const amrex::Array4< amrex::Real > &ymom_src_arr, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Real fac)
void ImmersedForcingTerrain_Xmom(const amrex::Box &tbx, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< const amrex::Real > &t_blank_xface_arr, const amrex::Array4< const amrex::Real > &z_cc_arr, const amrex::Array4< amrex::Real > &xmom_src_arr, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Real fac)
void ImmersedForcingBuildings_Scalar(const amrex::Box &bx, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< const amrex::Real > &z_cc_arr, const amrex::Array4< amrex::Real > &cell_src, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Table1D< amrex::Real > &r_avg, const amrex::Table1D< amrex::Real > &t_avg, const amrex::Real time)
void ImmersedForcingBuildings_Ymom(const amrex::Box &tby, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< const amrex::Real > &t_blank_yface_arr, const amrex::Array4< const amrex::Real > &z_cc_arr, const amrex::Array4< amrex::Real > &ymom_src_arr, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Real fac)
void ImmersedForcingTerrain_Zmom(const amrex::Box &tbz, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< const amrex::Real > &t_blank_zface_arr, const amrex::Array4< const amrex::Real > &z_cc_arr, const amrex::Array4< amrex::Real > &zmom_src_arr, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Real fac)
void ImmersedForcingTerrain_Scalar(const amrex::Box &bx, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< const amrex::Real > &z_cc_arr, const amrex::Array4< amrex::Real > &cell_src, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Table1D< amrex::Real > &r_avg, const amrex::Table1D< amrex::Real > &t_avg, const amrex::Real time)
void ImmersedForcingTerrain_Scalar_FractionStress(const amrex::Box &bx, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< amrex::Real > &cell_src, const amrex::Array4< amrex::Real > &wall_hfx, const amrex::Array4< amrex::Real > &wall_ktarget, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Table1D< amrex::Real > &r_avg, const amrex::Table1D< amrex::Real > &t_avg, const amrex::Real dt, const amrex::Real time, bool wall_tke=false, amrex::Real Cmu0=amrex::Real(0.5562))
void ImmersedForcingBuildings_Xmom(const amrex::Box &tbx, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< const amrex::Real > &t_blank_xface_arr, const amrex::Array4< const amrex::Real > &z_cc_arr, const amrex::Array4< amrex::Real > &xmom_src_arr, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Real fac)
void ImmersedForcingTerrain_Ymom_FractionStress(const amrex::Box &tby, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< const amrex::Real > &t_blank_yface_arr, const amrex::Array4< amrex::Real > &ymom_src_arr, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Real fac, const amrex::Real time)
void ImmersedForcingTerrain_Xmom_FractionStress(const amrex::Box &tbx, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< const amrex::Real > &t_blank_xface_arr, const amrex::Array4< amrex::Real > &xmom_src_arr, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Real fac, const amrex::Real time)
void ImmersedForcingBuildings_Zmom(const amrex::Box &tbz, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &t_blank_arr, const amrex::Array4< const amrex::Real > &t_blank_zface_arr, const amrex::Array4< const amrex::Real > &z_cc_arr, const amrex::Array4< amrex::Real > &zmom_src_arr, const amrex::Geometry &geom, const SolverChoice &solverChoice, const amrex::Real fac)
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:23
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real wall_tke(const WallState &w, amrex::Real beta, amrex::Real dz, amrex::Real z0, amrex::Real theta, amrex::Real Cmu0) noexcept
Definition: ERF_ImmersedWallCell.H:251
Definition: ERF_DataStruct.H:715