diff options
Diffstat (limited to 'Carpet/CarpetLib')
-rw-r--r-- | Carpet/CarpetLib/src/defs.cc | 2 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/dh.cc | 28 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/dh.hh | 40 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/ggf.cc | 4 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/ggf.hh | 4 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/region.cc | 12 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/region.hh | 35 |
7 files changed, 64 insertions, 61 deletions
diff --git a/Carpet/CarpetLib/src/defs.cc b/Carpet/CarpetLib/src/defs.cc index a5cedbab6..1dd6cb34f 100644 --- a/Carpet/CarpetLib/src/defs.cc +++ b/Carpet/CarpetLib/src/defs.cc @@ -201,6 +201,8 @@ template ostream& output (ostream& os, const vector<vect<int,3> >& v); template ostream& output (ostream& os, const vector<vect<vect<bool,2>,3> >& v); template ostream& output (ostream& os, const vector<dh::dboxes> & v); template ostream& output (ostream& os, const vector<region_t>& v); +template ostream& output (ostream& os, const vector<pseudoregion_t>& v); +template ostream& output (ostream& os, const vector<sendrecv_pseudoregion_t>& v); template ostream& output (ostream& os, const vector<list<bbox<int,3> > >& v); template ostream& output (ostream& os, const vector<vector<int> >& v); template ostream& output (ostream& os, const vector<vector<CCTK_REAL> >& v); diff --git a/Carpet/CarpetLib/src/dh.cc b/Carpet/CarpetLib/src/dh.cc index a5f7549a3..5f6bf5901 100644 --- a/Carpet/CarpetLib/src/dh.cc +++ b/Carpet/CarpetLib/src/dh.cc @@ -19,18 +19,6 @@ using namespace CarpetLib; -ostream & operator<< (ostream & os, pseudoregion const & p) -{ - return os << p.extent << "/p:" << p.processor; -} - -ostream & operator<< (ostream & os, sendrecv_pseudoregion const & srp) -{ - return os << "(send:" << srp.send << ",recv:" << srp.recv << ")"; -} - - - // Constructors dh:: dh (gh & h_, @@ -518,7 +506,7 @@ regrid () if (on_this_proc (c)) { int const p = dist::rank(); level.AT(p).fast_mg_rest_sendrecv.push_back - (sendrecv_pseudoregion (send, c, recv, c)); + (sendrecv_pseudoregion_t (send, c, recv, c)); } } @@ -574,7 +562,7 @@ regrid () if (on_this_proc (c)) { int const p = dist::rank(); level.AT(p).fast_mg_prol_sendrecv.push_back - (sendrecv_pseudoregion (send, c, recv, c)); + (sendrecv_pseudoregion_t (send, c, recv, c)); } } @@ -640,7 +628,7 @@ regrid () if (on_this_proc (c, cc)) { int const p = dist::rank(); level.AT(p).fast_ref_prol_sendrecv.push_back - (sendrecv_pseudoregion (send, cc, recv, c)); + (sendrecv_pseudoregion_t (send, cc, recv, c)); } } @@ -706,7 +694,7 @@ regrid () if (on_this_proc (c, cc)) { int const p = dist::rank(); level.AT(p).fast_sync_sendrecv.push_back - (sendrecv_pseudoregion (send, cc, recv, c)); + (sendrecv_pseudoregion_t (send, cc, recv, c)); } } @@ -777,7 +765,7 @@ regrid () if (on_this_proc (c, cc)) { int const p = dist::rank(); level.AT(p).fast_ref_bnd_prol_sendrecv.push_back - (sendrecv_pseudoregion (send, cc, recv, c)); + (sendrecv_pseudoregion_t (send, cc, recv, c)); } } @@ -886,7 +874,7 @@ regrid () if (on_this_proc (c, cc)) { int const p = dist::rank(); olevel.AT(p).fast_ref_rest_sendrecv.push_back - (sendrecv_pseudoregion (send, c, recv, cc)); + (sendrecv_pseudoregion_t (send, c, recv, cc)); } } @@ -952,7 +940,7 @@ regrid () if (on_this_proc (c, cc)) { int const p = dist::rank(); level.AT(p).fast_old2new_sync_sendrecv.push_back - (sendrecv_pseudoregion (send, cc, recv, c)); + (sendrecv_pseudoregion_t (send, cc, recv, c)); } } @@ -1017,7 +1005,7 @@ regrid () if (on_this_proc (c, cc)) { int const p = dist::rank(); level.AT(p).fast_old2new_ref_prol_sendrecv.push_back - (sendrecv_pseudoregion (send, cc, recv, c)); + (sendrecv_pseudoregion_t (send, cc, recv, c)); } } diff --git a/Carpet/CarpetLib/src/dh.hh b/Carpet/CarpetLib/src/dh.hh index 9011525d7..7fda88728 100644 --- a/Carpet/CarpetLib/src/dh.hh +++ b/Carpet/CarpetLib/src/dh.hh @@ -11,47 +11,13 @@ #include "bboxset.hh" #include "defs.hh" #include "gh.hh" +#include "region.hh" #include "vect.hh" using namespace std; -// A pseudoregion is almost a region; it is a bbox that lives on a -// certain processor. Pseudoregions are a compact way to store -// information about what processors needs to send data to what other -// processor during synchronisation or regridding. -struct pseudoregion { - ibbox extent; - int processor; - pseudoregion () - { - } - pseudoregion (ibbox const & extent_, int const processor_) - : extent (extent_), processor (processor_) - { - } -}; - -ostream & operator<< (ostream & os, pseudoregion const & p); - -struct sendrecv_pseudoregion { - pseudoregion send, recv; - sendrecv_pseudoregion () - { - } - sendrecv_pseudoregion (ibbox const & send_extent, int const send_processor, - ibbox const & recv_extent, int const recv_processor) - : send (pseudoregion (send_extent, send_processor)), - recv (pseudoregion (recv_extent, recv_processor)) - { - } -}; - -ostream & operator<< (ostream & os, sendrecv_pseudoregion const & srp); - - - // Forward declaration class ggf; class dh; @@ -66,8 +32,8 @@ public: typedef list<ibbox> iblist; typedef vector<iblist> iblistvect; // vector of lists - typedef vector <pseudoregion> pvect; - typedef vector <sendrecv_pseudoregion> srpvect; + typedef vector <pseudoregion_t> pvect; + typedef vector <sendrecv_pseudoregion_t> srpvect; diff --git a/Carpet/CarpetLib/src/ggf.cc b/Carpet/CarpetLib/src/ggf.cc index d0dc2e2e4..f24f03163 100644 --- a/Carpet/CarpetLib/src/ggf.cc +++ b/Carpet/CarpetLib/src/ggf.cc @@ -769,8 +769,8 @@ transfer_from_all (comm_state & state, for (srpvect::const_iterator ipsendrecv = psendrecvs.begin(); ipsendrecv!=psendrecvs.end(); ++ ipsendrecv) { - pseudoregion const & psend = (* ipsendrecv).send; - pseudoregion const & precv = (* ipsendrecv).recv; + pseudoregion_t const & psend = (* ipsendrecv).send; + pseudoregion_t const & precv = (* ipsendrecv).recv; ibbox const & send = psend.extent; ibbox const & recv = precv.extent; int const c2 = psend.processor; diff --git a/Carpet/CarpetLib/src/ggf.hh b/Carpet/CarpetLib/src/ggf.hh index 89efcdb77..ae1320522 100644 --- a/Carpet/CarpetLib/src/ggf.hh +++ b/Carpet/CarpetLib/src/ggf.hh @@ -33,8 +33,8 @@ class ggf { typedef list<ibbox> iblist; typedef vector<iblist> iblistvect; - typedef vector <pseudoregion> pvect; - typedef vector <sendrecv_pseudoregion> srpvect; + typedef vector <pseudoregion_t> pvect; + typedef vector <sendrecv_pseudoregion_t> srpvect; typedef gdata* tdata; // data ... typedef vector<tdata> fdata; // ... for each time level diff --git a/Carpet/CarpetLib/src/region.cc b/Carpet/CarpetLib/src/region.cc index 7a9162b93..caf535598 100644 --- a/Carpet/CarpetLib/src/region.cc +++ b/Carpet/CarpetLib/src/region.cc @@ -74,3 +74,15 @@ operator<< (ostream & os, region_t const & reg) << "processor=" << reg.processor << ")"; return os; } + + + +ostream & operator<< (ostream & os, pseudoregion_t const & p) +{ + return os << p.extent << "/p:" << p.processor; +} + +ostream & operator<< (ostream & os, sendrecv_pseudoregion_t const & srp) +{ + return os << "(send:" << srp.send << ",recv:" << srp.recv << ")"; +} diff --git a/Carpet/CarpetLib/src/region.hh b/Carpet/CarpetLib/src/region.hh index d32b13a82..73b60004e 100644 --- a/Carpet/CarpetLib/src/region.hh +++ b/Carpet/CarpetLib/src/region.hh @@ -34,4 +34,39 @@ ostream & operator<< (ostream & os, region_t const & reg); +// A pseudoregion is almost a region; it is a bbox that lives on a +// certain processor. Pseudoregions are a compact way to store +// information about what processors needs to send data to what other +// processor during synchronisation or regridding. +struct pseudoregion_t { + ibbox extent; + int processor; + pseudoregion_t () + { + } + pseudoregion_t (ibbox const & extent_, int const processor_) + : extent (extent_), processor (processor_) + { + } +}; + +ostream & operator<< (ostream & os, pseudoregion_t const & p); + +struct sendrecv_pseudoregion_t { + pseudoregion_t send, recv; + sendrecv_pseudoregion_t () + { + } + sendrecv_pseudoregion_t (ibbox const & send_extent, int const send_processor, + ibbox const & recv_extent, int const recv_processor) + : send (pseudoregion_t (send_extent, send_processor)), + recv (pseudoregion_t (recv_extent, recv_processor)) + { + } +}; + +ostream & operator<< (ostream & os, sendrecv_pseudoregion_t const & srp); + + + #endif // #ifndef REGION_HH |