2#ifndef AMREX_StateData_H_
3#define AMREX_StateData_H_
4#include <AMReX_Config.H>
24class StateDataPhysBCFunct;
191 BoxList* returnedUnfillableBoxes,
198 bool extrap =
false);
208 bool extrap =
false);
230 void FillBoundary (
Box const& bx,
248 const std::string& fullpathname,
251 bool dump_old =
true);
264 void restart (std::istream& is,
270 const std::string& chkfile);
309 m_factory.reset(a_factory.
clone());
317 new_time.stop : 0.5_rt*(new_time.start + new_time.stop);
325 old_time.stop : 0.5_rt*(old_time.start + old_time.stop);
380 bool hasOldData () const noexcept {
return old_data !=
nullptr; }
385 bool hasNewData () const noexcept {
return new_data !=
nullptr; }
413 std::unique_ptr<FabFactory<FArrayBox> > m_factory;
422 const StateDescriptor* desc{
nullptr};
430 DistributionMapping dmap;
433 TimeInterval new_time;
436 TimeInterval old_time;
439 std::unique_ptr<MultiFab> new_data;
442 std::unique_ptr<MultiFab> old_data;
445 Arena* arena{
nullptr};
451 static Vector<std::string> fabArrayHeaderNames;
454 static std::map<std::string, Vector<char> > *faHeaderMap;
456 void restartDoit (std::istream& is,
const std::string& chkfile);
466 Real time,
int bccomp);
469 Real time,
int bccomp) {
470 this->
operator()(mf,dest_comp,num_comp,nghost,time,bccomp);
#define BL_ASSERT(EX)
Definition AMReX_BLassert.H:39
A virtual base class for objects that manage their own dynamic memory allocation.
Definition AMReX_Arena.H:124
Boundary Condition Records. Necessary information and functions for computing boundary conditions.
Definition AMReX_BCRec.H:17
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:567
A class for managing a List of Boxes that share a common IndexType. This class implements operations ...
Definition AMReX_BoxList.H:52
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:43
A Fortran Array of REALs.
Definition AMReX_FArrayBox.H:231
Definition AMReX_FabFactory.H:50
virtual FabFactory< FAB > * clone() const =0
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
Definition AMReX_MFCopyDescriptor.H:46
A collection (stored as an array) of FArrayBox objects.
Definition AMReX_MultiFab.H:40
A Box with real dimensions.
Definition AMReX_RealBox.H:26
Definition AMReX_StateData.H:460
void FillBoundary(MultiFab &mf, int dest_comp, int num_comp, IntVect const &nghost, Real time, int bccomp)
Definition AMReX_StateData.H:468
void operator()(MultiFab &mf, int dest_comp, int num_comp, IntVect const &nghost, Real time, int bccomp)
Definition AMReX_StateData.cpp:870
Current and previous level-time data.
Definition AMReX_StateData.H:33
void removeOldData()
Deletes the space used by the old timestep data.
Definition AMReX_StateData.H:116
MultiFab & oldData() noexcept
Returns the old data.
Definition AMReX_StateData.H:341
void replaceNewData(MultiFab &&mf)
Swaps new data with a new MultiFab. Deletes the previous new data.
Definition AMReX_StateData.cpp:420
static void SetFAHeaderMapPtr(std::map< std::string, Vector< char > > *fahmp)
Definition AMReX_StateData.H:408
MultiFab & newData() noexcept
Returns the new data.
Definition AMReX_StateData.H:331
void setOldTimeLevel(Real time)
Sets time of old data.
Definition AMReX_StateData.cpp:327
void replaceOldData(MultiFab &&mf)
Swaps old data with a new MultiFab. Deletes the previous old data.
Definition AMReX_StateData.cpp:406
void copyOld(const StateData &state)
Copies old data from another StateData object and sets the same time level. If old data is uninitiali...
Definition AMReX_StateData.cpp:138
const FabFactory< FArrayBox > & Factory() const noexcept
Definition AMReX_StateData.H:306
const Box & getDomain() const noexcept
Returns the valid domain.
Definition AMReX_StateData.H:289
StateData & operator=(StateData const &rhs)
Definition AMReX_StateData.cpp:65
void restart(std::istream &is, const Box &p_domain, const BoxArray &grds, const DistributionMapping &dm, const FabFactory< FArrayBox > &factory, const StateDescriptor &d, const std::string &chkfile)
Restart with domain box, grids, and dmap provided.
Definition AMReX_StateData.cpp:178
~StateData()
The destructor.
Definition AMReX_StateData.cpp:302
Real curTime() const noexcept
Returns the current time.
Definition AMReX_StateData.H:315
void setFactory(FabFactory< FArrayBox > const &a_factory)
Definition AMReX_StateData.H:308
const MultiFab & oldData() const noexcept
Returns the old data.
Definition AMReX_StateData.H:346
FArrayBox & newGrid(int i) noexcept
Returns the FAB of new data at grid index āiā.
Definition AMReX_StateData.H:353
const StateDescriptor * descriptor() const noexcept
Returns the StateDescriptor.
Definition AMReX_StateData.H:284
void define(const Box &p_domain, const BoxArray &grds, const DistributionMapping &dm, const StateDescriptor &d, Real cur_time, Real dt, const FabFactory< FArrayBox > &factory)
Initializes data members if you used default constructor.
Definition AMReX_StateData.cpp:92
void InterpFillFab(MultiFabCopyDescriptor &fabCopyDesc, const Vector< MultiFabId > &mfid, const Vector< FillBoxId > &fillBoxIds, FArrayBox &dest, Real time, int src_comp, int dest_comp, int num_comp, bool extrap=false)
Definition AMReX_StateData.cpp:662
void syncNewTimeLevel(Real time)
Definition AMReX_StateData.cpp:353
Arena * getArena() const noexcept
Get the Arena used.
Definition AMReX_StateData.H:394
const BoxArray & boxArray() const noexcept
Returns the BoxArray.
Definition AMReX_StateData.H:294
void setDistributionMap(DistributionMapping &new_dmap) noexcept
Definition AMReX_StateData.H:304
static const Vector< std::string > & FabArrayHeaderNames()
These facilitate prereading FabArray headers to avoid synchronization when reading multiple FabArrays...
Definition AMReX_StateData.H:405
void getData(Vector< MultiFab * > &data, Vector< Real > &datatime, Real time) const
Definition AMReX_StateData.cpp:717
void checkPoint(const std::string &name, const std::string &fullpathname, std::ostream &os, VisMF::How how, bool dump_old=true)
Write the state data to a checkpoint file.
Definition AMReX_StateData.cpp:773
BCRec getBC(int comp, int i) const noexcept
Returns boundary conditions of specified component on the specified grid.
Definition AMReX_StateData.cpp:319
void setTimeLevel(Real time, Real dt_old, Real dt_new)
Sets time of old and new data.
Definition AMReX_StateData.cpp:370
StateData()
The default constructor.
Definition AMReX_StateData.cpp:31
void setNewTimeLevel(Real time)
Sets time of new data.
Definition AMReX_StateData.cpp:340
void RegisterData(MultiFabCopyDescriptor &multiFabCopyDesc, Vector< MultiFabId > &mfid)
Definition AMReX_StateData.cpp:579
StateData(StateData const &rhs)=delete
const DistributionMapping & DistributionMap() const noexcept
Definition AMReX_StateData.H:298
void printTimeInterval(std::ostream &os) const
Prints out the time interval.
Definition AMReX_StateData.cpp:849
Real prevTime() const noexcept
Returns the previous time.
Definition AMReX_StateData.H:323
const MultiFab & newData() const noexcept
Returns the new data.
Definition AMReX_StateData.H:336
void setBoxArray(BoxArray const &a_grids) noexcept
Definition AMReX_StateData.H:296
void allocOldData()
Allocates space for old timestep data.
Definition AMReX_StateData.cpp:308
void swapTimeLevels(Real dt)
Old data becomes new data and new time is incremented by dt.
Definition AMReX_StateData.cpp:389
void reset()
Reverts back to initial state.
Definition AMReX_StateData.cpp:170
static void ClearFabArrayHeaderNames()
Definition AMReX_StateData.H:406
void copyNew(const StateData &state)
Copies new data from another StateData object and sets the same time level. If new data is uninitiali...
Definition AMReX_StateData.cpp:154
void InterpAddBox(MultiFabCopyDescriptor &multiFabCopyDesc, Vector< MultiFabId > &mfid, BoxList *returnedUnfillableBoxes, Vector< FillBoxId > &returnedFillBoxIds, const Box &subbox, Real time, int src_comp, int dest_comp, int num_comp, bool extrap=false)
Definition AMReX_StateData.cpp:588
void setArena(Arena *ar) noexcept
Set the Arena used.
Definition AMReX_StateData.H:399
bool hasOldData() const noexcept
True if there is any old data available.
Definition AMReX_StateData.H:380
FArrayBox & oldGrid(int i) noexcept
Returns the FAB of old data at grid index āiā.
Definition AMReX_StateData.H:360
bool hasNewData() const noexcept
True if there is any new data available.
Definition AMReX_StateData.H:385
Attributes of StateData.
Definition AMReX_StateDescriptor.H:33
StateDescriptor::TimeCenter timeType() const noexcept
Returns StateDescriptor::TimeCenter.
Definition AMReX_StateDescriptor.cpp:233
@ Point
Definition AMReX_StateDescriptor.H:39
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
How
How we write out FabArray<FArrayBox>s. These are deprecated, we always use NFiles....
Definition AMReX_VisMF.H:42
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
Definition AMReX_Amr.cpp:49
BoxND< 3 > Box
Box is an alias for amrex::BoxND instantiated with AMREX_SPACEDIM.
Definition AMReX_BaseFwd.H:30