23 double run_vdp_sdc(
const size_t nsteps,
const double dt,
const size_t nnodes,
24 const size_t niters,
const double nu,
const double x0,
32 auto factory = make_shared<encap::VectorFactory<double>>(2);
34 auto sweeper = make_shared<VdpSweeper<>>(nu, x0, y0);
36 sweeper->set_quadrature(quad);
37 sweeper->set_factory(factory);
45 auto q0 = sweeper->get_start_state();
46 sweeper->exact(q0, 0.0);
50 return sweeper->get_errors();
57 #ifndef PFASST_UNIT_TESTING
58 int main(
int argc,
char** argv)
60 const double x0 = 2.0,
62 const size_t nsteps = 1000;
63 const double dt = 50.0/( (double) nsteps);
64 const size_t nnodes = 3;
65 const size_t niters = 1;
66 const double nu = 5.0;
70 ML_LOG(INFO,
"Used timestep:" << dt);
virtual void run()
Run vanilla SDC.
int main(int argc, char **argv)
QuadratureType
Quadrature type descriptors.
virtual void add_level(shared_ptr< ISweeper< time >> sweeper, shared_ptr< ITransfer< time >> transfer=shared_ptr< ITransfer< time >>(nullptr), bool coarse=true)
Adding a level to the controller.
double run_vdp_sdc(const size_t nsteps, const double dt, const size_t nnodes, const size_t niters, const double nu, const double x0, const double y0, const quadrature::QuadratureType nodetype)
static void init(int argc, char **argv, std::function< void()> opts=nullptr, std::function< void()> logs=nullptr)
#define ML_LOG(level, x)
same as LOG(level, x) from easylogging++
virtual void set_duration(time t0, time tend, time dt, size_t niters)
Set basic time scope of the Controller.
shared_ptr< IQuadrature< precision > > quadrature_factory(const size_t nnodes, const QuadratureType qtype)
Instantiates quadrature handler for given number of nodes and type descriptor.
Gauss-Legendre quadrature
virtual void setup()
Basic setup routine for this controller.