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  const amrex::Real time);
66  void impose_vertical_cons_bcs (const amrex::Array4<amrex::Real>& dest_arr,
67  const amrex::Box& bx, const amrex::Box& domain,
68  const amrex::Array4<amrex::Real const>& z_nd,
69  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
70  int icomp, int ncomp, const amrex::Real time,
71  bool do_terrain_adjustment = true);
72 
73 private:
74  int m_lev;
75  amrex::Geometry m_geom;
76  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
77  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
78  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
79  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
80  amrex::MultiFab* m_z_phys_nd;
82  amrex::Real* m_th_bc_data;
83 };
84 
86 {
87 public:
88  ERFPhysBCFunct_u (const int lev, const amrex::Geometry& geom,
89  const amrex::Vector<amrex::BCRec>& domain_bcs_type,
90  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
91  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
92  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
93  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
94  const bool use_real_bcs,
95  amrex::Real* u_bc_data)
96  : m_lev(lev), m_geom(geom),
97  m_domain_bcs_type(domain_bcs_type),
98  m_domain_bcs_type_d(domain_bcs_type_d),
99  m_bc_extdir_vals(bc_extdir_vals),
100  m_bc_neumann_vals(bc_neumann_vals),
101  m_z_phys_nd(z_phys_nd.get()),
102  m_use_real_bcs(use_real_bcs),
103  m_u_bc_data(u_bc_data)
104  { }
105 
107 
108  /*
109  * Impose physical boundary conditions at domain boundaries
110  *
111  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
112  * @param[in] nghost number of ghost cells to be filled for velocity components
113  * @param[in] time time at which the data should be filled
114  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
115  */
116  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
117  amrex::IntVect const& nghost, const amrex::Real time, int bccomp, bool do_fb);
118 
119  void impose_lateral_xvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
120  const amrex::Array4<amrex::Real const>& xvel_arr,
121  const amrex::Array4<amrex::Real const>& yvel_arr,
122  const amrex::Box& bx, const amrex::Box& domain,
123  int bccomp,
124  const amrex::Real time);
125  void impose_vertical_xvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
126  const amrex::Box& bx, const amrex::Box& domain,
127  const amrex::Array4<amrex::Real const>& z_nd,
128  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
129  int bccomp,
130  const amrex::Real time);
131 
132 private:
133  int m_lev;
134  amrex::Geometry m_geom;
135  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
136  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
137  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
138  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
139  amrex::MultiFab* m_z_phys_nd;
141  amrex::Real* m_u_bc_data;
142 };
143 
145 {
146 public:
147  ERFPhysBCFunct_v (const int lev, const amrex::Geometry& geom,
148  const amrex::Vector<amrex::BCRec>& domain_bcs_type,
149  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
150  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
151  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
152  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
153  const bool use_real_bcs,
154  amrex::Real* v_bc_data)
155  : m_lev(lev),
156  m_geom(geom), m_domain_bcs_type(domain_bcs_type),
157  m_domain_bcs_type_d(domain_bcs_type_d),
158  m_bc_extdir_vals(bc_extdir_vals),
159  m_bc_neumann_vals(bc_neumann_vals),
160  m_z_phys_nd(z_phys_nd.get()),
161  m_use_real_bcs(use_real_bcs),
162  m_v_bc_data(v_bc_data)
163  { }
164 
166 
167  /*
168  * Impose physical boundary conditions at domain boundaries
169  *
170  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
171  * @param[in] icomp_cons starting component for conserved variables
172  * @param[in] ncomp_cons number of components for conserved variables
173  * @param[in] nghost number of ghost cells to be filled for velocity components
174  * @param[in] time time at which the data should be filled
175  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
176  */
177  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
178  amrex::IntVect const& nghost, const amrex::Real time, int bccomp, bool do_fb);
179 
180  void impose_lateral_yvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
181  const amrex::Array4<amrex::Real const>& xvel_arr,
182  const amrex::Array4<amrex::Real const>& yvel_arr,
183  const amrex::Box& bx, const amrex::Box& domain,
184  int bccomp,
185  const amrex::Real time);
186  void impose_vertical_yvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
187  const amrex::Box& bx, const amrex::Box& domain,
188  const amrex::Array4<amrex::Real const>& z_nd,
189  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
190  int bccomp,
191  const amrex::Real time);
192 
193 private:
194  int m_lev;
195  amrex::Geometry m_geom;
196  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
197  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
198  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
199  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
200  amrex::MultiFab* m_z_phys_nd;
202  amrex::Real* m_v_bc_data;
203 };
204 
206 {
207 public:
208  ERFPhysBCFunct_w (const int lev, const amrex::Geometry& geom,
209  const amrex::Vector<amrex::BCRec>& domain_bcs_type,
210  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
211  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_extdir_vals,
212  amrex::Array<amrex::Array<amrex::Real,AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> bc_neumann_vals,
213  const TerrainType& terrain_type,
214  amrex::Vector<std::unique_ptr<amrex::MultiFab>>& mapfac_lev,
215  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
216  const bool use_real_bcs,
217  amrex::Real* w_bc_data)
218  : m_lev(lev),
219  m_geom(geom), m_domain_bcs_type(domain_bcs_type),
220  m_domain_bcs_type_d(domain_bcs_type_d),
221  m_bc_extdir_vals(bc_extdir_vals),
222  m_bc_neumann_vals(bc_neumann_vals),
223  m_terrain_type(terrain_type),
224  m_z_phys_nd(z_phys_nd.get()),
225  m_use_real_bcs(use_real_bcs),
226  m_w_bc_data(w_bc_data)
227  {
228  m_mapfac_u = mapfac_lev[MapFacType::u_x].get();
229  m_mapfac_v = mapfac_lev[MapFacType::v_y].get();
230  }
231 
233 
234  /*
235  * Impose physical boundary conditions at domain boundaries
236  *
237  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
238  * @param[in] icomp_cons starting component for conserved variables
239  * @param[in] ncomp_cons number of components for conserved variables
240  * @param[in] nghost number of ghost cells to be filled for velocity components
241  * @param[in] time time at which the data should be filled
242  * @param[in] use_real_bcs if true then we fill boundary conditions for interior locations
243  */
244  void operator() (amrex::MultiFab& mf, amrex::MultiFab& xvel, amrex::MultiFab& yvel,
245  amrex::IntVect const& nghost, const amrex::Real time, int bccomp,
246  bool do_fb);
247 
248  void impose_lateral_zvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
249  const amrex::Array4<amrex::Real const>& xvel_arr,
250  const amrex::Array4<amrex::Real const>& yvel_arr,
251  const amrex::Box& bx, const amrex::Box& domain,
252  const amrex::Array4<amrex::Real const>& mf_u,
253  const amrex::Array4<amrex::Real const>& mf_v,
254  const amrex::Array4<amrex::Real const>& z_nd,
255  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
256  TerrainType terrain_type, int bccomp,
257  const amrex::Real time);
258  void impose_vertical_zvel_bcs (const amrex::Array4<amrex::Real>& dest_arr,
259  const amrex::Array4<amrex::Real const>& xvel_arr,
260  const amrex::Array4<amrex::Real const>& yvel_arr,
261  const amrex::Box& bx, const amrex::Box& domain,
262  const amrex::Array4<amrex::Real const>& mf_u,
263  const amrex::Array4<amrex::Real const>& mf_v,
264  const amrex::Array4<amrex::Real const>& z_nd,
265  const amrex::GpuArray<amrex::Real,AMREX_SPACEDIM> dxInv,
266  int bccomp_u, int bccomp_v, int bccomp_w,
267  TerrainType terrain_type,
268  const amrex::Real time);
269 
270 private:
271  int m_lev;
272  amrex::Geometry m_geom;
273  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
274  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
275  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_extdir_vals;
276  amrex::Array<amrex::Array<amrex::Real, AMREX_SPACEDIM*2>,AMREX_SPACEDIM+NBCVAR_max> m_bc_neumann_vals;
277  TerrainType m_terrain_type;
278  amrex::MultiFab* m_mapfac_u;
279  amrex::MultiFab* m_mapfac_v;
280  amrex::MultiFab* m_z_phys_nd;
282  amrex::Real* m_w_bc_data;
283 };
284 
286 {
287 public:
288  ERFPhysBCFunct_base (const int lev,
289  const amrex::Geometry& geom, const amrex::Vector<amrex::BCRec>& domain_bcs_type,
290  const amrex::Gpu::DeviceVector<amrex::BCRec>& domain_bcs_type_d,
291  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
292  bool moving_terrain)
293  : m_lev(lev), m_geom(geom),
294  m_moving_terrain(moving_terrain),
295  m_domain_bcs_type(domain_bcs_type),
296  m_domain_bcs_type_d(domain_bcs_type_d),
297  m_z_phys_nd(z_phys_nd.get())
298  {}
299 
301 
302  /*
303  * Impose physical boundary conditions at domain boundaries
304  *
305  * @param[out] mfs Vector of MultiFabs to be filled containing, in order: cons, xvel, yvel, and zvel data
306  * @param[in] icomp starting component for conserved variables
307  * @param[in] ncomp number of components for conserved variables
308  * @param[in] nghost number of ghost cells to be filled for conserved variables
309  * @param[in] time time at which the data should be filled
310  */
311  void operator() (amrex::MultiFab& mf, int icomp, int ncomp, amrex::IntVect const& nghost);
312 
313  void impose_lateral_basestate_bcs (const amrex::Array4<amrex::Real>& dest_arr,
314  const amrex::Box& bx, const amrex::Box& domain,
315  int ncomp, const amrex::IntVect& nghost);
316  void impose_vertical_basestate_bcs (const amrex::Array4<amrex::Real>& dest_arr,
317  const amrex::Array4<amrex::Real const>& z_nd,
318  const amrex::Box& bx, const amrex::Box& domain,
319  int ncomp, const amrex::IntVect& nghost);
320 
321 private:
322  int m_lev;
323  amrex::Geometry m_geom;
325  amrex::Vector<amrex::BCRec> m_domain_bcs_type;
326  amrex::Gpu::DeviceVector<amrex::BCRec> m_domain_bcs_type_d;
327  amrex::MultiFab* m_z_phys_nd;
328 };
329 
330 #endif
@ v_y
Definition: ERF_DataStruct.H:23
@ u_x
Definition: ERF_DataStruct.H:22
#define NBCVAR_max
Definition: ERF_IndexDefines.H:29
Definition: ERF_PhysBCFunct.H:286
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, std::unique_ptr< amrex::MultiFab > &z_phys_nd, bool moving_terrain)
Definition: ERF_PhysBCFunct.H:288
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:326
void impose_vertical_basestate_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Array4< amrex::Real const > &z_nd, const amrex::Box &bx, const amrex::Box &domain, int ncomp, const amrex::IntVect &nghost)
Definition: ERF_BoundaryConditionsBaseState.cpp:248
int m_lev
Definition: ERF_PhysBCFunct.H:322
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:327
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:323
bool m_moving_terrain
Definition: ERF_PhysBCFunct.H:324
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:16
void operator()(amrex::MultiFab &mf, int icomp, int ncomp, amrex::IntVect const &nghost)
Definition: ERF_PhysBCFunct.cpp:325
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:325
~ERFPhysBCFunct_base()
Definition: ERF_PhysBCFunct.H:300
Definition: ERF_PhysBCFunct.H:24
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:81
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:75
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:78
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, const amrex::Real time)
Definition: ERF_BoundaryConditionsCons.cpp:18
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, const amrex::Real time, bool do_terrain_adjustment=true)
Definition: ERF_BoundaryConditionsCons.cpp:319
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:79
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:77
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:76
~ERFPhysBCFunct_cons()
Definition: ERF_PhysBCFunct.H:44
amrex::Real * m_th_bc_data
Definition: ERF_PhysBCFunct.H:82
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:80
int m_lev
Definition: ERF_PhysBCFunct.H:74
Definition: ERF_PhysBCFunct.H:86
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:88
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, const amrex::Real time)
Definition: ERF_BoundaryConditionsXvel.cpp:15
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:134
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:137
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:136
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:140
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:138
amrex::Real * m_u_bc_data
Definition: ERF_PhysBCFunct.H:141
int m_lev
Definition: ERF_PhysBCFunct.H:133
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:135
~ERFPhysBCFunct_u()
Definition: ERF_PhysBCFunct.H:106
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:90
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:139
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:193
Definition: ERF_PhysBCFunct.H:145
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:195
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:197
amrex::Real * m_v_bc_data
Definition: ERF_PhysBCFunct.H:202
int m_lev
Definition: ERF_PhysBCFunct.H:194
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, const amrex::Real time)
Definition: ERF_BoundaryConditionsYvel.cpp:14
~ERFPhysBCFunct_v()
Definition: ERF_PhysBCFunct.H:165
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:147
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, const amrex::Real time)
Definition: ERF_BoundaryConditionsYvel.cpp:193
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:199
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:201
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:165
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:196
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:198
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:200
Definition: ERF_PhysBCFunct.H:206
amrex::Vector< amrex::BCRec > m_domain_bcs_type
Definition: ERF_PhysBCFunct.H:273
amrex::Geometry m_geom
Definition: ERF_PhysBCFunct.H:272
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, const amrex::Real time)
Definition: ERF_BoundaryConditionsZvel.cpp:182
int m_lev
Definition: ERF_PhysBCFunct.H:271
amrex::Real * m_w_bc_data
Definition: ERF_PhysBCFunct.H:282
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:238
bool m_use_real_bcs
Definition: ERF_PhysBCFunct.H:281
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, const amrex::Real time)
Definition: ERF_BoundaryConditionsZvel.cpp:16
amrex::Gpu::DeviceVector< amrex::BCRec > m_domain_bcs_type_d
Definition: ERF_PhysBCFunct.H:274
amrex::MultiFab * m_mapfac_v
Definition: ERF_PhysBCFunct.H:279
TerrainType m_terrain_type
Definition: ERF_PhysBCFunct.H:277
amrex::MultiFab * m_z_phys_nd
Definition: ERF_PhysBCFunct.H:280
amrex::MultiFab * m_mapfac_u
Definition: ERF_PhysBCFunct.H:278
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_neumann_vals
Definition: ERF_PhysBCFunct.H:276
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:208
~ERFPhysBCFunct_w()
Definition: ERF_PhysBCFunct.H:232
amrex::Array< amrex::Array< amrex::Real, AMREX_SPACEDIM *2 >, AMREX_SPACEDIM+NBCVAR_max > m_bc_extdir_vals
Definition: ERF_PhysBCFunct.H:275
@ ng
Definition: ERF_Morrison.H:48
@ xvel
Definition: ERF_IndexDefines.H:141
@ yvel
Definition: ERF_IndexDefines.H:142