From 665170edf5b1346463e3e7d58bc6a4395deba45a Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Tue, 7 Aug 2018 16:16:23 +0200 Subject: Interp: allow the user to specify maximum reflevel for interpolation --- Carpet/CarpetInterp/src/interp.cc | 22 ++++++++++++++++++---- 1 file 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 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; -- cgit v1.2.3