@@ -22,7 +22,8 @@ namespace pfasst
2222 {
2323 template <typename scalar>
2424 error_map<scalar> run_boris_sdc (const size_t nsteps, const scalar dt, const size_t nnodes,
25- const size_t nparticles, const size_t niters)
25+ const size_t nparticles, const size_t niters,
26+ const double abs_res_tol, const double rel_res_tol)
2627 {
2728 MLSDC<> controller;
2829
@@ -33,6 +34,7 @@ namespace pfasst
3334 make_shared<bindings::WrapperSimplePhysicsSolver<double , double >>();
3435 bindings::setup (dynamic_pointer_cast<bindings::WrapperSimplePhysicsSolver<double , double >>(impl_solver));
3536
37+ // fine level
3638 auto quad1 = quadrature::quadrature_factory<double >(nnodes,
3739 quadrature::QuadratureType::GaussLobatto);
3840 auto factory1 = make_shared<ParticleCloudFactory<double >>(nparticles, 3 , mass, charge);
@@ -43,8 +45,10 @@ namespace pfasst
4345 auto transfer1 = make_shared<InjectiveTransfer<double , double >>();
4446 sweeper1->set_quadrature (quad1);
4547 sweeper1->set_factory (factory1);
48+ sweeper1->set_residual_tolerances (abs_res_tol, rel_res_tol);
4649 controller.add_level (sweeper1, transfer1);
4750
51+ // coarse level
4852 auto quad2 = quadrature::quadrature_factory<double >(nnodes,
4953 quadrature::QuadratureType::GaussLobatto);
5054 auto factory2 = make_shared<ParticleCloudFactory<double >>(nparticles, 3 , mass, charge);
@@ -95,13 +99,17 @@ int main(int argc, char** argv)
9599 const size_t nnodes = pfasst::config::get_value<size_t >(" num_nodes" , 5 );
96100 const size_t nparticles = pfasst::config::get_value<size_t >(" num_particles" , 1 );
97101 const size_t niters = pfasst::config::get_value<size_t >(" num_iter" , 2 );
102+ const double abs_res_tol = pfasst::config::get_value<double >(" abs_res_tol" , 0.0 );
103+ const double rel_res_tol = pfasst::config::get_value<double >(" rel_res_tol" , 0.0 );
98104
99105 LOG (INFO) << " nsteps=" << nsteps << " , "
100106 << " dt=" << dt << " , "
101107 << " nnodes=" << nnodes << " , "
102108 << " nparticles=" << nparticles << " , "
103- << " niter=" << niters;
109+ << " niter=" << niters << " , "
110+ << " abs res=" << abs_res_tol << " , "
111+ << " rel res=" << rel_res_tol;
104112
105- pfasst::examples::boris::run_boris_sdc<double >(nsteps, dt, nnodes, nparticles, niters);
113+ pfasst::examples::boris::run_boris_sdc<double >(nsteps, dt, nnodes, nparticles, niters, abs_res_tol, rel_res_tol );
106114}
107115#endif
0 commit comments