From f78423b46c2705ce579944c8b3b65efd20fd1801 Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <dmitri.naumov@ufz.de>
Date: Fri, 18 Jan 2019 16:09:47 +0100
Subject: [PATCH] [NL] INBTS; Add strict constructor checks.

Check vector sizes.
---
 .../IterationNumberBasedTimeStepping.cpp         | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/NumLib/TimeStepping/Algorithms/IterationNumberBasedTimeStepping.cpp b/NumLib/TimeStepping/Algorithms/IterationNumberBasedTimeStepping.cpp
index ef6566cc0a3..d9646d2150d 100644
--- a/NumLib/TimeStepping/Algorithms/IterationNumberBasedTimeStepping.cpp
+++ b/NumLib/TimeStepping/Algorithms/IterationNumberBasedTimeStepping.cpp
@@ -33,7 +33,21 @@ IterationNumberBasedTimeStepping::IterationNumberBasedTimeStepping(
       _initial_dt(initial_dt),
       _max_iter(_iter_times_vector.empty() ? 0 : _iter_times_vector.back())
 {
-    assert(iter_times_vector.size() == multiplier_vector.size());
+    if (_iter_times_vector.empty())
+    {
+        OGS_FATAL("Vector of iteration numbers must not be empty.");
+    }
+    if (_iter_times_vector.size() != _multiplier_vector.size())
+    {
+        OGS_FATAL(
+            "Vector of iteration numbers must be of the same size as the "
+            "vector of multipliers.");
+    }
+    if (!std::is_sorted(std::begin(_iter_times_vector),
+                        std::end(_iter_times_vector)))
+    {
+        OGS_FATAL("Vector of iteration numbers must be sorted.");
+    }
 }
 
 bool IterationNumberBasedTimeStepping::next(double const /*solution_error*/,
-- 
GitLab