aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/ggf.cc
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2012-09-04 14:29:35 -0400
committerBarry Wardell <barry.wardell@gmail.com>2012-09-11 18:23:36 +0100
commit8d514c8daac1e54e09b34f3bfdd9dc820a5f9a81 (patch)
tree942cc7c203402f28006476bab6310bc3f0b1081b /Carpet/CarpetLib/src/ggf.cc
parentfecf73f5fe4584c2023f9d9a1fdf89e9f4a25e0d (diff)
CarpetLib: Support prolongating faces
Add infrastructure to prolongate faces of grid functions. This may be used during refluxing to apply part of the correction to the fine grid.
Diffstat (limited to 'Carpet/CarpetLib/src/ggf.cc')
-rw-r--r--Carpet/CarpetLib/src/ggf.cc26
1 files changed, 26 insertions, 0 deletions
diff --git a/Carpet/CarpetLib/src/ggf.cc b/Carpet/CarpetLib/src/ggf.cc
index dbabfe1c7..17f9d9406 100644
--- a/Carpet/CarpetLib/src/ggf.cc
+++ b/Carpet/CarpetLib/src/ggf.cc
@@ -516,6 +516,32 @@ ref_reflux_all (comm_state & state,
+// Reflux-prolongate a refinement level
+void
+ggf::
+ref_reflux_prolongate_all (comm_state & state,
+ int const tl, int const rl, int const ml,
+ int const dir, int const face)
+{
+ static Timer timer ("ref_reflux_prolongate_all");
+ timer.start ();
+ // Require same times
+ static_assert (abs(0.1) > 0, "Function CarpetLib::abs has wrong signature");
+ assert (abs(t.get_time(ml,rl,tl) - t.get_time(ml,rl-1,tl)) <=
+ 1.0e-8 * (1.0 + abs(t.get_time(ml,rl,tl))));
+ islab slabinfo;
+ slabinfo.is_centered = 1 - ivect::dir(dir);
+ transfer_from_all (state,
+ tl,rl,ml,
+ dh::fast_dboxes::fast_ref_refl_prol_sendrecv[dir][face],
+ tl,rl-1,ml,
+ false, false,
+ &slabinfo);
+ timer.stop (0);
+}
+
+
+
// Transfer regions of all components
void
ggf::