From 39ee9c068e85b73b8f4f2ff75d20532bb9cdd52c Mon Sep 17 00:00:00 2001
From: Dmitri Naumov <dmitri.naumov@ufz.de>
Date: Fri, 18 Mar 2016 13:02:27 +0100
Subject: [PATCH] [T] ODE: Add calls to ode_solver->getYDot().

---
 Tests/MathLib/TestCVode.cpp | 35 +++++++++++++++++++++++++----------
 1 file changed, 25 insertions(+), 10 deletions(-)

diff --git a/Tests/MathLib/TestCVode.cpp b/Tests/MathLib/TestCVode.cpp
index 9175181f00a..16ca676c3b5 100644
--- a/Tests/MathLib/TestCVode.cpp
+++ b/Tests/MathLib/TestCVode.cpp
@@ -80,9 +80,12 @@ TEST(MathLibCVodeTest, Exponential)
 
 		auto const y = ode_solver->getSolution();
 		double time_reached = ode_solver->getTime();
+		auto const y_dot = ode_solver->getYDot(time_reached, y);
 
-		std::printf("t: %14.7g, y: %14.7g, diff: %14.7g\n", time_reached, y[0],
-		            y[0] - exp(-15.0 * time_reached));
+		std::printf(
+		    "t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g\n",
+		    time_reached, y[0], y[0] - exp(-15.0 * time_reached), y_dot[0],
+		    y_dot[0] + 15.0 * exp(-15.0 * time_reached));
 
 		ASSERT_NEAR(time, time_reached, std::numeric_limits<double>::epsilon());
 		// std::printf("time: %g\n", time_reached);
@@ -117,9 +120,12 @@ TEST(MathLibCVodeTest, ExponentialExtraData)
 
 		auto const y = ode_solver->getSolution();
 		double time_reached = ode_solver->getTime();
+		auto const y_dot = ode_solver->getYDot(time_reached, y);
 
-		std::printf("t: %14.7g, y: %14.7g, diff: %14.7g\n", time_reached, y[0],
-		            y[0] - exp(-15.0 * time_reached));
+		std::printf(
+		    "t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g\n",
+		    time_reached, y[0], y[0] - exp(-15.0 * time_reached), y_dot[0],
+		    y_dot[0] + 15.0 * exp(-15.0 * time_reached));
 
 		ASSERT_NEAR(time, time_reached, std::numeric_limits<double>::epsilon());
 		// std::printf("time: %g\n", time_reached);
@@ -135,9 +141,12 @@ TEST(MathLibCVodeTest, ExponentialExtraData)
 
 		auto const y = ode_solver->getSolution();
 		double time_reached = ode_solver->getTime();
+		auto const y_dot = ode_solver->getYDot(time_reached, y);
 
-		std::printf("t: %14.7g, y: %14.7g, diff: %14.7g\n", time_reached, y[0],
-		            y[0] - exp(-15.0 * time_reached));
+		std::printf(
+		    "t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g\n",
+		    time_reached, y[0], y[0] - exp(-15.0 * time_reached), y_dot[0],
+		    y_dot[0] + 15.0 * exp(-15.0 * time_reached));
 
 		ASSERT_NEAR(time, time_reached, std::numeric_limits<double>::epsilon());
 		// std::printf("time: %g\n", time_reached);
@@ -172,9 +181,12 @@ TEST(MathLibCVodeTest, ExponentialWithJacobian)
 
 		auto const y = ode_solver->getSolution();
 		double time_reached = ode_solver->getTime();
+		auto const y_dot = ode_solver->getYDot(time_reached, y);
 
-		std::printf("t: %14.7g, y: %14.7g, diff: %14.7g\n", time_reached, y[0],
-		            y[0] - exp(-15.0 * time_reached));
+		std::printf(
+		    "t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g\n",
+		    time_reached, y[0], y[0] - exp(-15.0 * time_reached), y_dot[0],
+		    y_dot[0] + 15.0 * exp(-15.0 * time_reached));
 
 		ASSERT_NEAR(time, time_reached, std::numeric_limits<double>::epsilon());
 		// std::printf("time: %g\n", time_reached);
@@ -212,9 +224,12 @@ TEST(MathLibCVodeTest, ExponentialWithJacobianNewton)
 
 		auto const y = ode_solver->getSolution();
 		double time_reached = ode_solver->getTime();
+		auto const y_dot = ode_solver->getYDot(time_reached, y);
 
-		std::printf("t: %14.7g, y: %14.7g, diff: %14.7g\n", time_reached, y[0],
-		            y[0] - exp(-15.0 * time_reached));
+		std::printf(
+		    "t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g\n",
+		    time_reached, y[0], y[0] - exp(-15.0 * time_reached), y_dot[0],
+		    y_dot[0] + 15.0 * exp(-15.0 * time_reached));
 
 		ASSERT_NEAR(time, time_reached, std::numeric_limits<double>::epsilon());
 		// std::printf("time: %g\n", time_reached);
-- 
GitLab