aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/ggf.hh
diff options
context:
space:
mode:
authorschnetter <>2003-11-05 15:18:00 +0000
committerschnetter <>2003-11-05 15:18:00 +0000
commitf1bfa75fa4425d8cf55937fa26b33b2c6ba8f27a (patch)
treedb14971237fb532d89eff53dde64282084b73e6f /Carpet/CarpetLib/src/ggf.hh
parent1072312e58ca8b5d10bcb738a117a5fdf9cd6415 (diff)
Many changes that accumulated while Cactus and Carpet diverged.
Many changes that accumulated while Cactus and Carpet diverged. Add processor splitting mechanism "along-dir" that splits along a specified direction. Rename group PostRestrict to bin POSTRESTRICT. Prolongate initial data only when desired. This saves much time. Sorry, Ian. Fix bug in time level cycling of grid arrays. (Note: grid arrays should not have time levels.) Fix time_t bug on IRIX. Make sure that there is no integer overflow when there are many refinement levels. Always put parentheses around (maxreflevelfact/reflevelfact). Fix typo in Carpet verbose output. Add debug output in processor splitting. Communicate in three stages: Irecv, (work), Isend, Wait. This might be more efficient. Much more, potentially. Fix bug in processor layout of grid arrays. Sorry, Ian. Make the interpolator interpolate between time levels. Untested. Fix bug in processor communication in interpolator. Sorry, Ian. Rewrite prolongation operators to make them twice as fast. There you are, Ian. Move prolongation operator kind handling from data to gdata. Add official hyperslabbing interfaces to CarpetSlab. Adapt to new cGH * handling. darcs-hash:20031105151837-07bb3-758a87ff0355dba053269df4b7d7d79bea018669.gz
Diffstat (limited to 'Carpet/CarpetLib/src/ggf.hh')
-rw-r--r--Carpet/CarpetLib/src/ggf.hh39
1 files changed, 24 insertions, 15 deletions
diff --git a/Carpet/CarpetLib/src/ggf.hh b/Carpet/CarpetLib/src/ggf.hh
index 98c556800..b99c7aa10 100644
--- a/Carpet/CarpetLib/src/ggf.hh
+++ b/Carpet/CarpetLib/src/ggf.hh
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.hh,v 1.16 2003/10/14 16:39:16 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.hh,v 1.17 2003/11/05 16:18:39 schnetter Exp $
#ifndef GGF_HH
#define GGF_HH
@@ -80,7 +80,7 @@ public:
// Modifiers
// VGF
- void recompose (const int initialise_upto = -1);
+ void recompose (const int initialise_from, const bool do_prolongate);
// Cycle the time levels by rotating the data sets
void cycle (int rl, int c, int ml);
@@ -88,8 +88,11 @@ public:
// Flip the time levels by exchanging the data sets
void flip (int rl, int c, int ml);
+#if 0
// Copy data from current time level to all previous time levels
void copytoprevs (int rl, int c, int ml);
+#endif
+
// Helpers
@@ -105,39 +108,45 @@ protected:
protected:
// Copy a region
- void copycat (int tl1, int rl1, int c1, int ml1,
+ void copycat (comm_state<D>& state,
+ int tl1, int rl1, int c1, int ml1,
const ibbox dh<D>::dboxes::* recv_list,
int tl2, int rl2, int ml2,
const ibbox dh<D>::dboxes::* send_list);
// Copy regions
- void copycat (int tl1, int rl1, int c1, int ml1,
+ void copycat (comm_state<D>& state,
+ int tl1, int rl1, int c1, int ml1,
const iblist dh<D>::dboxes::* recv_list,
int tl2, int rl2, int ml2,
const iblist dh<D>::dboxes::* send_list);
// Copy regions
- void copycat (int tl1, int rl1, int c1, int ml1,
+ void copycat (comm_state<D>& state,
+ int tl1, int rl1, int c1, int ml1,
const iblistvect dh<D>::dboxes::* recv_listvect,
int tl2, int rl2, int ml2,
const iblistvect dh<D>::dboxes::* send_listvect);
// Interpolate a region
- void intercat (int tl1, int rl1, int c1, int ml1,
+ void intercat (comm_state<D>& state,
+ int tl1, int rl1, int c1, int ml1,
const ibbox dh<D>::dboxes::* recv_list,
const vector<int> tl2s, int rl2, int ml2,
const ibbox dh<D>::dboxes::* send_list,
CCTK_REAL time);
// Interpolate regions
- void intercat (int tl1, int rl1, int c1, int ml1,
+ void intercat (comm_state<D>& state,
+ int tl1, int rl1, int c1, int ml1,
const iblist dh<D>::dboxes::* recv_list,
const vector<int> tl2s, int rl2, int ml2,
const iblist dh<D>::dboxes::* send_list,
CCTK_REAL time);
// Interpolate regions
- void intercat (int tl1, int rl1, int c1, int ml1,
+ void intercat (comm_state<D>& state,
+ int tl1, int rl1, int c1, int ml1,
const iblistvect dh<D>::dboxes::* recv_listvect,
const vector<int> tl2s, int rl2, int ml2,
const iblistvect dh<D>::dboxes::* send_listvect,
@@ -154,25 +163,25 @@ public:
// synchronised. They don't need to be prolongated.
// Copy a component from the next time level
- void copy (int tl, int rl, int c, int ml);
+ void copy (comm_state<D>& state, int tl, int rl, int c, int ml);
// Synchronise the boundaries of a component
- void sync (int tl, int rl, int c, int ml);
+ void sync (comm_state<D>& state, int tl, int rl, int c, int ml);
// Prolongate the boundaries of a component
- void ref_bnd_prolongate (int tl, int rl, int c, int ml, CCTK_REAL time);
+ void ref_bnd_prolongate (comm_state<D>& state, int tl, int rl, int c, int ml, CCTK_REAL time);
// Restrict a multigrid level
- void mg_restrict (int tl, int rl, int c, int ml, CCTK_REAL time);
+ void mg_restrict (comm_state<D>& state, int tl, int rl, int c, int ml, CCTK_REAL time);
// Prolongate a multigrid level
- void mg_prolongate (int tl, int rl, int c, int ml, CCTK_REAL time);
+ void mg_prolongate (comm_state<D>& state, int tl, int rl, int c, int ml, CCTK_REAL time);
// Restrict a refinement level
- void ref_restrict (int tl, int rl, int c, int ml, CCTK_REAL time);
+ void ref_restrict (comm_state<D>& state, int tl, int rl, int c, int ml, CCTK_REAL time);
// Prolongate a refinement level
- void ref_prolongate (int tl, int rl, int c, int ml, CCTK_REAL time);
+ void ref_prolongate (comm_state<D>& state, int tl, int rl, int c, int ml, CCTK_REAL time);