4#include <AMReX_Config.H>
43 NFilesIter(
int noutfiles, std::string fileprefix,
44 bool groupsets,
bool setBuf);
54 [[nodiscard]]
bool GetDynamic()
const {
return ( ! useStaticSetSelection); }
98 std::fstream &
Stream() {
return fileStream; }
108 return ((nProcs + (anf - 1)) / anf);
112 int noutfiles,
bool groupsets)
116 whichset = whichproc / noutfiles;
118 whichset = whichproc %
LengthOfSet(nprocs, noutfiles);
144 static bool CheckNFiles(
int nProcs,
int nOutFiles,
bool groupSets);
146 static int FileNumber(
int nOutFiles,
int whichProc,
bool groupSets)
152 return(whichProc % anf);
160 [[nodiscard]]
const std::string &
FileName()
const {
return fullFileName; }
164 const std::string &filePrefix,
165 int whichProc,
bool groupSets)
171 whichProc, groupSets), minDigits ) );
175 const std::string &filePrefix)
212 bool groupSets =
false;
213 int mySetPosition = -1;
215 std::string filePrefix;
216 std::string fullFileName;
218 std::fstream fileStream;
219 bool finishedWriting =
false;
220 bool isReading =
false;
221 bool finishedReading =
false;
224 int myReadIndex = -1;
225 bool useStaticSetSelection =
true;
226 int remainingWriters = -1, deciderProc=-1, coordinatorProc = -1;
227 int deciderTag = -1, coordinatorTag = -1, doneTag = -1, writeTag=-1;
232 bool useSparseFPP =
false;
234 int mySparseFileNumber = -1;
236 static int currentDeciderIndex;
241 static const int indexUndefined = -1;
#define BL_ASSERT(EX)
Definition AMReX_BLassert.H:39
#define AMREX_EXPORT
Definition AMReX_Extension.H:191
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 bool CheckNFiles(int nProcs, int nOutFiles, bool groupSets)
this checks if nOutFiles equals the calculated number of files returns false if they do not match
Definition AMReX_NFiles.cpp:498
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
static void SetMinDigits(int md)
Definition AMReX_NFiles.H:204
bool GetSparseFPP() const
Definition AMReX_NFiles.H:65
static int GetMinDigits()
Definition AMReX_NFiles.H:202
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
NFilesIter & operator++()
Definition AMReX_NFiles.cpp:345
static std::string FileName(int nOutFiles, const std::string &filePrefix, int whichProc, bool groupSets)
Definition AMReX_NFiles.H:163
~NFilesIter()
Definition AMReX_NFiles.cpp:197
static std::string FileName(int fileNumber, const std::string &filePrefix)
Definition AMReX_NFiles.H:174
std::streampos SeekPos()
get the current Stream()'s seek position
Definition AMReX_NFiles.cpp:493
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
NFilesIter(NFilesIter const &)=delete
NFilesIter & operator=(NFilesIter const &)=delete
static int LengthOfSet(int nProcs, int nOutFiles)
Definition AMReX_NFiles.H:106
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
NFilesIter(NFilesIter &&)=delete
void CleanUpMessages()
Definition AMReX_NFiles.cpp:552
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
static int FileNumber(int nOutFiles, int whichProc, bool groupSets)
Definition AMReX_NFiles.H:146
bool ReadyToRead()
Definition AMReX_NFiles.cpp:325
static int WhichSetPosition(int whichproc, int nprocs, int noutfiles, bool groupsets)
Definition AMReX_NFiles.H:111
void SetDynamic(int deciderproc=-1)
call this to use dynamic set selection deciderproc defaults to nprocs - 1 if < 0
Definition AMReX_NFiles.cpp:69
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:28
int NProcs() noexcept
Definition AMReX_ParallelDescriptor.H:255
Definition AMReX_Amr.cpp:49
std::string Concatenate(const std::string &root, int num, int mindigits)
Returns rootNNNN where NNNN == num.
Definition AMReX_String.cpp:34