4#include "AMReX_MultiFab.H"
13 BL_PROFILE(
"REMORA::sum_integrated_quantities()");
23 amrex::ParmParse
pp(
"remora");
52#pragma omp parallel if (Gpu::notInLaunchRegion())
55 const Box&
bx =
mfi.tilebox();
62 kineng_arr(
i,
j,
k) =
fourth * (
xvel_u_arr(
i,
j,
k)*
xvel_u_arr(
i,
j,
k) +
xvel_u_arr(
i+1,
j,
k)*
xvel_u_arr(
i+1,
j,
k) +
100 Lazy::QueueReduction([=]()
mutable {
102 ParallelDescriptor::ReduceRealSum(
104 ParallelDescriptor::ReduceRealMax(
107 if (ParallelDescriptor::IOProcessor()) {
127 amrex::Print() <<
'\n';
128 amrex::Print() << std::setw(
namewidth) << std::left <<
"TIME" << std::right
134 amrex::Print() << std::setw(
namewidth) << std::left <<
"KIN. ENG." << std::right
136 amrex::Print() << std::setw(
namewidth) << std::left <<
"VOLUME" << std::right
138 amrex::Print() << std::setw(
namewidth) << std::left <<
"MAX. VEL." << std::right
141 amrex::Print() <<
'\n';
142 amrex::Print() << std::setw(
namewidth) << std::left <<
"TIME" << std::right
149 amrex::Print() << std::setw(
namewidth) << std::left <<
"KIN. ENG." << std::right
152 amrex::Print() << std::setw(
namewidth) << std::left <<
"VOLUME" << std::right
155 amrex::Print() << std::setw(
namewidth) << std::left <<
"MAX. VEL." << std::right
214 MultiFab::Multiply(
tmp,
mask, 0, 0, 1, 0);
219#pragma omp parallel if (Gpu::notInLaunchRegion())
222 const Box&
bx =
mfi.tilebox();
236 ParallelDescriptor::ReduceRealSum(
sum);
constexpr amrex::Real two
constexpr amrex::Real one
constexpr amrex::Real fourth
constexpr amrex::Real zero
mf_h setVal(geomdata.ProbHi(2))
int ncons
Number of conserved scalars in the state (temperature + salt + passive scalars + biology tracers)
amrex::Vector< std::string > cons_names
Names of scalars for plotfile output.
amrex::Vector< std::unique_ptr< amrex::MultiFab > > vec_pm
horizontal scaling factor: 1 / dx (2D)
amrex::MultiFab fine_mask
Mask that zeroes out values on a coarse level underlying grids on the next finest level.
amrex::Vector< amrex::MultiFab * > cons_new
multilevel data container for current step's scalar data: temperature, salinity, passive tracer
amrex::Vector< std::unique_ptr< amrex::MultiFab > > vec_Hz
Width of cells in the vertical (z-) direction (3D, Hz in ROMS)
amrex::Vector< amrex::MultiFab * > yvel_new
multilevel data container for current step's y velocities (v in ROMS)
amrex::MultiFab & build_fine_mask(int lev)
Make mask to zero out covered cells (for mesh refinement)
amrex::Vector< amrex::MultiFab * > xvel_new
multilevel data container for current step's x velocities (u in ROMS)
void sum_integrated_quantities(amrex::Real time)
Integrate conserved quantities for diagnostics.
AMREX_FORCE_INLINE int NumDataLogs() noexcept
amrex::Real volWgtSumMF(int lev, const amrex::MultiFab &mf, int comp, bool local, bool finemask)
Perform the volume-weighted sum.
bool is_it_time_for_action(int nstep, amrex::Real time, amrex::Real dt, int action_interval, amrex::Real action_per)
Decide if it is time to take an action.
AMREX_FORCE_INLINE std::ostream & DataLog(int i)
Helper function for IO stream.
amrex::Vector< std::unique_ptr< amrex::MultiFab > > vec_pn
horizontal scaling factor: 1 / dy (2D)
static int verbose
Verbosity level of output.