21 #ifndef __BUTCHERSCHEME_H 22 #define __BUTCHERSCHEME_H 27 #include <dolfin/common/Variable.h> 28 #include <dolfin/function/Function.h> 29 #include <dolfin/fem/Form.h> 49 std::shared_ptr<Function> u,
50 std::shared_ptr<Constant>
t,
51 std::shared_ptr<Constant>
dt,
53 std::vector<int> jacobian_indices,
55 const std::string
name,
56 const std::string human_form,
57 std::vector<std::shared_ptr<const DirichletBC>>
bcs = {});
60 std::vector<std::vector<std::shared_ptr<const Form>>>&
stage_forms();
69 std::shared_ptr<Function>
solution();
72 std::shared_ptr<const Function>
solution()
const;
75 std::shared_ptr<Constant>
t();
78 std::shared_ptr<Constant>
dt();
84 unsigned int order()
const;
87 std::vector<std::shared_ptr<const DirichletBC>>
bcs()
const;
90 bool implicit(
unsigned int stage)
const;
100 virtual std::string
str(
bool verbose)
const;
105 void _check_arguments();
108 std::vector<std::vector<std::shared_ptr<const Form>>> _stage_forms;
111 std::shared_ptr<const Form> _last_stage;
114 std::vector<std::shared_ptr<Function>> _stage_solutions;
117 std::shared_ptr<Function> _u;
120 std::shared_ptr<Constant> _t;
123 std::shared_ptr<Constant> _dt;
126 std::vector<double> _dt_stage_offset;
129 std::vector<int> _jacobian_indices;
138 std::string _human_form;
141 std::vector<std::shared_ptr<const DirichletBC>> _bcs;
std::vector< std::vector< std::shared_ptr< const Form > > > & stage_forms()
Return the stages.
Definition: MultiStageScheme.cpp:54
std::string name() const
Return name.
Definition: Variable.cpp:71
Common base class for DOLFIN variables.
Definition: Variable.h:35
std::shared_ptr< const Form > last_stage()
Return the last stage.
Definition: MultiStageScheme.cpp:59
const std::vector< double > & dt_stage_offset() const
Return local timestep.
Definition: MultiStageScheme.cpp:89
virtual std::string str(bool verbose) const
Return informal string representation (pretty-print)
Definition: MultiStageScheme.cpp:136
bool implicit() const
Return true if the whole scheme is implicit.
Definition: MultiStageScheme.cpp:118
int jacobian_index(unsigned int stage) const
Definition: MultiStageScheme.cpp:123
std::shared_ptr< Constant > t()
Return local time.
Definition: MultiStageScheme.cpp:79
std::vector< std::shared_ptr< const DirichletBC > > bcs() const
Return boundary conditions.
Definition: MultiStageScheme.cpp:99
unsigned int order() const
Return the order of the scheme.
Definition: MultiStageScheme.cpp:94
MultiStageScheme(std::vector< std::vector< std::shared_ptr< const Form >>> stage_forms, std::shared_ptr< const Form > last_stage, std::vector< std::shared_ptr< Function > > stage_solutions, std::shared_ptr< Function > u, std::shared_ptr< Constant > t, std::shared_ptr< Constant > dt, std::vector< double > dt_stage_offset, std::vector< int > jacobian_indices, unsigned int order, const std::string name, const std::string human_form, std::vector< std::shared_ptr< const DirichletBC >> bcs={})
Constructor.
Definition: MultiStageScheme.cpp:32
Place-holder for forms and solutions for a multi-stage Butcher tableau based method.
Definition: MultiStageScheme.h:41
std::shared_ptr< Function > solution()
Return solution variable.
Definition: MultiStageScheme.cpp:69
std::shared_ptr< Constant > dt()
Return local timestep.
Definition: MultiStageScheme.cpp:84
std::vector< std::shared_ptr< Function > > & stage_solutions()
Return stage solutions.
Definition: MultiStageScheme.cpp:64