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

Go to the source code of this file.

Functions

 if ((l_do_implicit_moist) &&(l_vert_implicit_fac > zero) &&(solverChoice.moisture_type !=MoistureType::None))
 

Variables

const bool l_do_implicit_moist = solverChoice.implicit_moisture_diffusion
 
const Real l_vert_implicit_fac = solverChoice.vert_implicit_fac[nrk]
 

Function Documentation

◆ if()

if ( (l_do_implicit_moist) &&(l_vert_implicit_fac > zero) &&(solverChoice.moisture_type !=MoistureType::None )
8  {
9 
10  // BCs
11  const BCRec* bc_ptr_h = domain_bcs_type.data();
12  GpuArray<Real, AMREX_SPACEDIM*2> l_bc_neumann_vals_d;
13  for (int ori = 0; ori < 2*AMREX_SPACEDIM; ori++) {
14  l_bc_neumann_vals_d[ori] = m_bc_neumann_vals[RhoQ1_comp][ori];
15  }
16  const bool l_use_SurfLayer = (m_SurfaceLayer != nullptr);
17 
18  const bool l_use_turb = solverChoice.turbChoice[level].use_kturb;
19 
20  const bool l_use_stretched_dz = (solverChoice.mesh_type == MeshType::StretchedDz);
21 
22  for ( MFIter mfi(S_new[IntVars::cons],TileNoZ()); mfi.isValid(); ++mfi)
23  {
24  Box bx = mfi.tilebox();
25 
26  // NOTE: We have updated the state, use that directly
27  const Array4< Real>& cell_data = S_new[IntVars::cons].array(mfi);
28 
29  const Array4<const Real>& z_nd_arr = z_phys_nd[level]->const_array(mfi);
30  const Array4<const Real>& detJ_arr = detJ_cc[level]->const_array(mfi);
31 
32  const Array4<const Real>& mu_turb = l_use_turb ? eddyDiffs->const_array(mfi) :
33  Array4<const Real>{};
34  const Array4<const Real>& q1fx_z = Q1fx3->const_array(mfi);
35 
36  if (l_use_stretched_dz) {
37  ImplicitDiffForStateLU_S(bx, fine_geom.Domain(), level, RhoQ1_comp,
38  slow_dt, l_bc_neumann_vals_d, cell_data,
39  stretched_dz_d[level], q1fx_z,
40  mu_turb, solverChoice,
41  bc_ptr_h, l_use_SurfLayer, l_vert_implicit_fac);
42  } else if (l_use_terrain_fitted_coords) {
43  ImplicitDiffForStateLU_T(bx, fine_geom.Domain(), level, RhoQ1_comp,
44  slow_dt, l_bc_neumann_vals_d, cell_data,
45  z_nd_arr, detJ_arr, dxInv, q1fx_z,
46  mu_turb, solverChoice,
47  bc_ptr_h, l_use_SurfLayer, l_vert_implicit_fac);
48  } else { // no terrain
49  ImplicitDiffForStateLU_N(bx, fine_geom.Domain(), level, RhoQ1_comp,
50  slow_dt, l_bc_neumann_vals_d, cell_data,
51  dxInv, q1fx_z, mu_turb, solverChoice,
52  bc_ptr_h, l_use_SurfLayer, l_vert_implicit_fac);
53  }
54  } // mfi
55  } // if moist model and do implicit diff
void ImplicitDiffForStateLU_T(const amrex::Box &bx, const amrex::Box &domain, const int level, const int n, 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< const 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 ImplicitDiffForStateLU_N(const amrex::Box &bx, const amrex::Box &domain, const int level, const int n, 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< const 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 ImplicitDiffForStateLU_S(const amrex::Box &bx, const amrex::Box &domain, const int level, const int n, 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< const 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)
const Real l_vert_implicit_fac
Definition: ERF_ImplicitPost.H:5
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:42
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
AMREX_FORCE_INLINE amrex::IntVect TileNoZ()
Definition: ERF_TileNoZ.H:11
@ cons
Definition: ERF_IndexDefines.H:176
Here is the call graph for this function:

Variable Documentation

◆ l_do_implicit_moist

const bool l_do_implicit_moist = solverChoice.implicit_moisture_diffusion

◆ l_vert_implicit_fac

const Real l_vert_implicit_fac = solverChoice.vert_implicit_fac[nrk]