aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2018-08-07 16:16:23 +0200
committerAnton Khirnov <anton@khirnov.net>2018-08-07 16:16:23 +0200
commit665170edf5b1346463e3e7d58bc6a4395deba45a (patch)
treea33d767fa56a09c4a3588f341d03f8be27d0c7c9
parentb9baa0a97a4e6d7436dd602c68118dbb6403e938 (diff)
Interp: allow the user to specify maximum reflevel for interpolation
-rw-r--r--Carpet/CarpetInterp/src/interp.cc22
1 files changed, 18 insertions, 4 deletions
diff --git a/Carpet/CarpetInterp/src/interp.cc b/Carpet/CarpetInterp/src/interp.cc
index 0e1474e21..d5283bf62 100644
--- a/Carpet/CarpetInterp/src/interp.cc
+++ b/Carpet/CarpetInterp/src/interp.cc
@@ -343,9 +343,10 @@ namespace CarpetInterp {
vector<int> num_time_derivs;
CCTK_REAL current_time, delta_time;
int prolongation_order_time;
+ int table_maxrl = -1;
{
- int const iret = extract_parameter_table_options
+ int iret = extract_parameter_table_options
(cctkGH,
param_table_handle,
N_interp_points, N_input_arrays, N_output_arrays,
@@ -356,6 +357,14 @@ namespace CarpetInterp {
timer_CDI->stop (0);
return iret;
}
+
+ iret = Util_TableGetInt (param_table_handle,
+ &table_maxrl, "max_reflevel");
+ if (iret == UTIL_ERROR_TABLE_NO_SUCH_KEY) {
+ } else if (iret != 1) {
+ CCTK_WARN (CCTK_WARN_ALERT, "internal error");
+ return -1;
+ }
}
// Find range of refinement levels
@@ -365,9 +374,14 @@ namespace CarpetInterp {
arrdata.AT(coord_group).AT(m).hh->reflevels());
}
int const minrl = want_global_mode ? 0 : reflevel;
- int const maxrl = want_global_mode ?
- arrdata.AT(coord_group).AT(0).hh->reflevels() : reflevel+1;
- //int maxrl = reflevel + 1;
+
+ int maxrl;
+ if (table_maxrl >= 0)
+ maxrl = table_maxrl;
+ else if (want_global_mode)
+ maxrl = arrdata.AT(coord_group).AT(0).hh->reflevels();
+ else
+ maxrl = reflevel+1;
// Find maximum number of components over all levels and maps
int maxncomps = 0;