21 Real time,
int bccomp,
int n_not_fill,
const MultiFab& mf_calc,
22 const MultiFab& mf_msku,
const MultiFab& mf_mskv)
24 if (
m_geom.isAllPeriodic())
return;
26 BL_PROFILE(
"REMORAPhysBCFunct::()");
28 const auto& domain =
m_geom.Domain();
29 const auto dxInv =
m_geom.InvCellSizeArray();
32 Box gdomain = amrex::convert(domain, mf.boxArray().ixType());
33 for (
int i = 0; i < AMREX_SPACEDIM; ++i) {
35 gdomain.grow(i, nghost[i]);
38 const bool null_mf_calc = (mf_calc.ok()) ?
false :
true;
39 const bool null_mf_msku = (mf_msku.ok()) ?
false :
true;
40 const bool null_mf_mskv = (mf_mskv.ok()) ?
false :
true;
43#pragma omp parallel if (Gpu::notInLaunchRegion())
46 if (mf.boxArray()[0].ixType() == IndexType(IntVect(0,0,0))) {
49 for (MFIter mfi(mf); mfi.isValid(); ++mfi)
51 const Array4<Real>& dest_arr = mf.array(mfi);
52 const Array4<const Real>& msk_arr = msk.array(mfi);
54 const Array4<const Real>& calc_arr = (!null_mf_calc) ? mf_calc.const_array(mfi) : Array4<const Real>();
55 const Array4<const Real>& msku_arr = (!null_mf_msku) ? mf_msku.const_array(mfi) : Array4<const Real>();
56 const Array4<const Real>& mskv_arr = (!null_mf_mskv) ? mf_mskv.const_array(mfi) : Array4<const Real>();
57 Box bx = mfi.validbox(); bx.grow(nghost);
58 Box valid_bx = mfi.validbox();
60 if (!gdomain.contains(bx)) {
62 msku_arr,mskv_arr,calc_arr,icomp,ncomp,time,bccomp,n_not_fill);
69 for (MFIter mfi(mf); mfi.isValid(); ++mfi)
71 Box bx = mfi.validbox(); bx.grow(nghost);
72 const Array4<const Real>& msk_arr = msk.array(mfi);
73 Array4<const Real> calc_arr = Array4<const Real>();
75 calc_arr = mf_calc.const_array(mfi);
77 if (!gdomain.contains(bx)) {
78 if(bx.ixType() == IndexType(IntVect(1,0,0))) {
79 const Array4<Real>& dest_arr = mf.array(mfi,icomp);
81 }
else if (bx.ixType() == IndexType(IntVect(0,1,0))) {
82 const Array4<Real>& dest_arr = mf.array(mfi,icomp);
84 }
else if (bx.ixType() == IndexType(IntVect(0,0,1))) {
85 const Array4<Real>& dest_arr = mf.array(mfi,icomp);
void impose_xvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, const amrex::Array4< const amrex::Real > &msku, const amrex::Array4< const amrex::Real > &calc_arr, amrex::Real time, int bccomp)
apply x-velocity type boundary conditions
void impose_cons_bcs(const amrex::Array4< amrex::Real > &mf, const amrex::Box &bx, const amrex::Box &valid_bx, const amrex::Box &domain, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, const amrex::Array4< const amrex::Real > &mskr, const amrex::Array4< const amrex::Real > &msku, const amrex::Array4< const amrex::Real > &mskv, const amrex::Array4< const amrex::Real > &calc_arr, int icomp, int ncomp, amrex::Real time, int bccomp, int n_not_fill)
apply scalar type boundary conditions
void impose_yvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, const amrex::Array4< const amrex::Real > &mskv, const amrex::Array4< const amrex::Real > &calc_arr, amrex::Real time, int bccomp)
apply y-velocity type boundary conditions
void impose_zvel_bcs(const amrex::Array4< amrex::Real > &dest_arr, const amrex::Box &bx, const amrex::Box &domain, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > dxInv, const amrex::Array4< const amrex::Real > &mskr, amrex::Real time, int bccomp)
apply z-velocity type boundary conditions
void operator()(amrex::MultiFab &mf, const amrex::MultiFab &mask, int icomp, int ncomp, amrex::IntVect const &nghost, amrex::Real time, int bccomp, int n_not_fill=0, const amrex::MultiFab &mf_calc=amrex::MultiFab(), const amrex::MultiFab &mf_msku=amrex::MultiFab(), const amrex::MultiFab &mf_mskv=amrex::MultiFab())
apply boundary condition to mf