aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/data.cc
diff options
context:
space:
mode:
authorChristian Reisswig <reisswig@tapir.caltech.edu>2011-06-11 11:27:23 -0700
committerBarry Wardell <barry.wardell@gmail.com>2011-12-14 18:26:29 +0000
commit539e5cecb0bc4c41694389160c2790660212f25a (patch)
treefe4485c9db0f6798635851675624029d535cb221 /Carpet/CarpetLib/src/data.cc
parent02b7f7c4dab0d4bbb281c544439362379d77bd25 (diff)
Select 2nd order cc-eno for 3rd order interpolation since stencil radius is larger.
This is consistent with vertex-centered eno. The trouble is that Carpet derives the stencil radius from the interpolation order imposing Lagrange interpolation. I also commented out the code that checks whether we have to switch down to first order. According to Shu, this is not necessary! This way interpolation runs faster.
Diffstat (limited to 'Carpet/CarpetLib/src/data.cc')
-rw-r--r--Carpet/CarpetLib/src/data.cc19
1 files changed, 16 insertions, 3 deletions
diff --git a/Carpet/CarpetLib/src/data.cc b/Carpet/CarpetLib/src/data.cc
index cac634dde..58bb2adf1 100644
--- a/Carpet/CarpetLib/src/data.cc
+++ b/Carpet/CarpetLib/src/data.cc
@@ -836,12 +836,25 @@ transfer_prolongate (data const * const src,
ibbox3 const & restrict regbbox) =
{
& prolongate_3d_cc_eno_rf2<T,2>,
- & prolongate_3d_cc_eno_rf2<T,3>
+ & prolongate_3d_cc_eno_rf2<T,2>, // note that we cheat here: order is still 2 even though 3 was requested!
+ & prolongate_3d_cc_eno_rf2<T,3>, // note that we cheat here: order is 3 even though 4 was requested!
+ & prolongate_3d_cc_eno_rf2<T,3> // note that we cheat here: order is 3 even though 5 was requested!
+ // have cheated here for two reasons: first, the ENO prolongation operator stencil radius is larger than Lagrange (and dh.cc assumes that the stencil goes as order_space/2!),
+ // and second, we want to allow spacetime interpolation to be of higher order while keeping the implemeneted ENO order!
};
- if (order_space < 2 or order_space > 3) {
+ if (order_space < 2 or order_space > 5) {
CCTK_WARN (CCTK_WARN_ABORT,
- "There is no cell-centred stencil for op=\"ENO\" with order_space not in {2,3}");
+ "There is no cell-centred stencil for op=\"ENO\" with order_space not in {2,3,4,5}");
}
+ /*if (order_space == 3) {
+ CCTK_WARN (1,
+ "Currently, in order to keep a consistent stencil radius in the buffer zone, we use 2nd order ENO. For third order ENO set order_space to 4 or 5!");
+ }
+ if (order_space > 3) {
+ CCTK_WARN (1,
+ "Currently, in order to keep a consistent stencil radius in the buffer zone, we use 3rd order ENO. There are no higher orders than 3rd order implemented!");
+ }*/
+
call_operator<T> (the_operators[order_space-2],
static_cast <T const *> (src->storage()),
src->shape(),