ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_Implicit.H File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

 for (int ori=0;ori< 2 *AMREX_SPACEDIM;ori++)
 
 if (l_vert_implicit_fac > 0.)
 

Variables

GpuArray< Real, AMREX_SPACEDIM *2 > l_bc_neumann_vals_d
 
const int bc_comp = RhoTheta_comp
 

Function Documentation

◆ for()

for ( )
9  {
10  l_bc_neumann_vals_d[ori] = m_bc_neumann_vals[bc_comp][ori];
11  }
const int bc_comp
Definition: ERF_Implicit.H:8
GpuArray< Real, AMREX_SPACEDIM *2 > l_bc_neumann_vals_d
Definition: ERF_Implicit.H:4

Referenced by ComputeTurbulentViscosity(), fine_compute_interior_ghost_rhs(), and ERF::Write3DPlotFile().

Here is the caller graph for this function:

◆ if()

if ( l_vert_implicit_fac  ,
0.   
)
13  {
14 
15  const bool l_use_stretched_dz = (solverChoice.mesh_type == MeshType::StretchedDz);
16  const bool l_use_SurfLayer = (m_SurfaceLayer != nullptr);
17  const BCRec* bc_ptr_h = domain_bcs_type.data();
18 
19  const bool l_use_turb = solverChoice.turbChoice[level].use_kturb;
20 
21  std::unique_ptr<MultiFab> dflux_z;
22  dflux_z = std::make_unique<MultiFab>(convert(ba,IntVect(0,0,1)), dm, 1, 0);
23 
24  for ( MFIter mfi(S_old[IntVars::cons],TileNoZ()); mfi.isValid(); ++mfi)
25  {
26  Box bx = mfi.tilebox();
27 
28  const Array4< Real> & cell_data = scratch.array(mfi);
29 
30  const Array4<const Real>& z_nd_arr = z_phys_nd[level]->const_array(mfi);
31  const Array4<const Real>& detJ_arr = detJ_cc[level]->const_array(mfi);
32 
33  const Array4<Real const>& mu_turb = l_use_turb ? eddyDiffs->const_array(mfi) : Array4<const Real>{};
34 
35  const Array4<Real>& hfx_z = Hfx3->array(mfi);
36 
37  if (l_use_stretched_dz) {
38  ImplicitDiffForState_S(bx, fine_geom.Domain(), level, slow_dt,
40  cell_data,
41  stretched_dz_d[level], hfx_z,
42  mu_turb, solverChoice,
43  bc_ptr_h, l_use_SurfLayer, l_vert_implicit_fac);
44  } else if (l_use_terrain_fitted_coords) {
45  ImplicitDiffForState_T(bx, fine_geom.Domain(), level, slow_dt,
47  cell_data,
48  z_nd_arr, detJ_arr, dxInv, hfx_z,
49  mu_turb, solverChoice,
50  bc_ptr_h, l_use_SurfLayer, l_vert_implicit_fac);
51  } else {
52  ImplicitDiffForState_N(bx, fine_geom.Domain(), level, slow_dt,
54  cell_data,
55  dxInv, hfx_z,
56  mu_turb, solverChoice,
57  bc_ptr_h, l_use_SurfLayer, l_vert_implicit_fac);
58  }
59  } // mfi
60 
61  } // if do implicit solve for diffusive contribution to (rho theta) update
void ImplicitDiffForState_S(const amrex::Box &bx, const amrex::Box &domain, const int level, const amrex::Real dt, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM *2 > &bc_neumann_vals, const amrex::Array4< amrex::Real > &cell_data, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::Array4< amrex::Real > &hfx_z, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Real implicit_fac)
void ImplicitDiffForState_N(const amrex::Box &bx, const amrex::Box &domain, const int level, const amrex::Real dt, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM *2 > &bc_neumann_vals, const amrex::Array4< amrex::Real > &cell_data, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< amrex::Real > &hfx_z, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Real implicit_fac)
void ImplicitDiffForState_T(const amrex::Box &bx, const amrex::Box &domain, const int level, const amrex::Real dt, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM *2 > &bc_neumann_vals, const amrex::Array4< amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &z_nd, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< amrex::Real > &hfx_z, const amrex::Array4< const amrex::Real > &mu_turb, const SolverChoice &solverChoice, const amrex::BCRec *bc_ptr, const bool use_SurfLayer, const amrex::Real implicit_fac)
AMREX_FORCE_INLINE amrex::IntVect TileNoZ()
Definition: ERF_TileNoZ.H:11
@ cons
Definition: ERF_IndexDefines.H:158
Here is the call graph for this function:

Variable Documentation

◆ bc_comp

◆ l_bc_neumann_vals_d

GpuArray<Real, AMREX_SPACEDIM*2> l_bc_neumann_vals_d
Initial value:
{
const Real l_vert_implicit_fac = solverChoice.vert_implicit_fac[nrk]
amrex::Real Real
Definition: ERF_ShocInterface.H:19

Referenced by for(), if(), and ERFPhysBCFunct_cons::impose_vertical_cons_bcs().