User: szilagyi Date: 2013/11/22 01:43 PM
Modified: /PITTNullCode/SphericalHarmonicReconGen/ param.ccl /PITTNullCode/SphericalHarmonicReconGen/src/ read.cc, startup.cc
Log: allow for not setting a time-offset automatically
File Changes:
Directory: /PITTNullCode/SphericalHarmonicReconGen/ ===================================================
File [modified]: param.ccl Delta lines: +4 -0 =================================================================== --- PITTNullCode/SphericalHarmonicReconGen/param.ccl 2013-11-12 20:08:47 UTC (rev 102) +++ PITTNullCode/SphericalHarmonicReconGen/param.ccl 2013-11-22 19:43:28 UTC (rev 103) @@ -12,6 +12,10 @@ SpEC-H5-v2 :: "SpEC-HDF5 format (v2): Data is stored in HDF5 files grouped according to new SpEC output." } "ASCII"
+BOOLEAN disable_auto_time_offset "Should the automatically determined time-offset be diabled?" +{ +} no + CCTK_INT sphere_number "the sphere number (if multiple spheres are present in one file) that corresponds to the worldtube radius NullSHRExtract::cr" { 0:* :: "positive"
Directory: /PITTNullCode/SphericalHarmonicReconGen/src/ =======================================================
File [modified]: read.cc Delta lines: +15 -9 =================================================================== --- PITTNullCode/SphericalHarmonicReconGen/src/read.cc 2013-11-12 20:08:47 UTC (rev 102) +++ PITTNullCode/SphericalHarmonicReconGen/src/read.cc 2013-11-22 19:43:28 UTC (rev 103) @@ -24,20 +24,21 @@
extern "C" { - void load_modes(const CCTK_REAL time, const bool time_derivative_in_file) + void load_modes(const CCTK_REAL time, const bool time_derivative_in_file, const bool allow_offcentered_time_stencils) { // identify iteration which corresponds to the time just before the target time "time" - const int iteration = SHR::C[0]->get_iteration(time + SHR::initial_time_in_file); + int iteration = SHR::C[0]->get_iteration(time + SHR::initial_time_in_file);
//cout << "Target-Time = " << time + SHR::initial_time_in_file << ". Iteration (time) just before target time: " << iteration << " (" << SHR::db[0]->time(iteration) << ")" << endl;
if (iteration < 0) { - cout << "Error: iteration = -1" << endl; + cout << "Error: iteration = -1. time = "<<time << ", SHR::initial_time_in_file="<<SHR::initial_time_in_file << endl; assert(iteration >= 0); } - + if (iteration < 2) { - cout << "Error: there are not enough iterations before interpolation target time to do the interpolation!" << endl; + if(allow_offcentered_time_stencils) iteration=2; + else cout << "Error: there are not enough iterations before interpolation target time to do the interpolation!" << endl; assert(iteration >= 2); }
@@ -175,7 +176,12 @@ initial_time+cctk_time, initial_time+cctk_time+cctk_delta_time, initial_time+cctk_time+2*cctk_delta_time }; - + + // If the automatically computed time-offset is disabled, + // we allow for off-centered stencils at the beginning. + // so that, when the data in the file starts at t=t0, + // the evolution can also start at t=t0, implying off-centered + // time-stencils very early in the run. if (!time_derivative_in_file) { // interpolate coefficients to all stencil points given by u[...] @@ -183,14 +189,14 @@ if (time_fd_order == 2) for (int i=0; i < 3; ++i) { - load_modes(u[i], false); + load_modes(u[i], false, disable_auto_time_offset); interpolate(u[i], 2-i, false); }
if (time_fd_order == 4) for (int i=0; i < 5; ++i) { - load_modes(u[i], false); + load_modes(u[i], false, disable_auto_time_offset); interpolate(u[i], 4-i, false); } @@ -200,7 +206,7 @@ // just time interpolate coefficients to u[2]
// load all modes centered around time u[2] to internal "coeff_in_file" array... - load_modes(u[2], true); + load_modes(u[2], true, disable_auto_time_offset);
// ...and use these coeffs to setup internal interpolated coeffs "coeff" // and copy obtained value to timelevel 0
File [modified]: startup.cc Delta lines: +4 -3 =================================================================== --- PITTNullCode/SphericalHarmonicReconGen/src/startup.cc 2013-11-12 20:08:47 UTC (rev 102) +++ PITTNullCode/SphericalHarmonicReconGen/src/startup.cc 2013-11-22 19:43:28 UTC (rev 103) @@ -196,15 +196,16 @@ if (time_interpolate) { n_timelevels_for_coeffs_in_file = 6; // 6 for 5th-order interpolation - - SHR::initial_time_in_file = SHR::db[0]->time(timelevel+2); + if(disable_auto_time_offset==0) + SHR::initial_time_in_file = SHR::db[0]->time(timelevel+2); ostringstream s; s << "Initial nominal time found in file is t_0 = " << SHR::initial_time_in_file << " corresponding to timestep n = " << timelevel+2 << " (counting from 0)."; CCTK_INFO(s.str().c_str()); } else { - SHR::initial_time_in_file = SHR::db[0]->time(timelevel); + if(disable_auto_time_offset==0) + SHR::initial_time_in_file = SHR::db[0]->time(timelevel); ostringstream s; s << "Initial nominal time found in file is t_0 = " << SHR::initial_time_in_file << " corresponding to timestep n = " << timelevel << " (counting from 0)."; CCTK_INFO(s.str().c_str());
commits@lists.einsteintoolkit.org