Block-Structured AMR Software Framework
AMReX_FillPatchUtil.H File Reference
#include <AMReX_Config.H>
#include <AMReX_MultiFab.H>
#include <AMReX_iMultiFab.H>
#include <AMReX_Geometry.H>
#include <AMReX_PhysBCFunct.H>
#include <AMReX_Interpolater.H>
#include <AMReX_MFInterpolater.H>
#include <AMReX_Array.H>
#include <AMReX_Utility.H>
#include <cmath>
#include <limits>
#include <map>
#include <AMReX_FillPatchUtil_I.H>

Go to the source code of this file.

Classes

struct  amrex::NullInterpHook< MFFAB >
 

Namespaces

 amrex
 

Enumerations

enum  amrex::InterpEM_t { amrex::InterpE , amrex::InterpB }
 

Functions

template<typename Interp >
bool amrex::ProperlyNested (const IntVect &ratio, const IntVect &blocking_factor, int ngrow, const IndexType &boxType, Interp *mapper)
 Test if AMR grids are properly nested. More...
 
template<typename MF , typename BC >
std::enable_if_t< IsFabArray< MF >::value > amrex::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. More...
 
template<typename MF , typename BC >
std::enable_if_t< IsFabArray< MF >::value > amrex::FillPatchSingleLevel (MF &mf, 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. More...
 
template<typename MF , typename BC , typename Interp , typename PreInterpHook = NullInterpHook<typename MF::FABType::value_type>, typename PostInterpHook = NullInterpHook<typename MF::FABType::value_type>>
std::enable_if_t< IsFabArray< MF >::value > amrex::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. More...
 
template<typename MF , typename BC , typename Interp , typename PreInterpHook = NullInterpHook<typename MF::FABType::value_type>, typename PostInterpHook = NullInterpHook<typename MF::FABType::value_type>>
std::enable_if_t< IsFabArray< MF >::value > amrex::FillPatchTwoLevels (MF &mf, 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. More...
 
template<typename MF , typename BC , typename Interp , typename PreInterpHook = NullInterpHook<typename MF::FABType::value_type>, typename PostInterpHook = NullInterpHook<typename MF::FABType::value_type>>
std::enable_if_t< IsFabArray< MF >::value > amrex::FillPatchTwoLevels (Array< MF *, AMREX_SPACEDIM > const &mf, IntVect const &nghost, Real time, const Vector< Array< MF *, AMREX_SPACEDIM > > &cmf, const Vector< Real > &ct, const Vector< Array< MF *, AMREX_SPACEDIM > > &fmf, const Vector< Real > &ft, int scomp, int dcomp, int ncomp, const Geometry &cgeom, const Geometry &fgeom, Array< BC, AMREX_SPACEDIM > &cbc, const Array< int, AMREX_SPACEDIM > &cbccomp, Array< BC, AMREX_SPACEDIM > &fbc, const Array< int, AMREX_SPACEDIM > &fbccomp, const IntVect &ratio, Interp *mapper, const Array< Vector< BCRec >, AMREX_SPACEDIM > &bcs, const Array< int, AMREX_SPACEDIM > &bcscomp, const PreInterpHook &pre_interp={}, const PostInterpHook &post_interp={})
 FillPatch for face variables with data from the current level and the level below. Sometimes, we need to fillpatch all AMREX_SPACEDIM face MultiFabs togother to satisfy certain constraint such as divergence preserving. More...
 
template<typename MF , typename BC , typename Interp , typename PreInterpHook = NullInterpHook<typename MF::FABType::value_type>, typename PostInterpHook = NullInterpHook<typename MF::FABType::value_type>>
std::enable_if_t< IsFabArray< MF >::value > amrex::FillPatchTwoLevels (Array< MF *, AMREX_SPACEDIM > const &mf, IntVect const &nghost, Real time, const Vector< Array< MF *, AMREX_SPACEDIM > > &cmf, const Vector< Real > &ct, const Vector< Array< MF *, AMREX_SPACEDIM > > &fmf, const Vector< Real > &ft, int scomp, int dcomp, int ncomp, const Geometry &cgeom, const Geometry &fgeom, Array< BC, AMREX_SPACEDIM > &cbc, int cbccomp, Array< BC, AMREX_SPACEDIM > &fbc, int fbccomp, const IntVect &ratio, Interp *mapper, const Array< Vector< BCRec >, AMREX_SPACEDIM > &bcs, int bcscomp, const PreInterpHook &pre_interp={}, const PostInterpHook &post_interp={})
 FillPatch for face variables with data from the current level and the level below. Sometimes, we need to fillpatch all AMREX_SPACEDIM face MultiFabs togother to satisfy certain constraint such as divergence preserving. More...
 
template<typename MF , typename BC , typename Interp , typename PreInterpHook = NullInterpHook<typename MF::FABType::value_type>, typename PostInterpHook = NullInterpHook<typename MF::FABType::value_type>>
std::enable_if_t< IsFabArray< MF >::value > amrex::FillPatchTwoLevels (Array< MF *, AMREX_SPACEDIM > const &mf, Real time, const Vector< Array< MF *, AMREX_SPACEDIM > > &cmf, const Vector< Real > &ct, const Vector< Array< MF *, AMREX_SPACEDIM > > &fmf, const Vector< Real > &ft, int scomp, int dcomp, int ncomp, const Geometry &cgeom, const Geometry &fgeom, Array< BC, AMREX_SPACEDIM > &cbc, int cbccomp, Array< BC, AMREX_SPACEDIM > &fbc, int fbccomp, const IntVect &ratio, Interp *mapper, const Array< Vector< BCRec >, AMREX_SPACEDIM > &bcs, int bcscomp, const PreInterpHook &pre_interp={}, const PostInterpHook &post_interp={})
 FillPatch for face variables with data from the current level and the level below. Sometimes, we need to fillpatch all AMREX_SPACEDIM face MultiFabs togother to satisfy certain constraint such as divergence preserving. More...
 
template<typename MF , typename BC , typename Interp , typename PreInterpHook = NullInterpHook<typename MF::FABType::value_type>, typename PostInterpHook = NullInterpHook<typename MF::FABType::value_type>>
std::enable_if_t< IsFabArray< MF >::value > amrex::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. More...
 
template<typename MF , typename BC , typename Interp , typename PreInterpHook = NullInterpHook<typename MF::FABType::value_type>, typename PostInterpHook = NullInterpHook<typename MF::FABType::value_type>>
std::enable_if_t< IsFabArray< MF >::value > amrex::InterpFromCoarseLevel (MF &mf, IntVect const &nghost, 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. More...
 
template<typename MF , typename BC , typename Interp , typename PreInterpHook = NullInterpHook<typename MF::FABType::value_type>, typename PostInterpHook = NullInterpHook<typename MF::FABType::value_type>>
std::enable_if_t< IsFabArray< MF >::value > amrex::InterpFromCoarseLevel (Array< MF *, AMREX_SPACEDIM > const &mf, Real time, const Array< MF *, AMREX_SPACEDIM > &cmf, int scomp, int dcomp, int ncomp, const Geometry &cgeom, const Geometry &fgeom, Array< BC, AMREX_SPACEDIM > &cbc, int cbccomp, Array< BC, AMREX_SPACEDIM > &fbc, int fbccomp, const IntVect &ratio, Interp *mapper, const Array< Vector< BCRec >, AMREX_SPACEDIM > &bcs, int bcscomp, const PreInterpHook &pre_interp={}, const PostInterpHook &post_interp={})
 Fill face variables with data from the coarse level. Sometimes, we need to fillpatch all AMREX_SPACEDIM face MultiFabs togother to satisfy certain constraint such as divergence preserving. More...
 
template<typename MF , typename BC , typename Interp , typename PreInterpHook = NullInterpHook<typename MF::FABType::value_type>, typename PostInterpHook = NullInterpHook<typename MF::FABType::value_type>>
std::enable_if_t< IsFabArray< MF >::value > amrex::InterpFromCoarseLevel (Array< MF *, AMREX_SPACEDIM > const &mf, IntVect const &nghost, Real time, const Array< MF *, AMREX_SPACEDIM > &cmf, int scomp, int dcomp, int ncomp, const Geometry &cgeom, const Geometry &fgeom, Array< BC, AMREX_SPACEDIM > &cbc, int cbccomp, Array< BC, AMREX_SPACEDIM > &fbc, int fbccomp, const IntVect &ratio, Interp *mapper, const Array< Vector< BCRec >, AMREX_SPACEDIM > &bcs, int bcscomp, const PreInterpHook &pre_interp={}, const PostInterpHook &post_interp={})
 Fill face variables with data from the coarse level. Sometimes, we need to fillpatch all AMREX_SPACEDIM face MultiFabs togother to satisfy certain constraint such as divergence preserving. More...
 
template<typename MF , typename Interp >
std::enable_if_t< IsFabArray< MF >::value > amrex::InterpFromCoarseLevel (MF &mf, IntVect const &nghost, IntVect const &nghost_outside_domain, const MF &cmf, int scomp, int dcomp, int ncomp, const Geometry &cgeom, const Geometry &fgeom, const IntVect &ratio, Interp *mapper, const Vector< BCRec > &bcs, int bcscomp)
 Fill with interpolation of coarse level data. More...
 
template<typename MF >
std::enable_if_t< IsFabArray< MF >::value > amrex::FillPatchSingleLevel (MF &mf, IntVect const &nghost, Real time, const Vector< MF * > &smf, IntVect const &snghost, const Vector< Real > &stime, int scomp, int dcomp, int ncomp, const Geometry &geom)
 FillPatch with data from the current level. More...
 
template<typename MF , typename Interp >
std::enable_if_t< IsFabArray< MF >::value > amrex::FillPatchTwoLevels (MF &mf, IntVect const &nghost, IntVect const &nghost_outside_domain, 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, const IntVect &ratio, Interp *mapper, const Vector< BCRec > &bcs, int bcscomp)
 FillPatch with data from the current level and the level below. More...
 
void amrex::InterpCrseFineBndryEMfield (InterpEM_t interp_type, const Array< MultiFab, AMREX_SPACEDIM > &crse, Array< MultiFab, AMREX_SPACEDIM > &fine, const Geometry &cgeom, const Geometry &fgeom, int ref_ratio)
 
void amrex::InterpCrseFineBndryEMfield (InterpEM_t interp_type, const Array< MultiFab const *, AMREX_SPACEDIM > &crse, const Array< MultiFab *, AMREX_SPACEDIM > &fine, const Geometry &cgeom, const Geometry &fgeom, int ref_ratio)
 
template<typename MF , typename BC , typename Interp >
std::enable_if_t< IsFabArray< MF >::value > amrex::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. More...