99
1010using namespace std ;
1111
12- template <typename time = pfasst::time_precision>
13-
1412/* *
1513 * Sweeper for scalar test equation
1614 *
@@ -19,42 +17,41 @@ template<typename time = pfasst::time_precision>
1917 * with complex lambda using an IMEX scheme. Derived from the generic imex_sweeper.
2018 *
2119 */
20+ template <typename time = pfasst::time_precision>
2221class ScalarSweeper
2322 : public pfasst::encap::IMEXSweeper<time>
2423{
25-
2624 private:
2725 typedef pfasst::encap::Encapsulation<time> encap_type;
28-
26+
2927 // ! Define a type for a complex PFASST vector encapsulation.
3028 typedef pfasst::encap::VectorEncapsulation<complex <double >> complex_vector_type;
31-
32- // ! Parameter lambda and initial value u0
29+
30+ // ! Parameter lambda and initial value \\( u_0 \\)
3331 complex <double > lambda, u0;
34-
35- // ! The complex unit i = sqrt(-1 )
36- complex <double > i_complex = complex <double >(0 , 1 );
37-
32+
33+ // ! The complex unit \\( i = \\ sqrt{-1} \\ )
34+ const complex <double > i_complex = complex <double >(0 , 1 );
35+
3836 // ! Error at the final time. For the scalar example, an analytical solution is known.
3937 double error;
40-
41- // ! Counters for how often f_expl_eval, f_impl_eval and impl_solve are called.
38+
39+ // ! Counters for how often ` f_expl_eval`, ` f_impl_eval` and ` impl_solve` are called.
4240 size_t n_f_expl_eval, n_f_impl_eval, n_impl_solve;
4341
4442 public:
45-
4643 /* *
4744 * Generic constructor; initialize all function call counters with zero.
4845 * @param[in] lambda coefficient in test equation
49- * @param[in] u0initial value at \\( t=0 \\)
46+ * @param[in] u0 initial value at \\( t=0 \\)
5047 */
51- ScalarSweeper (const complex <double > lambda, const complex <double > u0)
48+ ScalarSweeper (const complex <double >& lambda, const complex <double >& u0)
5249 : lambda(lambda)
5350 , u0(u0)
51+ , error(0.0 )
5452 , n_f_expl_eval(0 )
5553 , n_f_impl_eval(0 )
5654 , n_impl_solve(0 )
57- , error(0.0 )
5855 {}
5956
6057 /* *
@@ -70,7 +67,8 @@ class ScalarSweeper
7067
7168 /* *
7269 * Compute error between last state and exact solution at time tand print it to cout
73- * @param[in] Time t
70+ *
71+ * @param[in] t Time
7472 */
7573 void echo_error (time t)
7674 {
@@ -115,9 +113,9 @@ class ScalarSweeper
115113 }
116114
117115 /* *
118- * Computes the exact solution \\( u_0 \\exp \\left( \\lambda*t \\right) \\)
119- * at a given time t.
120- * @param[in] Time t
116+ * Computes the exact solution \\( u_0 \\exp \\left( \\lambda*t \\right) \\) at a given time t.
117+ *
118+ * @param[in] t Time
121119 */
122120 void exact (complex_vector_type& q, time t)
123121 {
@@ -131,8 +129,7 @@ class ScalarSweeper
131129 }
132130
133131 /* *
134- * Evaluate the explicit part of the right hand side: Multiply with
135- * \\( \\text{imag}(\\lambda) \\)
132+ * Evaluate the explicit part of the right hand side: Multiply with \\( \\text{imag}(\\lambda) \\)
136133 */
137134 void f_expl_eval (shared_ptr<encap_type> f_encap,
138135 shared_ptr<encap_type> q_encap, time t) override
@@ -148,8 +145,7 @@ class ScalarSweeper
148145 }
149146
150147 /* *
151- * Evaluate the implicit part of the right hand side: Multiply with
152- * \\( \\text{real}(\\lambda) \\)
148+ * Evaluate the implicit part of the right hand side: Multiply with \\( \\text{real}(\\lambda) \\)
153149 */
154150 void f_impl_eval (shared_ptr<encap_type> f_encap,
155151 shared_ptr<encap_type> q_encap, time t) override
@@ -181,7 +177,7 @@ class ScalarSweeper
181177 // invert f_impl = multiply with inverse of real part of lambda
182178 double inv = 1.0 / (1.0 - double (dt) * real (this ->lambda ));
183179 q[0 ] = inv * rhs[0 ];
184-
180+
185181 // compute f_impl_eval of q[0], i.e. multiply with real(lambda)
186182 f[0 ] = real (this ->lambda ) * q[0 ];
187183
0 commit comments