1 #ifndef ERF_FILLPATCHER_H_
2 #define ERF_FILLPATCHER_H_
4 #include <AMReX_FillPatchUtil.H>
5 #include <AMReX_Interp_C.H>
6 #include <AMReX_MFInterp_C.H>
26 ERFFillPatcher (amrex::BoxArray
const& fba, amrex::DistributionMapping
const& fdm,
27 amrex::Geometry
const& fgeom,
28 amrex::BoxArray
const& cba, amrex::DistributionMapping
const& cdm,
29 amrex::Geometry
const& cgeom,
30 int nghost,
int nghost_set,
int ncomp, amrex::InterpBase* interp);
46 void Define (amrex::BoxArray
const& fba, amrex::DistributionMapping
const& fdm,
47 amrex::Geometry
const& fgeom,
48 amrex::BoxArray
const& cba, amrex::DistributionMapping
const& cdm,
49 amrex::Geometry
const& cgeom,
50 int nghost,
int nghost_set,
int ncomp,
51 amrex::InterpBase* interp);
60 void BuildMask (amrex::BoxArray
const& fba,
int nghost,
int nghost_set);
69 amrex::Vector<double>
const& crse_time);
79 amrex::MultiFab
const& crse,
91 amrex::MultiFab
const& crse,
92 amrex::Vector<amrex::BCRec>
const& bcr,
134 template <
typename BC>
135 void FillSet (amrex::MultiFab& mf,
double time,
136 BC& cbc, amrex::Vector<amrex::BCRec>
const& bcs);
149 template <
typename BC>
150 void FillRelax (amrex::MultiFab& mf,
double time,
151 BC& cbc, amrex::Vector<amrex::BCRec>
const& bcs);
162 template <
typename BC>
163 void Fill (amrex::MultiFab& mf,
double time,
164 BC& cbc, amrex::Vector<amrex::BCRec>
const& bcs,
int mask_val);
202 template <
typename BC>
205 BC& cbc, amrex::Vector<amrex::BCRec>
const& bcs)
218 template <
typename BC>
221 BC& cbc, amrex::Vector<amrex::BCRec>
const& bcs)
235 template <
typename BC>
238 BC& cbc, amrex::Vector<amrex::BCRec>
const& bcs,
int mask_val)
260 amrex::MultiFab::LinComb(crse_data_time_interp,
263 0,
m_ncomp, amrex::IntVect{0});
269 cbc(crse_data_time_interp, 0,
m_ncomp, amrex::IntVect(0), time, 0);
272 amrex::IndexType m_ixt = mf.boxArray().ixType();
273 int ixt_sum = m_ixt[0]+m_ixt[1]+m_ixt[2];
275 InterpCell(mf,crse_data_time_interp,bcs,mask_val);
276 }
else if (ixt_sum == 1) {
277 InterpFace(mf,crse_data_time_interp,mask_val);
279 amrex::Abort(
"ERF_FillPatcher only supports face linear and cell cons linear interp!");
Real z0
Definition: ERF_InitCustomPertVels_ScalarAdvDiff.H:12
AMREX_ALWAYS_ASSERT(bx.length()[2]==khi+1)
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_FillPatcher.H:9
amrex::Geometry m_fgeom
Definition: ERF_FillPatcher.H:175
void Fill(amrex::MultiFab &mf, double time, BC &cbc, amrex::Vector< amrex::BCRec > const &bcs, int mask_val)
Definition: ERF_FillPatcher.H:237
void RegisterCoarseData(amrex::Vector< amrex::MultiFab const * > const &crse_data, amrex::Vector< double > const &crse_time)
Definition: ERF_FillPatcher.cpp:316
amrex::BoxArray m_fba
Definition: ERF_FillPatcher.H:171
amrex::iMultiFab * GetMask()
Definition: ERF_FillPatcher.H:124
amrex::InterpBase * m_interp
Definition: ERF_FillPatcher.H:180
amrex::BoxArray m_cba
Definition: ERF_FillPatcher.H:172
bool m_loglaw
Definition: ERF_FillPatcher.H:185
void Define(amrex::BoxArray const &fba, amrex::DistributionMapping const &fdm, amrex::Geometry const &fgeom, amrex::BoxArray const &cba, amrex::DistributionMapping const &cdm, amrex::Geometry const &cgeom, int nghost, int nghost_set, int ncomp, amrex::InterpBase *interp)
Definition: ERF_FillPatcher.cpp:108
ERFFillPatcher(amrex::BoxArray const &fba, amrex::DistributionMapping const &fdm, amrex::Geometry const &fgeom, amrex::BoxArray const &cba, amrex::DistributionMapping const &cdm, amrex::Geometry const &cgeom, int nghost, int nghost_set, int ncomp, amrex::InterpBase *interp)
Definition: ERF_FillPatcher.cpp:71
amrex::MultiFab const * m_loglaw_tblank
Definition: ERF_FillPatcher.H:187
amrex::DistributionMapping m_cdm
Definition: ERF_FillPatcher.H:174
amrex::Vector< double > const & crse_times() const
The times of the coarse data last registered (RegisterCoarseData)
Definition: ERF_FillPatcher.H:167
amrex::Geometry m_cgeom
Definition: ERF_FillPatcher.H:176
int m_ncomp
Definition: ERF_FillPatcher.H:179
void InterpFace(amrex::MultiFab &fine, amrex::MultiFab const &crse, int mask_val)
Definition: ERF_FillPatcher.cpp:348
int m_nghost_subset
Definition: ERF_FillPatcher.H:178
void FillRelax(amrex::MultiFab &mf, double time, BC &cbc, amrex::Vector< amrex::BCRec > const &bcs)
Definition: ERF_FillPatcher.H:220
std::unique_ptr< amrex::iMultiFab > m_cf_mask
Definition: ERF_FillPatcher.H:184
std::unique_ptr< amrex::MultiFab > m_cf_crse_data_new
Definition: ERF_FillPatcher.H:183
void SetLogLawFill(bool on, amrex::Real z0, amrex::MultiFab const *wall_tblank)
Definition: ERF_FillPatcher.H:111
int m_set_mask
Definition: ERF_FillPatcher.H:190
amrex::Vector< double > m_crse_times
Definition: ERF_FillPatcher.H:188
int GetSetMaskVal()
Definition: ERF_FillPatcher.H:98
void InterpCell(amrex::MultiFab &fine, amrex::MultiFab const &crse, amrex::Vector< amrex::BCRec > const &bcr, int mask_val)
Definition: ERF_FillPatcher.cpp:544
amrex::Real m_loglaw_z0
Definition: ERF_FillPatcher.H:186
amrex::IntVect m_ratio
Definition: ERF_FillPatcher.H:181
int m_relax_mask
Definition: ERF_FillPatcher.H:191
void BuildMask(amrex::BoxArray const &fba, int nghost, int nghost_set)
Definition: ERF_FillPatcher.cpp:181
void FillSet(amrex::MultiFab &mf, double time, BC &cbc, amrex::Vector< amrex::BCRec > const &bcs)
Definition: ERF_FillPatcher.H:204
double m_dt_crse
Definition: ERF_FillPatcher.H:189
std::unique_ptr< amrex::MultiFab > m_cf_crse_data_old
Definition: ERF_FillPatcher.H:182
int GetRelaxMaskVal()
Definition: ERF_FillPatcher.H:119
int m_nghost
Definition: ERF_FillPatcher.H:177
amrex::DistributionMapping m_fdm
Definition: ERF_FillPatcher.H:173
real(c_double), parameter epsilon
Definition: ERF_module_model_constants.F90:12