Skip to content

Commit 586c356

Browse files
committed
tests: Add RelativeAdaptiveErrorTest to test_advection_diffusion.cpp.
Signed-off-by: Matthew Emmett <[email protected]>
1 parent a3553f7 commit 586c356

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

examples/advection_diffusion/vanilla_sdc.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ namespace pfasst
2323
{
2424
namespace advection_diffusion
2525
{
26-
error_map run_vanilla_sdc(double abs_residual_tol)
26+
error_map run_vanilla_sdc(double abs_residual_tol, double rel_residual_tol=0.0)
2727
{
2828
SDC<> sdc;
2929

@@ -41,7 +41,7 @@ namespace pfasst
4141

4242
sweeper->set_quadrature(quad);
4343
sweeper->set_factory(factory);
44-
sweeper->set_residual_tolerances(abs_residual_tol, 0.0);
44+
sweeper->set_residual_tolerances(abs_residual_tol, rel_residual_tol);
4545

4646
sdc.add_level(sweeper);
4747
sdc.set_duration(0.0, nsteps*dt, dt, niters);

tests/examples/advection_diffusion/test_advection_diffusion.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,29 @@ TEST(ErrorTest, VanillaSDC)
7070
}
7171
}
7272

73+
TEST(RelativeAdaptiveErrorTest, VanillaSDC)
74+
{
75+
typedef error_map::value_type vtype;
76+
77+
auto get_iter = [](const vtype x) { return get<1>(get<0>(x)); };
78+
auto get_error = [](const vtype x) { return get<1>(x); };
79+
80+
auto errors = run_vanilla_sdc(0.0, 1.e-6);
81+
auto max_iter = get_iter(*std::max_element(errors.begin(), errors.end(),
82+
[get_iter](const vtype p1, const vtype p2) { return get_iter(p1) < get_iter(p2); }));
83+
84+
vector<double> tol = { 5e-8, 5e-8, 5e-8, 5e-8 };
85+
vector<double> err;
86+
for (auto& x: errors) {
87+
if (get_iter(x) == max_iter) {
88+
err.push_back(get_error(x));
89+
}
90+
}
91+
92+
EXPECT_THAT(err, testing::Pointwise(DoubleLess(), tol));
93+
ASSERT_EQ(max_iter, (size_t) 2);
94+
}
95+
7396
TEST(ErrorTest, SerialMLSDC)
7497
{
7598
typedef error_map::value_type vtype;

0 commit comments

Comments
 (0)