ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_TimeAvgVel.cpp File Reference
#include <ERF_Utils.H>
#include <ERF_IndexDefines.H>
Include dependency graph for ERF_TimeAvgVel.cpp:

Functions

void Time_Avg_Vel_atCC (double dt_d, double &t_avg_cnt, MultiFab *vel_t_avg, MultiFab &xvel, MultiFab &yvel, MultiFab &zvel)
 
void Accumulate_Interval_Means (double dt_d, double &t_mean_cnt, MultiFab *interval_means, MultiFab &xvel, MultiFab &yvel, MultiFab &zvel, MultiFab &cons)
 

Function Documentation

◆ Accumulate_Interval_Means()

void Accumulate_Interval_Means ( double  dt_d,
double &  t_mean_cnt,
MultiFab *  interval_means,
MultiFab &  xvel,
MultiFab &  yvel,
MultiFab &  zvel,
MultiFab &  cons 
)
60 {
61  AMREX_ALWAYS_ASSERT(interval_means != nullptr);
62 
63  t_mean_cnt += dt_d;
64  const Real dt = static_cast<Real>(dt_d);
65 
66 #ifdef _OPENMP
67 #pragma omp parallel if (Gpu::notInLaunchRegion())
68 #endif
69  for (MFIter mfi(*interval_means, TilingIfNotGPU()); mfi.isValid(); ++mfi)
70  {
71  const Box& bx = mfi.tilebox();
72  const Array4<const Real>& u = xvel.const_array(mfi);
73  const Array4<const Real>& v = yvel.const_array(mfi);
74  const Array4<const Real>& w = zvel.const_array(mfi);
75  const Array4<const Real>& state = cons.const_array(mfi);
76  const Array4<Real>& mean = interval_means->array(mfi);
77 
78  ParallelFor(bx, [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
79  {
80  const Real u_cc = Real(0.5) * (u(i,j,k) + u(i+1,j,k));
81  const Real v_cc = Real(0.5) * (v(i,j,k) + v(i,j+1,k));
82  const Real w_cc = Real(0.5) * (w(i,j,k) + w(i,j,k+1));
83  const Real theta = state(i,j,k,RhoTheta_comp) / state(i,j,k,Rho_comp);
84 
85  mean(i,j,k,0) += u_cc * dt;
86  mean(i,j,k,1) += v_cc * dt;
87  mean(i,j,k,2) += w_cc * dt;
88  mean(i,j,k,3) += theta * dt;
89  mean(i,j,k,4) += u_cc * u_cc * dt;
90  mean(i,j,k,5) += v_cc * v_cc * dt;
91  mean(i,j,k,6) += w_cc * w_cc * dt;
92  mean(i,j,k,7) += u_cc * w_cc * dt;
93  mean(i,j,k,8) += v_cc * w_cc * dt;
94  mean(i,j,k,9) += w_cc * theta * dt;
95  });
96  }
97 }
#define Rho_comp
Definition: ERF_IndexDefines.H:39
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:40
AMREX_ALWAYS_ASSERT(bx.length()[2]==khi+1)
ParallelFor(fab_box, [=] AMREX_GPU_DEVICE(int i, int j, int k) { qrcuten_arr(i, j, k)=Real(0);qscuten_arr(i, j, k)=Real(0);qicuten_arr(i, j, k)=Real(0);})
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:22
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ theta
Definition: ERF_SLM.H:20
@ xvel
Definition: ERF_IndexDefines.H:215
@ cons
Definition: ERF_IndexDefines.H:214
@ zvel
Definition: ERF_IndexDefines.H:217
@ yvel
Definition: ERF_IndexDefines.H:216

Referenced by ERF::Advance(), and ERF::InitData_post().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Time_Avg_Vel_atCC()

void Time_Avg_Vel_atCC ( double  dt_d,
double &  t_avg_cnt,
MultiFab *  vel_t_avg,
MultiFab &  xvel,
MultiFab &  yvel,
MultiFab &  zvel 
)
16 {
17  // Augment the counter
18  t_avg_cnt += dt_d;
19 
20  Real dt = static_cast<Real>(dt_d);
21 
22 #ifdef _OPENMP
23 #pragma omp parallel if (Gpu::notInLaunchRegion())
24 #endif
25  for ( MFIter mfi(*(vel_t_avg),TilingIfNotGPU()); mfi.isValid(); ++mfi)
26  {
27  // CC tilebox
28  Box tbx = mfi.tilebox();
29 
30  // Velocity on faces
31  const Array4<Real>& velx = xvel.array(mfi);
32  const Array4<Real>& vely = yvel.array(mfi);
33  const Array4<Real>& velz = zvel.array(mfi);
34 
35  // Time average at CC
36  Array4<Real> vel_t_avg_arr = vel_t_avg->array(mfi);
37 
38  ParallelFor(tbx, [=] AMREX_GPU_DEVICE (int i, int j, int k)
39  {
40  Real u_cc = myhalf * ( velx(i,j,k) + velx(i+1,j ,k ) );
41  Real v_cc = myhalf * ( vely(i,j,k) + vely(i ,j+1,k ) );
42  Real w_cc = myhalf * ( velz(i,j,k) + velz(i ,j ,k+1) );
43  Real umag_cc = std::sqrt(u_cc*u_cc + v_cc*v_cc + w_cc*w_cc);
44  vel_t_avg_arr(i,j,k,0) += u_cc * dt;
45  vel_t_avg_arr(i,j,k,1) += v_cc * dt;
46  vel_t_avg_arr(i,j,k,2) += w_cc * dt;
47  vel_t_avg_arr(i,j,k,3) += umag_cc * dt;
48  });
49  }
50 }
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:13

Referenced by ERF::Advance(), and ERF::InitData_post().

Here is the call graph for this function:
Here is the caller graph for this function: