|
16 | 16 | /* |
17 | 17 | * A simple run routine with preset parameters |
18 | 18 | */ |
19 | | -double run_scalar_sdc() |
20 | | -{ |
21 | | - pfasst::SDC<> sdc; |
22 | | - |
23 | | - const size_t nsteps = 2; |
24 | | - const double dt = 1.0; |
25 | | - const size_t nnodes = 4; |
26 | | - const size_t niters = 6; |
27 | | - const complex<double> lambda = complex<double>(-1.0, 1.0); |
28 | | - const complex<double> y0 = complex<double>(1.0, 0.0); |
29 | | - |
30 | | - // so far, only lobatto nodes appear to be working |
31 | | - auto nodes = pfasst::compute_nodes(nnodes, "gauss-lobatto"); |
32 | | - auto factory = make_shared<pfasst::encap::VectorFactory<complex<double>>>(1); |
33 | | - auto sweeper = make_shared<ScalarSweeper<>>(lambda, y0); |
34 | | - |
35 | | - sweeper->set_nodes(nodes); |
36 | | - sweeper->set_factory(factory); |
37 | | - |
38 | | - sdc.add_level(sweeper); |
39 | | - sdc.set_duration(0.0, dt * nsteps, dt, niters); |
40 | | - sdc.setup(); |
41 | 19 |
|
42 | | - auto q0 = sweeper->get_state(0); |
43 | | - sweeper->exact(q0, 0.0); |
44 | | - |
45 | | - sdc.run(); |
46 | | - |
47 | | - return sweeper->get_errors(); |
48 | | -} |
49 | | - |
50 | | -/* |
51 | | - * Overloaded run routine, which requires necessary parameters to be passed as arguments |
52 | | - */ |
53 | 20 | double run_scalar_sdc(const size_t nsteps, const double dt, const size_t nnodes, |
54 | 21 | const size_t niters, const complex<double> lambda) |
55 | 22 | { |
@@ -79,6 +46,12 @@ double run_scalar_sdc(const size_t nsteps, const double dt, const size_t nnodes, |
79 | 46 | #ifndef PFASST_UNIT_TESTING |
80 | 47 | int main(int /*argc*/, char** /*argv*/) |
81 | 48 | { |
82 | | - run_scalar_sdc(); |
| 49 | + const size_t nsteps = 2; |
| 50 | + const double dt = 1.0; |
| 51 | + const size_t nnodes = 4; |
| 52 | + const size_t niters = 6; |
| 53 | + const complex<double> lambda = complex<double>(-1.0, 1.0); |
| 54 | + |
| 55 | + run_scalar_sdc(nsteps, dt, nnodes, niters, lambda); |
83 | 56 | } |
84 | 57 | #endif |
0 commit comments