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;
Place-holder for forms and solutions for a multi-stage Butcher tableau based method.
Definition MultiStageScheme.h:42
const std::vector< double > & dt_stage_offset() const
Return local timestep.
Definition MultiStageScheme.cpp:89
std::shared_ptr< Constant > dt()
Return local timestep.
Definition MultiStageScheme.cpp:84
int jacobian_index(unsigned int stage) const
Definition MultiStageScheme.cpp:123
std::shared_ptr< Constant > t()
Return local time.
Definition MultiStageScheme.cpp:79
unsigned int order() const
Return the order of the scheme.
Definition MultiStageScheme.cpp:94
std::shared_ptr< Function > solution()
Return solution variable.
Definition MultiStageScheme.cpp:69
std::shared_ptr< const Form > last_stage()
Return the last stage.
Definition MultiStageScheme.cpp:59
std::vector< std::vector< std::shared_ptr< const Form > > > & stage_forms()
Return the stages.
Definition MultiStageScheme.cpp:54
std::vector< std::shared_ptr< Function > > & stage_solutions()
Return stage solutions.
Definition MultiStageScheme.cpp:64
std::vector< std::shared_ptr< const DirichletBC > > bcs() const
Return boundary conditions.
Definition MultiStageScheme.cpp:99
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
Common base class for DOLFIN variables.
Definition Variable.h:36
std::string name() const
Return name.
Definition Variable.cpp:71