9 #ifndef __brusselator_ode_h 10 #define __brusselator_ode_h 12 #include <amandus/brusselator/parameters.h> 13 #include <deal.II/algorithms/operator.h> 14 #include <deal.II/base/smartpointer.h> 15 #include <deal.II/lac/full_matrix.h> 16 #include <deal.II/lac/vector.h> 18 class Explicit :
public dealii::Algorithms::OperatorBase
22 virtual void operator()(dealii::AnyData& out,
const dealii::AnyData& in);
25 dealii::SmartPointer<const Brusselator::Parameters, class Explicit>
parameters;
35 const double ts = *in.read_ptr<
double>(
"Timestep");
36 dealii::Vector<double>& r = *out.entry<dealii::Vector<double>*>(0);
37 const dealii::Vector<double>& n = *in.read_ptr<dealii::Vector<double>>(
"Previous iterate");
38 const double u = n(0);
39 const double v = n(1);
41 r(1) = v - ts * (-
parameters->A * u + u * u * v);
48 virtual void operator()(dealii::AnyData& out,
const dealii::AnyData& in);
51 dealii::SmartPointer<const Brusselator::Parameters, class ImplicitResidual>
parameters;
61 const double ts = *in.read_ptr<
double>(
"Timestep");
62 dealii::Vector<double>& r = *out.entry<dealii::Vector<double>*>(0);
63 const dealii::Vector<double>& n = *in.read_ptr<dealii::Vector<double>>(
"Newton iterate");
64 const dealii::Vector<double>& p = *in.read_ptr<dealii::Vector<double>>(
"Previous time");
65 const double u = n(0);
66 const double v = n(1);
69 r(1) = v - p(1) + ts * (-
parameters->A * u + u * u * v);
76 virtual void operator()(dealii::AnyData& out,
const dealii::AnyData& in);
79 dealii::SmartPointer<const Brusselator::Parameters, class ImplicitSolve>
parameters;
89 const double ts = *in.read_ptr<
double>(
"Timestep");
90 dealii::Vector<double>& s = *out.entry<dealii::Vector<double>*>(0);
91 const dealii::Vector<double>& r = *in.read_ptr<dealii::Vector<double>>(
"Newton residual");
92 const dealii::Vector<double>& n = *in.read_ptr<dealii::Vector<double>>(
"Newton iterate");
93 const double u = n(0);
94 const double v = n(1);
96 dealii::deallog <<
"ImS " << ts << std::endl;
97 dealii::FullMatrix<double> M(2, 2);
98 M(0, 0) = 1. + ts * (-2. * u * v + (
parameters->A + 1.));
99 M(1, 1) = 1. + ts * u * u;
100 M(0, 1) = ts * (-u * u);
dealii::SmartPointer< const Brusselator::Parameters, class Explicit > parameters
Definition: ode.h:25
virtual void operator()(dealii::AnyData &out, const dealii::AnyData &in)
Definition: ode.h:87
Definition: brusselator/parameters.h:14
virtual void operator()(dealii::AnyData &out, const dealii::AnyData &in)
Definition: ode.h:33
virtual void operator()(dealii::AnyData &out, const dealii::AnyData &in)
Definition: ode.h:59
dealii::SmartPointer< const Brusselator::Parameters, class ImplicitResidual > parameters
Definition: ode.h:51
ImplicitResidual(const Brusselator::Parameters &par)
Definition: ode.h:54
dealii::SmartPointer< const Brusselator::Parameters, class ImplicitSolve > parameters
Definition: ode.h:79
Explicit(const Brusselator::Parameters &par)
Definition: ode.h:28
ImplicitSolve(const Brusselator::Parameters &par)
Definition: ode.h:82