1#ifndef AMREX_FillPatchUtil_H_
2#define AMREX_FillPatchUtil_H_
3#include <AMReX_Config.H>
37 template <
typename MFFAB>
66 template <
typename Interp>
68 const IndexType& boxType, Interp* mapper);
93 template <FabArrayType MF,
typename BC>
96 const Vector<MF*>& smf,
const Vector<Real>& stime,
97 int scomp,
int dcomp,
int ncomp,
99 BC& physbcf,
int bcfcomp);
124 template <FabArrayType MF,
typename BC>
127 const Vector<MF*>& smf,
const Vector<Real>& stime,
128 int scomp,
int dcomp,
int ncomp,
129 const Geometry& geom,
130 BC& physbcf,
int bcfcomp);
170 template <FabArrayType MF,
typename BC,
typename Interp,
171 typename PreInterpHook=NullInterpHook<typename MF::FABType::value_type>,
172 typename PostInterpHook=NullInterpHook<typename MF::FABType::value_type> >
175 const Vector<MF*>& cmf,
const Vector<Real>& ct,
176 const Vector<MF*>& fmf,
const Vector<Real>& ft,
177 int scomp,
int dcomp,
int ncomp,
178 const Geometry& cgeom,
const Geometry& fgeom,
179 BC& cbc,
int cbccomp,
180 BC& fbc,
int fbccomp,
183 const Vector<BCRec>& bcs,
int bcscomp,
184 const PreInterpHook& pre_interp = {},
185 const PostInterpHook& post_interp = {});
224 template <
FabArrayType MF,
typename BC,
typename Interp,
231 int scomp,
int dcomp,
int ncomp,
233 BC& cbc,
int cbccomp,
234 BC& fbc,
int fbccomp,
238 const PreInterpHook& pre_interp = {},
239 const PostInterpHook& post_interp = {});
282 template <
FabArrayType MF,
typename BC,
typename Interp,
289 int scomp,
int dcomp,
int ncomp,
296 const PreInterpHook& pre_interp = {},
297 const PostInterpHook& post_interp = {});
340 template <
FabArrayType MF,
typename BC,
typename Interp,
347 int scomp,
int dcomp,
int ncomp,
354 const PreInterpHook& pre_interp = {},
355 const PostInterpHook& post_interp = {});
397 template <
FabArrayType MF,
typename BC,
typename Interp,
404 int scomp,
int dcomp,
int ncomp,
411 const PreInterpHook& pre_interp = {},
412 const PostInterpHook& post_interp = {});
454 template <FabArrayType MF,
typename BC,
typename Interp,
typename PreInterpHook,
typename PostInterpHook>
460 int scomp,
int dcomp,
int ncomp,
462 BC& cbc,
int cbccomp,
463 BC& fbc,
int fbccomp,
467 const PreInterpHook& pre_interp,
468 const PostInterpHook& post_interp);
508 template <FabArrayType MF,
typename BC,
typename Interp,
typename PreInterpHook,
typename PostInterpHook>
514 int scomp,
int dcomp,
int ncomp,
516 BC& cbc,
int cbccomp,
517 BC& fbc,
int fbccomp,
521 const PreInterpHook& pre_interp,
522 const PostInterpHook& post_interp);
555 template <
FabArrayType MF,
typename BC,
typename Interp,
560 const MF& cmf,
int scomp,
int dcomp,
int ncomp,
562 BC& cbc,
int cbccomp,
563 BC& fbc,
int fbccomp,
567 const PreInterpHook& pre_interp = {},
568 const PostInterpHook& post_interp = {});
599 template <
FabArrayType MF,
typename BC,
typename Interp,
604 const MF& cmf,
int scomp,
int dcomp,
int ncomp,
606 BC& cbc,
int cbccomp,
607 BC& fbc,
int fbccomp,
611 const PreInterpHook& pre_interp = {},
612 const PostInterpHook& post_interp = {});
644 template <
FabArrayType MF,
typename BC,
typename Interp,
650 const MF& cmf,
int scomp,
int dcomp,
int ncomp,
652 BC& cbc,
int cbccomp,
653 BC& fbc,
int fbccomp,
657 const PreInterpHook& pre_interp = {},
658 const PostInterpHook& post_interp = {});
690 template <
FabArrayType MF,
typename BC,
typename Interp,
702 const PreInterpHook& pre_interp = {},
703 const PostInterpHook& post_interp = {});
736 template <
FabArrayType MF,
typename BC,
typename Interp,
748 const PreInterpHook& pre_interp = {},
749 const PostInterpHook& post_interp = {});
777 template <FabArrayType MF,
typename Interp>
780 IntVect const& nghost_outside_domain,
781 const MF& cmf,
int scomp,
int dcomp,
int ncomp,
783 const IntVect& ratio, Interp* mapper,
808 template <FabArrayType MF>
812 const Vector<Real>& stime,
int scomp,
int dcomp,
int ncomp,
845 template <FabArrayType MF,
typename Interp>
851 int scomp,
int dcomp,
int ncomp,
853 const IntVect& ratio, Interp* mapper,
862 const Geometry& cgeom,
const Geometry& fgeom,
868 const Geometry& cgeom,
const Geometry& fgeom,
910 template <FabArrayType MF,
typename BC,
typename Interp>
913 const Vector<Vector<MF*>>& smf,
const Vector<Vector<Real>>& st,
914 int scomp,
int dcomp,
int ncomp,
915 const Vector<Geometry>& geom,
916 Vector<BC>& bc,
int bccomp,
917 const Vector<IntVect>& ratio,
919 const Vector<BCRec>& bcr,
int bcrcomp);
Fixed-size array types for use on GPU and CPU.
Problem-domain geometry: maps between index space and physical space.
Collection of spatial interpolaters used by FillPatch and flux-register logic.
Interpolaters that operate directly on MultiFabs (cell-centered or nodal).
Definition AMReX_EB2.H:28
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:87
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:29
Checks if a type is derived from amrex::BaseFab.
Definition AMReX_Concepts.H:13
Checks if a type is an amrex::FabArray.
Definition AMReX_Concepts.H:19
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:80
std::array< T, N > Array
Definition AMReX_Array.H:31
Definition AMReX_Amr.cpp:50
InterpEM_t
Definition AMReX_FillPatchUtil.H:857
@ InterpB
Definition AMReX_FillPatchUtil.H:857
@ InterpE
Definition AMReX_FillPatchUtil.H:857
bool ProperlyNested(const IntVect &ratio, const IntVect &blocking_factor, int ngrow, const IndexType &boxType, Interp *mapper)
Test if AMR grids are properly nested.
Definition AMReX_FillPatchUtil_I.H:35
BoxND< 3 > Box
Box is an alias for amrex::BoxND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:35
void InterpCrseFineBndryEMfield(InterpEM_t interp_type, const Array< MultiFab, 3 > &crse, Array< MultiFab, 3 > &fine, const Geometry &cgeom, const Geometry &fgeom, int ref_ratio)
Definition AMReX_FillPatchUtil.cpp:11
void FillPatchSingleLevel(MF &mf, IntVect const &nghost, Real time, const Vector< MF * > &smf, const Vector< Real > &stime, int scomp, int dcomp, int ncomp, const Geometry &geom, BC &physbcf, int bcfcomp)
FillPatch with data from the current level.
Definition AMReX_FillPatchUtil_I.H:75
IndexTypeND< 3 > IndexType
IndexType is an alias for amrex::IndexTypeND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:41
void InterpFromCoarseLevel(MF &mf, Real time, const MF &cmf, int scomp, int dcomp, int ncomp, const Geometry &cgeom, const Geometry &fgeom, BC &cbc, int cbccomp, BC &fbc, int fbccomp, const IntVect &ratio, Interp *mapper, const Vector< BCRec > &bcs, int bcscomp, const PreInterpHook &pre_interp={}, const PostInterpHook &post_interp={})
Fill with interpolation of coarse level data.
Definition AMReX_FillPatchUtil_I.H:1022
IntVectND< 3 > IntVect
IntVect is an alias for amrex::IntVectND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:38
void FillPatchTwoLevels(MF &mf, IntVect const &nghost, Real time, const Vector< MF * > &cmf, const Vector< Real > &ct, const Vector< MF * > &fmf, const Vector< Real > &ft, int scomp, int dcomp, int ncomp, const Geometry &cgeom, const Geometry &fgeom, BC &cbc, int cbccomp, BC &fbc, int fbccomp, const IntVect &ratio, Interp *mapper, const Vector< BCRec > &bcs, int bcscomp, const PreInterpHook &pre_interp={}, const PostInterpHook &post_interp={})
FillPatch with data from the current level and the level below.
Definition AMReX_FillPatchUtil_I.H:834
void FillPatchNLevels(MF &mf, int level, const IntVect &nghost, Real time, const Vector< Vector< MF * > > &smf, const Vector< Vector< Real > > &st, int scomp, int dcomp, int ncomp, const Vector< Geometry > &geom, Vector< BC > &bc, int bccomp, const Vector< IntVect > &ratio, Interp *mapper, const Vector< BCRec > &bcr, int bcrcomp)
FillPatch with data from AMR levels.
Definition AMReX_FillPatchUtil_I.H:1382
Definition AMReX_FillPatchUtil.H:39
void operator()(MFFAB &, const Box &, int, int) const
Definition AMReX_FillPatchUtil.H:40
void operator()(Array< MFFAB *, 3 >, const Box &, int, int) const
Definition AMReX_FillPatchUtil.H:44
void operator()(MFFAB &, int, int) const
Definition AMReX_FillPatchUtil.H:48