PFASST++
test_boris_sweeper.cpp
Go to the documentation of this file.
1 #include <gtest/gtest.h>
2 #include <gmock/gmock.h>
3 using namespace ::testing;
4 
5 #include "pfasst/logging.hpp"
6 
7 #define PFASST_UNIT_TESTING
8 #include "../examples/boris/boris_sweeper.hpp"
9 #include "../examples/boris/boris_sdc.cpp"
10 #undef PFASST_UNIT_TESTING
11 using namespace pfasst::examples::boris;
12 
13 
14 TEST(EnergyDriftAndResidual, SingleStep)
15 {
16  const size_t num_iter = 9;
17  auto errors_map = run_boris_sdc<double>(1, 0.015625, 5, 1, num_iter+1, 0.0, 0.0);
18  ASSERT_THAT(errors_map, SizeIs(num_iter+1));
19 
20  auto final_error = errors_map.rbegin()->second;
21 
22  EXPECT_THAT(final_error.e_drift, DoubleNear(0.0, 2e-12));
23  EXPECT_THAT(final_error.res, DoubleNear(0.0, 1.5e-14));
24 }
25 
26 TEST(EnergyDriftAndResidual, MultiStep)
27 {
28  const size_t num_iter = 9;
29  const size_t num_steps = 10;
30  auto errors_map = run_boris_sdc<double>(num_steps, 0.015625, 5, 1, num_iter+1, 0.0, 0.0);
31  ASSERT_THAT(errors_map, SizeIs((num_iter+1) * num_steps));
32 
33  auto final_error = errors_map.rbegin()->second;
34 
35  EXPECT_THAT(final_error.e_drift, DoubleNear(0.0, 1.1e-11));
36  EXPECT_THAT(final_error.res, DoubleNear(0.0, 1.5e-14));
37 }
38 
39 
40 int main(int argc, char** argv)
41 {
42  testing::InitGoogleTest(&argc, argv);
43  pfasst::log::start_log(argc, argv);
44  return RUN_ALL_TESTS();
45 }
static void start_log(int argc, char **argv)
Starts easylogging++ with given arguments and loads configuration.
Definition: logging.hpp:518
TEST(EnergyDriftAndResidual, SingleStep)
int main(int argc, char **argv)