MCPcopy Create free account
hub / github.com/AMReX-Codes/amrex / SetSparseFPP

Method SetSparseFPP

Src/Base/AMReX_NFiles.cpp:115–162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

113
114
115void NFilesIter::SetSparseFPP(const Vector<int> &ranksToWrite)
116{
117 if(ranksToWrite.empty()) {
118 return;
119 }
120 if(ranksToWrite.size() > nProcs) {
121 amrex::Abort("**** Error in NFilesIter::SetSparseFPP: ranksToWrite.size() > nProcs.");
122 }
123
124 sparseWritingRanks = ranksToWrite;
125
126 // ---- do more error checking here
127 // ---- ranks in range, is dynamic on already
128 mySparseFileNumber = -1;
129 for(int r : ranksToWrite) {
130 if(r < 0 || r >= nProcs) {
131 amrex::Abort("**** Error in NFilesIter::SetSparseFPP: rank out of range.");
132 }
133 if(r == myProc) {
134 if(mySparseFileNumber == -1) {
135 mySparseFileNumber = myProc;
136 } else {
137 amrex::Abort("**** Error in NFilesIter::SetSparseFPP: ranksToWrite not unique.");
138 }
139 }
140 }
141
142 nOutFiles = static_cast<int>(ranksToWrite.size());
143
144 if(myProc == coordinatorProc) {
145 // ---- get the write order from ranksToWrite
146 fileNumbersWriteOrder.clear();
147 fileNumbersWriteOrder.resize(nOutFiles);
148 for(int i(0); i < fileNumbersWriteOrder.size(); ++i) {
149 fileNumbersWriteOrder[i].push_back(ranksToWrite[i]);
150 }
151 }
152
153 if(mySparseFileNumber != -1) {
154 fileNumber = mySparseFileNumber;
155 fullFileName = FileName(fileNumber, filePrefix);
156 } else {
157 fullFileName = "fullFileNameUndefined";
158 }
159
160 useSparseFPP = true;
161 useStaticSetSelection = true;
162}
163
164
165NFilesIter::NFilesIter(std::string filename,

Callers 2

WriteFunction · 0.80
WriteMethod · 0.80

Calls 6

AbortFunction · 0.85
emptyMethod · 0.45
sizeMethod · 0.45
clearMethod · 0.45
resizeMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected