Skip to content
Snippets Groups Projects
Commit 0f831231 authored by Christoph Lehmann's avatar Christoph Lehmann Committed by Dmitri Naumov
Browse files

[T] added assertion, use logog

parent 034e434b
No related branches found
No related tags found
No related merge requests found
......@@ -10,13 +10,12 @@
#ifdef CVODE_FOUND
#include <gtest/gtest.h>
#include <logog/include/logog.hpp>
#include "MathLib/ODE/CVodeSolver.h"
#include "MathLib/ODE/OdeSolver.h"
#include "MathLib/ODE/ConcreteOdeSolver.h"
#include <cstdio>
bool f(const double,
MathLib::MappedConstVector<1> const y,
MathLib::MappedVector<1> ydot)
......@@ -78,19 +77,17 @@ TEST(MathLibCVodeTest, Exponential)
{
const double time = dt * i;
ode_solver->solve(time);
ASSERT_TRUE(ode_solver->solve(time));
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, 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));
DBUG("t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g",
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);
EXPECT_NEAR(time, time_reached, std::numeric_limits<double>::epsilon());
}
}
......@@ -125,19 +122,17 @@ TEST(MathLibCVodeTest, ExponentialExtraData)
{
const double time = dt * i;
ode_solver->solve(time);
ASSERT_TRUE(ode_solver->solve(time));
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, 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));
DBUG("t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g",
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);
EXPECT_NEAR(time, time_reached, std::numeric_limits<double>::epsilon());
}
ode_solver->setFunction(f_lambda, nullptr);
......@@ -146,19 +141,17 @@ TEST(MathLibCVodeTest, ExponentialExtraData)
{
const double time = dt * i;
ode_solver->solve(time);
ASSERT_TRUE(ode_solver->solve(time));
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, 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));
DBUG("t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g",
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);
EXPECT_NEAR(time, time_reached, std::numeric_limits<double>::epsilon());
}
}
......@@ -186,19 +179,17 @@ TEST(MathLibCVodeTest, ExponentialWithJacobian)
{
const double time = dt * i;
ode_solver->solve(time);
ASSERT_TRUE(ode_solver->solve(time));
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, 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));
DBUG("t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g",
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);
EXPECT_NEAR(time, time_reached, std::numeric_limits<double>::epsilon());
}
}
......@@ -229,19 +220,17 @@ TEST(MathLibCVodeTest, ExponentialWithJacobianNewton)
{
const double time = dt * i;
ode_solver->solve(time);
ASSERT_TRUE(ode_solver->solve(time));
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, 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));
DBUG("t: %14.7g, y: %14.7g, diff: %14.7g, y_dot: %14.7g, diff: %14.7g",
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);
EXPECT_NEAR(time, time_reached, std::numeric_limits<double>::epsilon());
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment