aboutsummaryrefslogtreecommitdiff
path: root/Carpet/Carpet/src/modes.hh
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2006-04-13 19:29:00 +0000
committerErik Schnetter <schnetter@cct.lsu.edu>2006-04-13 19:29:00 +0000
commitfa262cfe1008823367a8869a5fdfb5ace7bc008d (patch)
treea785a3215c14cffc583775ede837f370adddebe3 /Carpet/Carpet/src/modes.hh
parent8aae9df385eb364b603c1e4845d9eb0ce66a7410 (diff)
Carpet: Store number of active time levels per level instead of globally
Store the number of active time levels explicitly for each refinement level and convergence level. darcs-hash:20060413192937-dae7b-579ddb7ae741d73bb8bf6e0c87a4bff1c18f7c46.gz
Diffstat (limited to 'Carpet/Carpet/src/modes.hh')
-rw-r--r--Carpet/Carpet/src/modes.hh74
1 files changed, 72 insertions, 2 deletions
diff --git a/Carpet/Carpet/src/modes.hh b/Carpet/Carpet/src/modes.hh
index 001e1cc7e..3b1cd873e 100644
--- a/Carpet/Carpet/src/modes.hh
+++ b/Carpet/Carpet/src/modes.hh
@@ -136,8 +136,8 @@ namespace Carpet {
bool done () const;
void step ();
};
-
-
+
+
// Compatibility defines for the mode iterators
@@ -315,6 +315,76 @@ namespace Carpet {
meta_mode_ = false; \
} while (false)
+
+
+ // Mode setters
+
+ class mglevel_setter {
+ cGH * cgh;
+ public:
+ mglevel_setter (cGH const * const cgh, int const ml);
+ ~mglevel_setter ();
+ };
+
+ class reflevel_setter {
+ cGH * cgh;
+ public:
+ reflevel_setter (cGH const * const cgh, int const rl);
+ ~reflevel_setter ();
+ };
+
+ class map_setter {
+ cGH * cgh;
+ public:
+ map_setter (cGH const * const cgh, int const m);
+ ~map_setter ();
+ };
+
+ class component_setter {
+ cGH * cgh;
+ public:
+ component_setter (cGH const * const cgh, int const c);
+ ~component_setter ();
+ };
+
+
+
+ // Compatibility defines for the mode setters
+
+#define ENTER_GLOBAL_MODE(cgh, ml) \
+ do { \
+ mglevel_setter mg_setter_(cgh, ml); \
+ {
+#define LEAVE_GLOBAL_MODE \
+ } \
+ } while (false)
+
+#define ENTER_LEVEL_MODE(cgh, rl) \
+ do { \
+ reflevel_setter ref_setter_(cgh, rl); \
+ {
+#define LEAVE_LEVEL_MODE \
+ } \
+ } while (false)
+
+#define ENTER_SINGLEMAP_MODE(cgh, m) \
+ do { \
+ map_setter m_setter_(cgh, m); \
+ {
+#define LEAVE_SINGLEMAP_MODE \
+ } \
+ } while (false)
+
+#define ENTER_LOCAL_MODE(cgh, c) \
+ do { \
+ component_setter c_setter_(cgh, c); \
+ {
+#define LEAVE_LOCAL_MODE \
+ } \
+ } while (false)
+
+
+
} // namespace Carpet
#endif // !defined(MODES_HH)