From 70871c17c70ef59b33c36803d06f5e012d6e77b2 Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Mon, 3 Jul 2017 17:49:32 +0200 Subject: [PATCH] [dt] Stop program when a rejected time step gets step size unchanged. --- ProcessLib/UncoupledProcessesTimeLoop.cpp | 15 +++++++++++++++ ProcessLib/UncoupledProcessesTimeLoop.h | 1 + 2 files changed, 16 insertions(+) diff --git a/ProcessLib/UncoupledProcessesTimeLoop.cpp b/ProcessLib/UncoupledProcessesTimeLoop.cpp index 60a7afc6c0e..07ebb624fef 100644 --- a/ProcessLib/UncoupledProcessesTimeLoop.cpp +++ b/ProcessLib/UncoupledProcessesTimeLoop.cpp @@ -642,13 +642,28 @@ double UncoupledProcessesTimeLoop::computeTimeStepping( if (!is_initial_step) { if (all_process_steps_accepted) + { accepted_steps++; + _last_step_rejected = false; + } else { + if (std::abs(dt -prev_dt) < std::numeric_limits<double>::min() + && _last_step_rejected) + { + OGS_FATAL("\tThis time step is rejected and the new computed" + " step size is the same as\n" + "\tthat was just used.\n" + "\tSuggest to adjust the parameters of the time" + " stepper or try other time stepper.\n" + "\tThe program stops"); + } + if (t < _end_time) { t -= prev_dt; rejected_steps++; + _last_step_rejected = true; } } } diff --git a/ProcessLib/UncoupledProcessesTimeLoop.h b/ProcessLib/UncoupledProcessesTimeLoop.h index df0c9e058b3..61e0f796782 100644 --- a/ProcessLib/UncoupledProcessesTimeLoop.h +++ b/ProcessLib/UncoupledProcessesTimeLoop.h @@ -66,6 +66,7 @@ private: std::unique_ptr<Output> _output; std::vector<std::unique_ptr<SingleProcessData>> _per_process_data; + bool _last_step_rejected = false; const double _start_time; const double _end_time; -- GitLab