4#include <AMReX_Config.H>
48 explicit VisMF (std::string fafab_name);
124 FabReadLink(
int ranktoread,
int faindex, Long fileoffset,
const Box &
b);
148 static std::ifstream *
OpenStream(
const std::string &fileName);
149 static void CloseStream(
const std::string &fileName,
bool forceClose =
false);
155 [[nodiscard]]
int nComp ()
const;
157 [[nodiscard]]
int nGrow ()
const;
160 [[nodiscard]]
int size ()
const;
164 [[nodiscard]] Real
min (
int fabIndex,
int nComp)
const;
166 [[nodiscard]] Real
min (
int nComp)
const;
168 [[nodiscard]] Real
max (
int fabIndex,
int nComp)
const;
170 [[nodiscard]] Real
max (
int nComp)
const;
177 [[nodiscard]]
const FArrayBox&
GetFab (
int fabIndex,
int compIndex)
const;
179 void clear (
int fabIndex,
int compIndex);
181 void clear (
int fabIndex);
192 const std::string& name,
194 bool set_ghost =
false);
197 bool valid_cells_only =
false);
199 bool valid_cells_only =
false);
209 const std::string & mf_name,
224 const std::string &name,
225 const char *faHeader =
nullptr,
227 int allow_empty_mf = 0);
230 static bool Exist (
const std::string &name);
237 static bool Check (
const std::string &name);
288 static std::string
DirName (
const std::string& filename);
289 static std::string
BaseName (
const std::string& filename);
296 const std::string& filename,
303 static Long
WriteHeader (
const std::string &mf_name,
310 const std::string &filePrefix,
323 const std::string &mf_name,
329 const std::string &mf_name,
333 bool is_rvalue,
bool valid_cells_only);
388template <
typename FAB>
390std::enable_if_t<std::is_same_v<FAB,IArrayBox>>
396 auto data_descriptor = FAB::getDataDescriptor();
397 int data_bytes = data_descriptor->numBytes();
399 bool useSparseFPP =
false;
401 std::set<int> procsWithData;
404 procsWithData.insert(i);
407 if (
static_cast<int>(procsWithData.size()) < nOutFiles) {
409 for (
auto i : procsWithData) {
410 procsWithDataVector.push_back(i);
414 std::string filePrefix = name +
"_D_";
424 const auto &fio = FAB::getFABio();
428 const FAB &fab = fa[mfi];
430 std::stringstream hss;
431 fio.write_header(hss, fab, fab.nComp());
432 auto hLength =
static_cast<std::streamoff
>(hss.tellp());
433 auto tstr = hss.str();
434 nfi.
Stream().write(tstr.c_str(), hLength);
437 auto const* fabdata = fab.dataPtr();
439 std::unique_ptr<FAB> hostfab;
440 if (fab.arena()->isManaged() || fab.arena()->isDevice()) {
441 hostfab = std::make_unique<FAB>(fab.box(), fab.nComp(),
The_Pinned_Arena());
443 fab.size()*
sizeof(
typename FAB::value_type));
445 fabdata = hostfab->dataPtr();
448 Long writeDataItems = fab.box().numPts() * fa.
nComp();
449 Long writeDataSize = writeDataItems * data_bytes;
450 nfi.
Stream().write((
char *) fabdata, writeDataSize);
461 std::string header_file_name = name +
"_H";
464 ofs.rdbuf()->pubsetbuf(io_buffer.
dataPtr(), io_buffer.
size());
465 ofs.open(header_file_name.c_str(), std::ios::out | std::ios::trunc);
470 ofs <<
"amrex::FabArray<" << FAB::getClassName() <<
"> v1.0\n";
471 ofs << fa.
nComp() <<
'\n';
482 std::map<int, Vector<int> > rankBoxOrder;
483 for (
int i = 0; i < nfabs; ++i) {
484 std::stringstream hss;
486 fio.write_header(hss, tmp, tmp.nComp());
488 fabBytes[i] =
static_cast<std::streamoff
>(hss.tellp()) + tmp.
size() * data_bytes;
489 rankBoxOrder[dm[i]].push_back(i);
497 fileNumbers.resize(nprocs);
498 std::iota(fileNumbers.begin(), fileNumbers.end(), 0);
500 fileNumbers.resize(nprocs);
501 for (
int i = 0; i < nprocs; ++i) {
509 for (
auto const& rv : fileNumbersWriteOrder) {
510 Long currentOffset = 0;
511 for (
auto rank : rv) {
512 auto rbo_it = rankBoxOrder.find(rank);
513 if (rbo_it != rankBoxOrder.end()) {
515 int whichFileNumber = fileNumbers[rank];
516 std::string
const& whichFileName =
518 for (
int i : index) {
519 fod[i].m_name = whichFileName;
520 fod[i].m_head = currentOffset;
521 currentOffset += fabBytes[i];
531template <
typename FAB>
538 ifs.rdbuf()->pubsetbuf(io_buffer.
dataPtr(), io_buffer.
size());
539 ifs.open(fullname.c_str(), std::ios::in | std::ios::binary);
543 ifs.seekg(fod.
m_head, std::ios::beg);
565template <
typename FAB>
567std::enable_if_t<std::is_same_v<FAB,IArrayBox>>
578 std::string header_file_name = name +
"_H";
581 std::string header_file_string(header_file_chars.data());
582 std::stringstream ifs(header_file_string, std::istringstream::in);
584 std::string type, version;
585 ifs >> type >> version;
586 AMREX_ASSERT(type ==
"amrex::FabArray<amrex::IArrayBox>" ||
587 type ==
"amrex::FabArray<amrex::FArrayBox>");
606 int allreadsindex = 0;
607 std::map<std::string, int> filenames;
609 const int nboxes = fa.
size();
611 for (
int i = 0; i < nboxes; ++i) {
612 if (myproc == dm[i]) {
615 if (myproc == coordproc) {
616 std::string
const& fname = fod[i].m_name;
617 auto r =filenames.insert(std::make_pair(fname, allreadsindex));
627 if (myproc == coordproc) {
628 std::multiset<int> availablefiles;
631 const auto nfiles =
static_cast<int>(filenames.size());
632 for (
int i = 0; i < nfiles; ++i) {
633 for (
int j = 0; j < nopensperfile; ++j) {
634 availablefiles.insert(i);
637 allreads.resize(nfiles);
638 for (
int i = 0; i < nboxes; ++i) {
639 const auto whichproc = dm[i];
640 const auto iseekpos = fod[i].m_head;
641 std::string
const& fname = fod[i].m_name;
642 auto filenamesiter = filenames.find(fname);
643 if (filenamesiter != filenames.end()) {
644 const int fi = filenamesiter->second;
645 allreads[fi][whichproc].insert(std::make_pair(iseekpos,i));
647 amrex::Error(
"Error in amrex::Read: filename not found "+fname);
651 int totalioreqs = nboxes;
654 std::deque<int> iopreads;
655 std::set<int> busyprocs;
656 while (totalioreqs > 0) {
657 auto afilesiter = availablefiles.begin();
658 while (afilesiter != availablefiles.end()) {
659 const int fi = *afilesiter;
660 if (allreads[fi].empty()) {
661 availablefiles.erase(fi);
662 afilesiter = availablefiles.begin();
665 auto whichread = allreads[fi].begin();
666 for ( ; whichread != allreads[fi].end(); ++whichread) {
667 const int tryproc = whichread->first;
668 if (busyprocs.find(tryproc) == busyprocs.end()) {
669 busyprocs.insert(tryproc);
671 vreads.reserve(whichread->second.size());
672 for (
auto const& kv : whichread->second) {
673 vreads.push_back(kv.second);
675 if (tryproc == coordproc) {
677 for (
auto x : vreads) {
678 iopreads.push_back(
x);
684 availablefiles.erase(afilesiter);
685 afilesiter = availablefiles.begin();
689 if (whichread == allreads[fi].
end()) {
692 allreads[fi].erase(whichread);
696 while (!iopreads.empty()) {
697 int i = iopreads.front();
700 iopreads.pop_front();
701 if (iopreads.empty()) {
702 availablefiles.insert(iopfileindex);
703 busyprocs.erase(coordproc);
713 if (reqspending > 0) {
717 const int i = idone[0];
718 const int procdone = rmess.
pid();
719 totalioreqs -= idone[1];
721 busyprocs.erase(procdone);
722 std::string
const& fname = fod[i].m_name;
723 const int fi = filenames.find(fname)->second;
724 availablefiles.insert(fi);
733 const auto nrmess =
static_cast<int>(rmess.
count());
734 for (
int ir = 0; ir < nrmess; ++ir) {
735 int i = recreads[ir];
739 idone[0] = recreads[0];
#define BL_PROFILE(a)
Definition AMReX_BLProfiler.H:551
#define AMREX_ASSERT(EX)
Definition AMReX_BLassert.H:38
#define AMREX_EXPORT
Definition AMReX_Extension.H:191
Array4< int const > offset
Definition AMReX_HypreMLABecLap.cpp:1089
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:551
std::ostream & writeOn(std::ostream &) const
Output this BoxArray to a checkpoint file.
Definition AMReX_BoxArray.cpp:475
int readFrom(std::istream &is)
Initialize the BoxArray from the supplied istream. It is an error if the BoxArray has already been in...
Definition AMReX_BoxArray.cpp:461
Long size() const noexcept
Return the number of boxes in the BoxArray.
Definition AMReX_BoxArray.H:598
Calculates the distribution of FABs to MPI processes.
Definition AMReX_DistributionMapping.H:41
const Vector< int > & ProcessorMap() const noexcept
Returns a constant reference to the mapping of boxes in the underlying BoxArray to the CPU that holds...
Definition AMReX_DistributionMapping.cpp:47
A Fortran Array of REALs.
Definition AMReX_FArrayBox.H:229
IntVect nGrowVect() const noexcept
Definition AMReX_FabArrayBase.H:80
int size() const noexcept
Return the number of FABs in the FabArray.
Definition AMReX_FabArrayBase.H:110
const DistributionMapping & DistributionMap() const noexcept
Return constant reference to associated DistributionMapping.
Definition AMReX_FabArrayBase.H:131
bool empty() const noexcept
Definition AMReX_FabArrayBase.H:89
Box fabbox(int K) const noexcept
Return the Kth FABs Box in the FabArray. That is, the region the Kth fab is actually defined on.
Definition AMReX_FabArrayBase.cpp:220
int nComp() const noexcept
Return number of variables (aka components) associated with each point.
Definition AMReX_FabArrayBase.H:83
const BoxArray & boxArray() const noexcept
Return a constant reference to the BoxArray that defines the valid region associated with this FabArr...
Definition AMReX_FabArrayBase.H:95
An Array of FortranArrayBox(FAB)-like Objects.
Definition AMReX_FabArray.H:345
void define(const BoxArray &bxs, const DistributionMapping &dm, int nvar, int ngrow, const MFInfo &info=MFInfo(), const FabFactory< FAB > &factory=DefaultFabFactory< FAB >())
Define this FabArray identically to that performed by the constructor having an analogous function si...
Definition AMReX_FabArray.H:2128
Definition AMReX_MFIter.H:57
bool isValid() const noexcept
Is the iterator valid i.e. is it associated with a FAB?
Definition AMReX_MFIter.H:141
This class encapsulates writing to nfiles.
Definition AMReX_NFiles.H:27
Vector< int > FileNumbersWritten()
these are the file numbers to which each rank wrote [rank] a rank only writes to one file
Definition AMReX_NFiles.cpp:517
static int ActualNFiles(int nOutFiles)
this returns the actual number of files used the range [1, nProcs] is enforced
Definition AMReX_NFiles.H:130
bool GetDynamic() const
Definition AMReX_NFiles.H:54
bool GetSparseFPP() const
Definition AMReX_NFiles.H:65
std::fstream & Stream()
Definition AMReX_NFiles.H:98
void SetSparseFPP(const Vector< int > &ranksToWrite)
call this to use a file per process for a sparse set of writers. ranksToWrite.size() will set noutfil...
Definition AMReX_NFiles.cpp:114
bool ReadyToWrite(bool appendFirst=false)
if appendFirst is true, the first set for this iterator will open the files in append mode
Definition AMReX_NFiles.cpp:204
const Vector< Vector< int > > & FileNumbersWriteOrder() const
these are the order of ranks which wrote to each file [filenumber][ranks in order they wrote to filen...
Definition AMReX_NFiles.H:198
int FileNumber() const
Definition AMReX_NFiles.H:161
const std::string & FileName() const
Definition AMReX_NFiles.H:160
int CoordinatorProc() const
this is the processor coordinating dynamic set selection
Definition AMReX_NFiles.H:184
void SetDynamic(int deciderproc=-1)
call this to use dynamic set selection deciderproc defaults to nprocs - 1 if < 0
Definition AMReX_NFiles.cpp:69
Hold the description and status of communication data.
Definition AMReX_ParallelDescriptor.H:57
A Descriptor of the Real Type.
Definition AMReX_FabConv.H:105
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
T * dataPtr() noexcept
get access to the underlying data pointer
Definition AMReX_Vector.H:49
Long size() const noexcept
Definition AMReX_Vector.H:53
Definition AMReX_VisMFBuffer.H:13
static Long GetIOBufferSize()
Definition AMReX_VisMFBuffer.H:26
File I/O for FabArray<FArrayBox>. Wrapper class for reading/writing FabArray<FArrayBox> objects to di...
Definition AMReX_VisMF.H:34
static bool useSingleWrite
Definition AMReX_VisMF.H:356
IntVect nGrowVect() const
Definition AMReX_VisMF.cpp:495
static bool setBuf
Definition AMReX_VisMF.H:354
static bool useSynchronousReads
Definition AMReX_VisMF.H:359
static void SetGroupSets(bool groupsets)
Definition AMReX_VisMF.H:259
Real max(int fabIndex, int nComp) const
The max of the FAB (in valid region) at specified index and component.
Definition AMReX_VisMF.cpp:538
static bool noFlushAfterWrite
Definition AMReX_VisMF.H:362
static void SetNOutFiles(int noutfiles, MPI_Comm comm=ParallelDescriptor::Communicator())
Definition AMReX_VisMF.cpp:156
static bool checkFilePositions
Definition AMReX_VisMF.H:357
static Long FileOffset(std::ostream &os)
The file offset of the passed ostream.
Definition AMReX_VisMF.cpp:579
static std::ifstream * OpenStream(const std::string &fileName)
Open the stream if it is not already open Close the stream if not persistent or forced Close all open...
Definition AMReX_VisMF.cpp:2258
static bool GetUseDynamicSetSelection()
Definition AMReX_VisMF.H:279
static bool GetSetBuf()
Definition AMReX_VisMF.H:261
const BoxArray & boxArray() const
The BoxArray of the on-disk FabArray<FArrayBox>.
Definition AMReX_VisMF.cpp:507
static void SetUseSingleWrite(bool usesinglewrite)
Definition AMReX_VisMF.H:268
static void SetHeaderVersion(VisMF::Header::Version version)
Definition AMReX_VisMF.H:255
static void Read(FabArray< FArrayBox > &mf, const std::string &name, const char *faHeader=nullptr, int coordinatorProc=ParallelDescriptor::IOProcessorNumber(), int allow_empty_mf=0)
Read a FabArray<FArrayBox> from disk written using VisMF::Write(). If the FabArray<FArrayBox> fafab h...
Definition AMReX_VisMF.cpp:1583
static Long WriteHeader(const std::string &mf_name, VisMF::Header &hdr, int procToWrite=ParallelDescriptor::IOProcessorNumber(), MPI_Comm comm=ParallelDescriptor::Communicator())
Definition AMReX_VisMF.cpp:954
std::string m_fafabname
Name of the FabArray<FArrayBox>.
Definition AMReX_VisMF.H:336
static void CloseAllStreams()
Definition AMReX_VisMF.cpp:2308
static bool barrierAfterLevel
Definition AMReX_VisMF.H:363
static void AsyncWriteDoit(const FabArray< FArrayBox > &mf, const std::string &mf_name, bool is_rvalue, bool valid_cells_only)
Definition AMReX_VisMF.cpp:2347
int size() const
Definition AMReX_VisMF.cpp:501
static int verbose
Definition AMReX_VisMF.H:351
static int GetVerbose()
Definition AMReX_VisMF.H:251
static Long WriteHeaderDoit(const std::string &mf_name, VisMF::Header const &hdr)
Definition AMReX_VisMF.cpp:922
static bool groupSets
Definition AMReX_VisMF.H:353
static void SetNoFlushAfterWrite(bool nfaw)
Definition AMReX_VisMF.H:283
static VisMF::Header::Version GetHeaderVersion()
Definition AMReX_VisMF.H:254
static void SetCheckFilePositions(bool cfp)
Definition AMReX_VisMF.H:271
static void SetUseSingleRead(bool usesingleread)
Definition AMReX_VisMF.H:265
FArrayBox * readFAB(int idx, const std::string &mf_name)
Read the entire fab (all components).
Definition AMReX_VisMF.cpp:595
static bool GetCheckFilePositions()
Definition AMReX_VisMF.H:270
const FArrayBox & GetFab(int fabIndex, int compIndex) const
The FAB at the specified index and component. Reads it from disk if necessary. This reads only the sp...
Definition AMReX_VisMF.cpp:563
static void DeleteStream(const std::string &fileName)
Definition AMReX_VisMF.cpp:2297
static Long Write(const FabArray< FArrayBox > &mf, const std::string &name, VisMF::How how=NFiles, bool set_ghost=false)
Write a FabArray<FArrayBox> to disk in a "smart" way. Returns the total number of bytes written on th...
Definition AMReX_VisMF.cpp:979
Vector< Vector< FArrayBox * > > m_pa
We manage the FABs individually.
Definition AMReX_VisMF.H:340
static bool useSingleRead
Definition AMReX_VisMF.H:355
static bool GetUseSynchronousReads()
Definition AMReX_VisMF.H:276
static int GetMFFileInStreams()
Definition AMReX_VisMF.H:248
static int GetNOutFiles()
Definition AMReX_VisMF.cpp:168
static bool GetNoFlushAfterWrite()
Definition AMReX_VisMF.H:282
static VisMF::Header::Version currentVersion
Definition AMReX_VisMF.H:352
static bool usePersistentIFStreams
Definition AMReX_VisMF.H:358
static bool GetGroupSets()
Definition AMReX_VisMF.H:258
static std::string DirName(const std::string &filename)
Definition AMReX_VisMF.cpp:625
static Long WriteOnlyHeader(const FabArray< FArrayBox > &mf, const std::string &mf_name, VisMF::How how=NFiles)
Write only the header-file corresponding to FabArray<FArrayBox> to disk without the corresponding FAB...
Definition AMReX_VisMF.cpp:1183
int nGrow() const
The grow factor of the on-disk FabArray<FArrayBox>.
Definition AMReX_VisMF.cpp:489
Header m_hdr
The VisMF header as read from disk.
Definition AMReX_VisMF.H:338
static bool useDynamicSetSelection
Definition AMReX_VisMF.H:360
static bool GetUsePersistentIFStreams()
Definition AMReX_VisMF.H:273
static void SetUseSynchronousReads(bool usepsr)
Definition AMReX_VisMF.H:277
static void SetVerbose(int v)
Definition AMReX_VisMF.H:252
VisMF & operator=(const VisMF &)=delete
static void CloseStream(const std::string &fileName, bool forceClose=false)
Definition AMReX_VisMF.cpp:2280
How
How we write out FabArray<FArrayBox>s. These are deprecated, we always use NFiles....
Definition AMReX_VisMF.H:41
@ NFiles
Definition AMReX_VisMF.H:41
@ OneFilePerCPU
Definition AMReX_VisMF.H:41
static void AsyncWrite(const FabArray< FArrayBox > &mf, const std::string &mf_name, bool valid_cells_only=false)
Definition AMReX_VisMF.cpp:2314
static void Finalize()
Definition AMReX_VisMF.cpp:149
void clear()
Delete()s all the FABs.
Definition AMReX_VisMF.cpp:2226
static void SetBarrierAfterLevel(bool bal)
Definition AMReX_VisMF.H:286
static bool Exist(const std::string &name)
Does FabArray exist?
Definition AMReX_VisMF.cpp:2088
static bool GetBarrierAfterLevel()
Definition AMReX_VisMF.H:285
static void SetMFFileInStreams(int nstreams, MPI_Comm comm=ParallelDescriptor::Communicator())
Definition AMReX_VisMF.cpp:162
static void ReadFAHeader(const std::string &fafabName, Vector< char > &header)
Read only the header of a FabArray, header will be resized here.
Definition AMReX_VisMF.cpp:2102
static int nMFFileInStreams
Definition AMReX_VisMF.H:349
static void Initialize()
Definition AMReX_VisMF.cpp:109
static bool GetUseSingleRead()
Definition AMReX_VisMF.H:264
static std::map< std::string, VisMF::PersistentIFStream > persistentIFStreams
Persistent streams. These open on demand and should be closed when not needed with CloseAllStreams....
Definition AMReX_VisMF.H:346
static std::string BaseName(const std::string &filename)
Definition AMReX_VisMF.cpp:607
static void RemoveFiles(const std::string &name, bool verbose=false)
this will remove nfiles associated with name and the header
Definition AMReX_VisMF.cpp:1374
static bool allowSparseWrites
Definition AMReX_VisMF.H:361
static int nOutFiles
The number of files to write for a FabArray<FArrayBox>.
Definition AMReX_VisMF.H:348
int nComp() const
The number of components in the on-disk FabArray<FArrayBox>.
Definition AMReX_VisMF.cpp:483
Real min(int fabIndex, int nComp) const
The min of the FAB (in valid region) at specified index and component.
Definition AMReX_VisMF.cpp:513
static bool Check(const std::string &name)
Check if the multifab is ok, false is returned if not ok.
Definition AMReX_VisMF.cpp:2113
static void SetUsePersistentIFStreams(bool usepifs)
Definition AMReX_VisMF.H:274
static void SetUseDynamicSetSelection(bool usedss)
Definition AMReX_VisMF.H:280
static bool GetUseSingleWrite()
Definition AMReX_VisMF.H:267
static void FindOffsets(const FabArray< FArrayBox > &mf, const std::string &filePrefix, VisMF::Header &hdr, VisMF::Header::Version whichVersion, NFilesIter &nfi, MPI_Comm comm=ParallelDescriptor::Communicator())
fileNumbers must be passed in for dynamic set selection [proc]
Definition AMReX_VisMF.cpp:1217
VisMF(const VisMF &)=delete
static void SetSetBuf(bool setbuf)
Definition AMReX_VisMF.H:262
static bool NoFabHeader(const VisMF::Header &hdr)
Definition AMReX_VisMF.cpp:2236
void streamSynchronize() noexcept
Definition AMReX_GpuDevice.H:260
void dtoh_memcpy_async(void *p_h, const void *p_d, const std::size_t sz) noexcept
Definition AMReX_GpuDevice.H:303
MPI_Comm Communicator() noexcept
Definition AMReX_ParallelDescriptor.H:210
int MyProc() noexcept
return the rank number local to the current Parallel Context
Definition AMReX_ParallelDescriptor.H:125
void ReadAndBcastFile(const std::string &filename, Vector< char > &charBuf, bool bExitOnError, const MPI_Comm &comm)
Definition AMReX_ParallelDescriptor.cpp:1491
Message Send(const T *buf, size_t n, int dst_pid, int tag)
Definition AMReX_ParallelDescriptor.H:1109
int SeqNum() noexcept
Returns sequential message sequence numbers, usually used as tags for send/recv.
Definition AMReX_ParallelDescriptor.H:613
int NProcs() noexcept
return the number of MPI ranks local to the current Parallel Context
Definition AMReX_ParallelDescriptor.H:243
void IProbe(int, int, int &, MPI_Status &)
Definition AMReX_ParallelDescriptor.cpp:1218
int IOProcessorNumber() noexcept
Definition AMReX_ParallelDescriptor.H:266
Message Recv(T *, size_t n, int pid, int tag)
Definition AMReX_ParallelDescriptor.H:1151
void read_fab(FAB &fab, VisMF::FabOnDisk const &fod, std::string const &name)
Definition AMReX_VisMF.H:532
int MPI_Comm
Definition AMReX_ccse-mpi.H:51
Definition AMReX_Amr.cpp:49
void FileOpenFailed(const std::string &file)
Output a message and abort when couldn't open the file.
Definition AMReX_Utility.cpp:137
std::enable_if_t< std::is_same_v< FAB, IArrayBox > > Write(const FabArray< FAB > &fa, const std::string &name)
Write iMultiFab/FabArray<IArrayBox>
Definition AMReX_VisMF.H:391
bool match(const BoxArray &x, const BoxArray &y)
Note that two BoxArrays that match are not necessarily equal.
Definition AMReX_BoxArray.cpp:1918
void Error(const std::string &msg)
Print out message to cerr and exit via amrex::Abort().
Definition AMReX.cpp:224
Arena * The_Pinned_Arena()
Definition AMReX_Arena.cpp:745
std::enable_if_t< std::is_same_v< FAB, IArrayBox > > Read(FabArray< FAB > &fa, const std::string &name)
Read iMultiFab/FabArray<IArrayBox>
Definition AMReX_VisMF.H:568
std::istream & operator>>(std::istream &is, BoxND< dim > &bx)
Read from istream.
Definition AMReX_Box.H:1718
__host__ __device__ Dim3 end(BoxND< dim > const &box) noexcept
Definition AMReX_Box.H:1908
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Definition AMReX_AmrMesh.cpp:1236
Definition AMReX_FabArrayCommI.H:1000
A structure containing info regarding an on-disk FAB.
Definition AMReX_VisMF.H:56
Long m_head
Offset to start of FAB in file.
Definition AMReX_VisMF.H:63
std::string m_name
The two data values in a FabOnDisk structure.
Definition AMReX_VisMF.H:62
FabOnDisk()=default
The default constructor – null out all fields.
This structure is used to store the read order for each FabArray file.
Definition AMReX_VisMF.H:117
int rankToRead
Definition AMReX_VisMF.H:118
Box box
Definition AMReX_VisMF.H:121
Long fileOffset
Definition AMReX_VisMF.H:120
int faIndex
Definition AMReX_VisMF.H:119
This structure is used to store file ifstreams that remain open.
Definition AMReX_VisMF.H:129
~PersistentIFStream()
Definition AMReX_VisMF.cpp:2247
VisMF::IO_Buffer ioBuffer
Definition AMReX_VisMF.H:133
PersistentIFStream(PersistentIFStream &&)=delete
PersistentIFStream & operator=(PersistentIFStream const &)=delete
std::streampos currentPosition
Definition AMReX_VisMF.H:131
std::ifstream * pstr
Definition AMReX_VisMF.H:130
bool isOpen
Definition AMReX_VisMF.H:132
PersistentIFStream()=default
PersistentIFStream(PersistentIFStream const &)=delete
Definition AMReX_ccse-mpi.H:55