ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ERF_PhysBCFunct.H
Go to the documentation of this file.
1 #ifndef ERF_PhysBCFunct_H_
2 #define ERF_PhysBCFunct_H_
3 
4 #include <AMReX_Config.H>
5 
6 #include <AMReX_BCRec.H>
7 #include <AMReX_Geometry.H>
8 #include <AMReX_MultiFab.H>
9 #include <AMReX_ArrayLim.H>
10 #include <AMReX_FilCC_C.H>
11 #include <AMReX_FilND_C.H>
12 #include <AMReX_FilFC_C.H>
13 #include "AMReX_TypeTraits.H"
14 #include "AMReX_Orientation.H"
15 
16 #include <ERF_ReadBndryPlanes.H>
18 #include <ERF_IndexDefines.H>
19 #include <ERF_DataStruct.H>
20 #include <ERF_EddyViscosity.H>
21 #include <ERF_TerrainMetrics.H>
22 
24 {
25 public:
26  ERFPhysBCFunct_cons (const int lev,
27  const amrex::Geometry& geom, const amrex::Vector<amrex::BCRec>& domain_bcs_type,
28  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
29  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
30  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
31  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
32  const bool use_real_bcs,
33  amrex::Real* th_bc_data)
34  : m_lev(lev), m_geom(geom),
35  m_domain_bcs_type(domain_bcs_type),
36  m_domain_bcs_type_d(domain_bcs_type_d),
37  m_bc_extdir_vals(bc_extdir_vals),
38  m_bc_neumann_vals(bc_neumann_vals),
39  m_z_phys_nd(z_phys_nd.get()),
40  m_use_real_bcs(use_real_bcs),
41  m_th_bc_data(th_bc_data)
42  {}
43 
45 
46  /*
47  * Impose physical boundary conditions at domain boundaries
48  *
49  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
50  * @param[in] icomp starting component for conserved variables
51  * @param[in] ncomp number of components for conserved variables
52  * @param[in] nghost number of ghost cells to be filled for conserved variables
53  * @param[in] time time at which the data should be filled
54  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
55  */
56  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
57  int icomp, int ncomp, amrex::IntVect const& nghost,
58  const amrex::Real time, int bccomp_cons, bool do_fb = true, bool do_terrain_adjustment = true);
59 
60  void impose_lateral_cons_bcs (const amrex::Array4<amrex::Real>& dest_arr,
61  const amrex::Array4<amrex::Real const>& xvel_arr,
62  const amrex::Array4<amrex::Real const>& yvel_arr,
63  const amrex::Box& bx, const amrex::Box& domain,
64  int icomp, int ncomp, amrex::IntVect ng);
65  void impose_vertical_cons_bcs (const amrex::Array4<amrex::Real>& dest_arr,
66  const amrex::Box& bx, const amrex::Box& domain,
67  const amrex::Array4<amrex::Real const>& z_nd,
68  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
69  int icomp, int ncomp, bool do_terrain_adjustment = true);
70 
71 private:
72  int m_lev;
73  amrex::Geometry m_geom;
74  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
75  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
76  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
77  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
78  amrex::MultiFab* m_z_phys_nd;
80  amrex::Real* m_th_bc_data;
81 };
82 
84 {
85 public:
86  ERFPhysBCFunct_u (const int lev, const amrex::Geometry& geom,
87  const amrex::Vector<amrex::BCRec>& domain_bcs_type,
88  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
89  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
90  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
91  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
92  const bool use_real_bcs,
93  amrex::Real* u_bc_data)
94  : m_lev(lev), m_geom(geom),
95  m_domain_bcs_type(domain_bcs_type),
96  m_domain_bcs_type_d(domain_bcs_type_d),
97  m_bc_extdir_vals(bc_extdir_vals),
98  m_bc_neumann_vals(bc_neumann_vals),
99  m_z_phys_nd(z_phys_nd.get()),
100  m_use_real_bcs(use_real_bcs),
101  m_u_bc_data(u_bc_data)
102  { }
103 
105 
106  /*
107  * Impose physical boundary conditions at domain boundaries
108  *
109  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
110  * @param[in] nghost number of ghost cells to be filled for velocity components
111  * @param[in] time time at which the data should be filled
112  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
113  */
114  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
115  amrex::IntVect const& nghost, const amrex::Real time, int bccomp, bool do_fb);
116 
117  void impose_lateral_xvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
118  const amrex::Array4<amrex::Real const>& xvel_arr,
119  const amrex::Array4<amrex::Real const>& yvel_arr,
120  const amrex::Box& bx, const amrex::Box& domain,
121  int bccomp);
122  void impose_vertical_xvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
123  const amrex::Box& bx, const amrex::Box& domain,
124  const amrex::Array4<amrex::Real const>& z_nd,
125  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
126  int bccomp,
127  const amrex::Real time);
128 
129 private:
130  int m_lev;
131  amrex::Geometry m_geom;
132  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
133  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
134  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
135  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
136  amrex::MultiFab* m_z_phys_nd;
138  amrex::Real* m_u_bc_data;
139 };
140 
142 {
143 public:
144  ERFPhysBCFunct_v (const int lev, const amrex::Geometry& geom,
145  const amrex::Vector<amrex::BCRec>& domain_bcs_type,
146  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
147  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
148  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
149  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
150  const bool use_real_bcs,
151  amrex::Real* v_bc_data)
152  : m_lev(lev),
153  m_geom(geom), m_domain_bcs_type(domain_bcs_type),
154  m_domain_bcs_type_d(domain_bcs_type_d),
155  m_bc_extdir_vals(bc_extdir_vals),
156  m_bc_neumann_vals(bc_neumann_vals),
157  m_z_phys_nd(z_phys_nd.get()),
158  m_use_real_bcs(use_real_bcs),
159  m_v_bc_data(v_bc_data)
160  { }
161 
163 
164  /*
165  * Impose physical boundary conditions at domain boundaries
166  *
167  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
168  * @param[in] icomp_cons starting component for conserved variables
169  * @param[in] ncomp_cons number of components for conserved variables
170  * @param[in] nghost number of ghost cells to be filled for velocity components
171  * @param[in] time time at which the data should be filled
172  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
173  */
174  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
175  amrex::IntVect const& nghost, const amrex::Real time, int bccomp, bool do_fb);
176 
177  void impose_lateral_yvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
178  const amrex::Array4<amrex::Real const>& xvel_arr,
179  const amrex::Array4<amrex::Real const>& yvel_arr,
180  const amrex::Box& bx, const amrex::Box& domain,
181  int bccomp);
182  void impose_vertical_yvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
183  const amrex::Box& bx, const amrex::Box& domain,
184  const amrex::Array4<amrex::Real const>& z_nd,
185  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
186  int bccomp);
187 
188 private:
189  int m_lev;
190  amrex::Geometry m_geom;
191  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
192  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
193  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
194  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
195  amrex::MultiFab* m_z_phys_nd;
197  amrex::Real* m_v_bc_data;
198 };
199 
201 {
202 public:
203  ERFPhysBCFunct_w (const int lev, const amrex::Geometry& geom,
204  const amrex::Vector<amrex::BCRec>& domain_bcs_type,
205  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
206  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
207  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
208  const TerrainType& terrain_type,
209  amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac_lev,
210  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
211  const bool use_real_bcs,
212  amrex::Real* w_bc_data)
213  : m_lev(lev),
214  m_geom(geom), m_domain_bcs_type(domain_bcs_type),
215  m_domain_bcs_type_d(domain_bcs_type_d),
216  m_bc_extdir_vals(bc_extdir_vals),
217  m_bc_neumann_vals(bc_neumann_vals),
218  m_terrain_type(terrain_type),
219  m_z_phys_nd(z_phys_nd.get()),
220  m_use_real_bcs(use_real_bcs),
221  m_w_bc_data(w_bc_data)
222  {
223  m_mapfac_u = mapfac_lev[MapFacType::u_x].get();
224  m_mapfac_v = mapfac_lev[MapFacType::v_x].get();
225  }
226 
228 
229  /*
230  * Impose physical boundary conditions at domain boundaries
231  *
232  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
233  * @param[in] icomp_cons starting component for conserved variables
234  * @param[in] ncomp_cons number of components for conserved variables
235  * @param[in] nghost number of ghost cells to be filled for velocity components
236  * @param[in] time time at which the data should be filled
237  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
238  */
239  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
240  amrex::IntVect const& nghost, const amrex::Real time, int bccomp,
241  bool do_fb);
242 
243  void impose_lateral_zvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
244  const amrex::Array4<amrex::Real const>& xvel_arr,
245  const amrex::Array4<amrex::Real const>& yvel_arr,
246  const amrex::Box& bx, const amrex::Box& domain,
247  const amrex::Array4<amrex::Real const>& mf_u,
248  const amrex::Array4<amrex::Real const>& mf_v,
249  const amrex::Array4<amrex::Real const>& z_nd,
250  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
251  TerrainType terrain_type, int bccomp);
252  void impose_vertical_zvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
253  const amrex::Array4<amrex::Real const>& xvel_arr,
254  const amrex::Array4<amrex::Real const>& yvel_arr,
255  const amrex::Box& bx, const amrex::Box& domain,
256  const amrex::Array4<amrex::Real const>& mf_u,
257  const amrex::Array4<amrex::Real const>& mf_v,
258  const amrex::Array4<amrex::Real const>& z_nd,
259  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
260  int bccomp_u, int bccomp_v, int bccomp_w,
261  TerrainType terrain_type);
262 
263 private:
264  int m_lev;
265  amrex::Geometry m_geom;
266  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
267  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
268  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
269  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
270  TerrainType m_terrain_type;
271  amrex::MultiFab* m_mapfac_u;
272  amrex::MultiFab* m_mapfac_v;
273  amrex::MultiFab* m_z_phys_nd;
275  amrex::Real* m_w_bc_data;
276 };
277 
279 {
280 public:
281  ERFPhysBCFunct_base (const int lev,
282  const amrex::Geometry& geom, const amrex::Vector<amrex::BCRec>& domain_bcs_type,
283  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
284  bool moving_terrain)
285  : m_lev(lev), m_geom(geom),
286  m_moving_terrain(moving_terrain),
287  m_domain_bcs_type(domain_bcs_type),
288  m_domain_bcs_type_d(domain_bcs_type_d)
289  {}
290 
292 
293  /*
294  * Impose physical boundary conditions at domain boundaries
295  *
296  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
297  * @param[in] icomp starting component for conserved variables
298  * @param[in] ncomp number of components for conserved variables
299  * @param[in] nghost number of ghost cells to be filled for conserved variables
300  * @param[in] time time at which the data should be filled
301  */
302  void operator() (amrex::MultiFab& mf, int icomp, int ncomp, amrex::IntVect const& nghost);
303 
304  void impose_lateral_basestate_bcs (const amrex::Array4<amrex::Real>& dest_arr,
305  const amrex::Box& bx, const amrex::Box& domain,
306  int ncomp, const amrex::IntVect& nghost);
307  void impose_vertical_basestate_bcs (const amrex::Array4<amrex::Real>& dest_arr,
308  const amrex::Box& bx, const amrex::Box& domain,
309  int ncomp, const amrex::IntVect& nghost);
310 
311 private:
312  int m_lev;
313  amrex::Geometry m_geom;
315  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
316  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
317 };
318 
319 #endif
@ v_x
Definition: ERF_DataStruct.H:21
@ u_x
Definition: ERF_DataStruct.H:21
#define NBCVAR_max
Definition: ERF_IndexDefines.H:29
Definition: ERF_PhysBCFunct.H:279
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:316
void impose_vertical_basestate_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, int ncomp, const amrex::IntVect &nghost)
Definition: ERF_BoundaryConditionsBaseState.cpp:247
ERFPhysBCFunct_base(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, bool moving_terrain)
Definition: ERF_PhysBCFunct.H:281
int m_lev
Definition: ERF_PhysBCFunct.H:312
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:313
bool m_moving_terrain
Definition: ERF_PhysBCFunct.H:314
void impose_lateral_basestate_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, int ncomp, const amrex::IntVect &nghost)
Definition: ERF_BoundaryConditionsBaseState.cpp:15
void operator()(amrex::MultiFab &mf, int icomp, int ncomp, amrex::IntVect const &nghost)
Definition: ERF_PhysBCFunct.cpp:321
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:315
~ERFPhysBCFunct_base()
Definition: ERF_PhysBCFunct.H:291
Definition: ERF_PhysBCFunct.H:24
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:79
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:73
void impose_vertical_cons_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::Array4< amrex::Real const > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, int icomp, int ncomp, bool do_terrain_adjustment=true)
Definition: ERF_BoundaryConditionsCons.cpp:317
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:76
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:77
void operator()(amrex::MultiFab &mf, amrex::MultiFab &xvel, amrex::MultiFab &yvel, int icomp, int ncomp, amrex::IntVect const &nghost, const amrex::Real time, int bccomp_cons, bool do_fb=true, bool do_terrain_adjustment=true)
Definition: ERF_PhysBCFunct.cpp:16
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:75
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:74
~ERFPhysBCFunct_cons()
Definition: ERF_PhysBCFunct.H:44
amrex::Real * m_th_bc_data
Definition: ERF_PhysBCFunct.H:80
ERFPhysBCFunct_cons(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_extdir_vals, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_neumann_vals, std::unique_ptr< amrex::MultiFab > &z_phys_nd, const bool use_real_bcs, amrex::Real *th_bc_data)
Definition: ERF_PhysBCFunct.H:26
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:78
int m_lev
Definition: ERF_PhysBCFunct.H:72
void impose_lateral_cons_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &xvel_arr, const amrex::Array4< amrex::Real const > &yvel_arr, const amrex::Box &bx, const amrex::Box &domain, int icomp, int ncomp, amrex::IntVect ng)
Definition: ERF_BoundaryConditionsCons.cpp:17
Definition: ERF_PhysBCFunct.H:84
ERFPhysBCFunct_u(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_extdir_vals, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_neumann_vals, std::unique_ptr< amrex::MultiFab > &z_phys_nd, const bool use_real_bcs, amrex::Real *u_bc_data)
Definition: ERF_PhysBCFunct.H:86
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:131
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:134
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:133
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:137
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:135
amrex::Real * m_u_bc_data
Definition: ERF_PhysBCFunct.H:138
void impose_lateral_xvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &xvel_arr, const amrex::Array4< amrex::Real const > &yvel_arr, const amrex::Box &bx, const amrex::Box &domain, int bccomp)
Definition: ERF_BoundaryConditionsXvel.cpp:15
int m_lev
Definition: ERF_PhysBCFunct.H:130
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:132
~ERFPhysBCFunct_u()
Definition: ERF_PhysBCFunct.H:104
void operator()(amrex::MultiFab &mf, amrex::MultiFab &xvel, amrex::MultiFab &yvel, amrex::IntVect const &nghost, const amrex::Real time, int bccomp, bool do_fb)
Definition: ERF_PhysBCFunct.cpp:89
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:136
void impose_vertical_xvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::Array4< amrex::Real const > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, int bccomp, const amrex::Real time)
Definition: ERF_BoundaryConditionsXvel.cpp:192
Definition: ERF_PhysBCFunct.H:142
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:190
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:192
amrex::Real * m_v_bc_data
Definition: ERF_PhysBCFunct.H:197
int m_lev
Definition: ERF_PhysBCFunct.H:189
~ERFPhysBCFunct_v()
Definition: ERF_PhysBCFunct.H:162
ERFPhysBCFunct_v(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_extdir_vals, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_neumann_vals, std::unique_ptr< amrex::MultiFab > &z_phys_nd, const bool use_real_bcs, amrex::Real *v_bc_data)
Definition: ERF_PhysBCFunct.H:144
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:194
void impose_vertical_yvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::Array4< amrex::Real const > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, int bccomp)
Definition: ERF_BoundaryConditionsYvel.cpp:193
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:196
void operator()(amrex::MultiFab &mf, amrex::MultiFab &xvel, amrex::MultiFab &yvel, amrex::IntVect const &nghost, const amrex::Real time, int bccomp, bool do_fb)
Definition: ERF_PhysBCFunct.cpp:163
void impose_lateral_yvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &xvel_arr, const amrex::Array4< amrex::Real const > &yvel_arr, const amrex::Box &bx, const amrex::Box &domain, int bccomp)
Definition: ERF_BoundaryConditionsYvel.cpp:14
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:191
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:193
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:195
Definition: ERF_PhysBCFunct.H:201
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:266
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:265
int m_lev
Definition: ERF_PhysBCFunct.H:264
amrex::Real * m_w_bc_data
Definition: ERF_PhysBCFunct.H:275
void operator()(amrex::MultiFab &mf, amrex::MultiFab &xvel, amrex::MultiFab &yvel, amrex::IntVect const &nghost, const amrex::Real time, int bccomp, bool do_fb)
Definition: ERF_PhysBCFunct.cpp:235
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:274
void impose_lateral_zvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &xvel_arr, const amrex::Array4< amrex::Real const > &yvel_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::Array4< amrex::Real const > &mf_u, const amrex::Array4< amrex::Real const > &mf_v, const amrex::Array4< amrex::Real const > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, TerrainType terrain_type, int bccomp)
Definition: ERF_BoundaryConditionsZvel.cpp:16
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:267
amrex::MultiFab * m_mapfac_v
Definition: ERF_PhysBCFunct.H:272
TerrainType m_terrain_type
Definition: ERF_PhysBCFunct.H:270
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:273
amrex::MultiFab * m_mapfac_u
Definition: ERF_PhysBCFunct.H:271
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:269
ERFPhysBCFunct_w(const int lev, const amrex::Geometry &geom, const amrex::Vector< amrex::BCRec > &domain_bcs_type, const amrex::Gpu::DeviceVector< amrex::BCRec > &domain_bcs_type_d, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_extdir_vals, amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > bc_neumann_vals, const TerrainType &terrain_type, amrex::Vector< std::unique_ptr< amrex::MultiFab >> &mapfac_lev, std::unique_ptr< amrex::MultiFab > &z_phys_nd, const bool use_real_bcs, amrex::Real *w_bc_data)
Definition: ERF_PhysBCFunct.H:203
~ERFPhysBCFunct_w()
Definition: ERF_PhysBCFunct.H:227
void impose_vertical_zvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &xvel_arr, const amrex::Array4< amrex::Real const > &yvel_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::Array4< amrex::Real const > &mf_u, const amrex::Array4< amrex::Real const > &mf_v, const amrex::Array4< amrex::Real const > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, int bccomp_u, int bccomp_v, int bccomp_w, TerrainType terrain_type)
Definition: ERF_BoundaryConditionsZvel.cpp:181
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:268
@ ng
Definition: ERF_Morrison.H:48
@ xvel
Definition: ERF_IndexDefines.H:141
@ yvel
Definition: ERF_IndexDefines.H:142