38 #ifdef IPPL_PRINTDEBUG
46 template<
class T,
unsigned Dim>
48 Inform& out,
bool allnodes) {
54 print(F, domain, out, allnodes);
59 template<
class T,
unsigned Dim>
67 print(F, domain, out, allnodes);
72 template<
class T,
unsigned Dim>
76 print(F, view, out, allnodes);
81 template<
class T,
unsigned Dim>
89 FDPDBG(dbgmsg <<
"Printing domain " << view);
91 FDPDBG(dbgmsg <<
"Involving all nodes? " << allnodes <<
endl);
97 FDPDBG(dbgmsg <<
"Using tag = " << tag <<
endl);
106 FDPDBG(dbgmsg <<
"Maximum domain of the field (possibly with GC's) = ");
110 if(!domain.contains(view)) {
111 ERRORMSG(
"FieldPrint::print - the domain of the field: " << domain<<
endl);
112 ERRORMSG(
" must contain the selected view: " << view <<
endl);
120 FDPDBG(dbgmsg <<
"Filling guard cells first." <<
endl);
135 BPS falseitem(
false);
136 BLFI blhs = availLField.
begin();
163 FDPDBG(dbgmsg << intersection <<
" to node 0." <<
endl);
165 LFI rhs = l.
begin(intersection, compressed_data);
169 rhs.putMessage(*mess);
179 for (
int remaining =
Ippl::getNodes() - 1; remaining > 0; --remaining) {
188 while (datahere != 0) {
192 FDPDBG(dbgmsg <<
"Parent receiving domain " << localBlock);
193 FDPDBG(dbgmsg <<
" from node " << any_node <<
endl);
197 LFI rhs(compressed_value);
198 rhs.getMessage(*mess);
203 LFI lhs = myLField.
begin(localBlock);
205 BLFI blhs = availLField.
begin(localBlock);
247 FDPDBG(dbgmsg << intersection <<
" into local LField storage."<<
endl);
248 LFI lhs = myLField.
begin(intersection);
249 LFI rhs = l.
begin(intersection);
251 BLFI blhs = availLField.
begin(intersection);
268 FDPDBG(dbgmsg << intersection <<
" into local LField storage."<<
endl);
269 LFI lhs = myLField.
begin(intersection);
270 LFI rhs = l.
begin(intersection);
272 BLFI blhs = availLField.
begin(intersection);
277 FDPDBG(dbgmsg <<
"Finished assembling data; now printing." <<
endl);
280 out <<
"~~~~~~~~ field slice ";
281 for (
unsigned int pd=0; pd <
Dim; ++pd) {
282 out << (pd == 0 ?
"(" :
", ");
283 out << view[pd].first() <<
":" << view[pd].last();
284 out <<
":" << view[pd].stride();
286 out <<
") ~~~~~~~~" <<
endl;
288 out.
setf(std::ios::scientific);
291 LFI liter = myLField.
begin();
292 BLFI bliter = availLField.
begin();
295 for (i0=0; i0 < view[0].length(); ++i0, ++liter, ++bliter)
296 printelem(*bliter, *liter, i0, out);
301 for (i1=0; i1 < view[1].length(); ++i1) {
302 out <<
"--------------------------------------------------J = ";
303 out << view[1].first() + i1 <<
endl;
304 for (i0=0; i0 < view[0].length(); ++i0, ++liter, ++bliter)
305 printelem(*bliter, *liter, i0, out);
312 for (i2=0; i2 < view[2].length(); ++i2) {
313 out <<
"==================================================K = ";
314 out << view[2].first() + i2 <<
endl;
315 for (i1=0; i1 < view[1].length(); ++i1) {
316 out <<
"--------------------------------------------------J = ";
317 out << view[1].first() + i1 <<
endl;
318 for (i0=0; i0 < view[0].length(); ++i0, ++liter, ++bliter)
319 printelem(*bliter, *liter, i0, out);
327 ERRORMSG(
"bad Dimension \"" << Dim <<
"\" in FieldDebugPrint::print()");
336 template<
class T,
unsigned Dim>
338 unsigned int i0,
Inform& out) {
339 if (DataPrecision > 0)
340 out << std::setprecision(DataPrecision);
342 out << std::setw(DataWidth);
344 out.
setf(std::ios::scientific);
349 if (CarReturn > 0 && ((i0+1) % CarReturn) == 0)
static void abort(const char *=0, int exitcode=(-1))
ac_id_larray::iterator iterator_if
const NDIndex< Dim > & getDomain() const
const NDIndex< Dim > & getOwned() const
Message & getMessage(Message &m)
void print(BareField< T, Dim > &, const NDIndex< Dim > &, Inform &, bool=true)
void Uncompress(bool fill_domain=true)
FmtFlags_t setf(FmtFlags_t setbits, FmtFlags_t field)
NDIndex< Dim > AddGuardCells(const NDIndex< Dim > &idx, const GuardCellSizes< Dim > &g)
void printelem(bool, T &, unsigned int, Inform &)
int next_tag(int t, int s=1000)
const iterator & begin() const
virtual void fillGuardCells(bool reallyFill=true) const
bool touches(const NDIndex< Dim > &) const
const NDIndex< Dim > & getAllocated() const
void getMessage(Message &m, T &t)
NDIndex< Dim > intersect(const NDIndex< Dim > &) const
Message & putMessage(Message &m) const
const GuardCellSizes< Dim > & getGuardCellSizes() const
void putMessage(Message &m, const T &t)
Message * receive_block(int &node, int &tag)
static Communicate * Comm
bool send(Message *, int node, int tag, bool delmsg=true)
Inform & endl(Inform &inf)