1 #ifndef DUNE_PDELAB_GRIDOPERATOR_ONESTEP_LOCALASSEMBLER_HH 2 #define DUNE_PDELAB_GRIDOPERATOR_ONESTEP_LOCALASSEMBLER_HH 4 #include <dune/typetree/typetree.hh> 27 template<
typename GO,
typename LA0,
typename LA1>
30 typename GO::Traits::MatrixBackend,
31 typename GO::Traits::TrialGridFunctionSpaceConstraints,
32 typename GO::Traits::TestGridFunctionSpaceConstraints>
44 typename GO::Traits::MatrixBackend,
45 typename GO::Traits::TrialGridFunctionSpaceConstraints,
46 typename GO::Traits::TestGridFunctionSpaceConstraints>
Base;
68 static_assert((std::is_same<
typename LA0::Traits::Jacobian::Pattern,
69 typename LA1::Traits::Jacobian::Pattern>::
value),
70 "Received two local assemblers which are non-compatible " 71 "due to different matrix pattern types");
72 static_assert((std::is_same<
typename LA0::Traits::Jacobian,
73 typename LA1::Traits::Jacobian>::
value),
74 "Received two local assemblers which are non-compatible " 75 "due to different jacobian types");
76 static_assert((std::is_same<
typename LA0::Traits::Solution,
77 typename LA1::Traits::Solution>::
value),
78 "Received two local assemblers which are non-compatible " 79 "due to different solution vector types");
80 static_assert((std::is_same<
typename LA0::Traits::Residual,
81 typename LA1::Traits::Residual>::
value),
82 "Received two local assemblers which are non-compatible " 83 "due to different residual vector types");
96 const_residual(const_residual_),
98 pattern_engine(*this), prestage_engine(*this), residual_engine(*this), jacobian_engine(*this),
99 explicit_jacobian_residual_engine(*this)
105 void preStep(Real time_, Real dt_,
int stages_)
114 dt_factor1 = 1.0 / dt;
128 DUNE_THROW(Dune::Exception,
"Unknown mode for assembling of time step size!");
131 la0.preStep(time_,dt_, stages_);
132 la1.preStep(time_,dt_, stages_);
138 osp_method = & method_;
160 return time+osp_method->
d(stage_)*dt;
166 return time+osp_method->
d(stage)*dt;
171 la0.setWeight(weight);
172 la1.setWeight(weight);
184 return pattern_engine;
190 (
const std::vector<typename Traits::Solution*> & x)
194 return prestage_engine;
205 return residual_engine;
215 return jacobian_engine;
223 return la1.localPatternAssemblerEngine(p);
231 const std::vector<typename Traits::Solution*> & x)
240 (la1.localJacobianAssemblerEngine(a,*(x[stage])));
242 return explicit_jacobian_residual_engine;
258 const OneStepParameters * osp_method;
283 Real dt_factor0, dt_factor1;
294 LocalPatternAssemblerEngine pattern_engine;
295 LocalPreStageAssemblerEngine prestage_engine;
296 LocalResidualAssemblerEngine residual_engine;
297 LocalJacobianAssemblerEngine jacobian_engine;
304 #endif // DUNE_PDELAB_GRIDOPERATOR_ONESTEP_LOCALASSEMBLER_HH void setConstResidual(const Residual &const_residual_)
Definition: onestep/residualengine.hh:88
Dune::PDELab::LocalAssemblerTraits< GO > Traits
Definition: onestep/localassembler.hh:40
const GO::Traits::TestGridFunctionSpaceConstraints & testConstraints() const
get the constraints on the test grid function space
Definition: assemblerutilities.hh:205
The local assembler for one step methods.
Definition: onestep/localassembler.hh:28
Base class for local assembler.
Definition: assemblerutilities.hh:182
DTAssemblingMode
Definition: onestep/localassembler.hh:147
Definition: onestep/localassembler.hh:147
GO::Traits::Jacobian Jacobian
The type of the jacobian.
Definition: assemblerutilities.hh:61
GO::Traits::RangeField RangeField
The field type of the range (residual).
Definition: assemblerutilities.hh:51
OneStepLocalAssembler(LA0 &la0_, LA1 &la1_, typename Traits::Residual &const_residual_)
Constructor with empty constraints.
Definition: onestep/localassembler.hh:93
LocalPreStageAssemblerEngine & localPreStageAssemblerEngine(const std::vector< typename Traits::Solution *> &x)
Definition: onestep/localassembler.hh:190
MatrixBackend::template Pattern< Jacobian, TestGridFunctionSpace, TrialGridFunctionSpace > MatrixPattern
The matrix pattern.
Definition: assemblerutilities.hh:68
void preStep(Real time_, Real dt_, int stages_)
Definition: onestep/localassembler.hh:105
Traits::RangeField Real
The local operators type for real numbers e.g. time.
Definition: onestep/localassembler.hh:87
void setSolution(const Solution &solution_)
Definition: onestep/jacobianengine.hh:71
void static_checks()
Definition: onestep/localassembler.hh:66
LA0 LocalAssemblerDT0
The types of the local assemblers of order one and zero.
Definition: onestep/localassembler.hh:37
void setSolution(const Solution &solution_)
Definition: onestep/residualengine.hh:81
void setStage(int stage_)
Set the current stage of the one step scheme.
Definition: onestep/localassembler.hh:142
GO::Traits::Range Residual
The type of the range (residual).
Definition: assemblerutilities.hh:54
void setPattern(Pattern &pattern_)
Definition: onestep/patternengine.hh:62
Definition: onestep/localassembler.hh:147
const GO::Traits::TrialGridFunctionSpaceConstraints & trialConstraints() const
get the constraints on the trial grid function space
Definition: assemblerutilities.hh:199
Dune::PDELab::TimeSteppingParameterInterface< Real > OneStepParameters
The type of the one step parameter object.
Definition: onestep/localassembler.hh:90
Base parameter class for time stepping scheme parameters.
Definition: onestepparameter.hh:23
For backward compatibility – Do not use this!
Definition: adaptivity.hh:27
void setLocalPreStageEngine(PreStageEngine &prestage_engine_)
Definition: jacobianresidualengine.hh:53
LocalExplicitJacobianResidualAssemblerEngine & localExplicitJacobianResidualAssemblerEngine(typename Traits::Jacobian &a, typename Traits::Residual &r0, typename Traits::Residual &r1, const std::vector< typename Traits::Solution *> &x)
Definition: onestep/localassembler.hh:229
OneStepLocalJacobianAssemblerEngine< OneStepLocalAssembler > LocalJacobianAssemblerEngine
Definition: onestep/localassembler.hh:53
Definition: onestep/localassembler.hh:147
OneStepLocalPreStageAssemblerEngine< OneStepLocalAssembler > LocalPreStageAssemblerEngine
Definition: onestep/localassembler.hh:51
const P & p
Definition: constraints.hh:147
void setJacobian(Jacobian &jacobian_)
Definition: onestep/jacobianengine.hh:78
void setDTAssemblingMode(DTAssemblingMode dt_mode_)
Definition: onestep/localassembler.hh:152
Definition: assemblerutilities.hh:22
void setLocalJacobianEngine(JacobianEngine &jacobian_engine_)
Definition: jacobianresidualengine.hh:58
LocalResidualAssemblerEngine & localResidualAssemblerEngine(typename Traits::Residual &r, const typename Traits::Solution &x)
Definition: onestep/localassembler.hh:200
LA1 LocalAssemblerDT1
Definition: onestep/localassembler.hh:38
void setWeight(const Real weight)
Definition: onestep/localassembler.hh:169
void setMethod(const OneStepParameters &method_)
Set the one step method parameters.
Definition: onestep/localassembler.hh:136
void setSolutions(const Solutions &solutions_)
Definition: prestageengine.hh:88
LocalPatternAssemblerEngine & localPatternAssemblerEngine(typename Traits::MatrixPattern &p)
Definition: onestep/localassembler.hh:181
OneStepLocalPatternAssemblerEngine< OneStepLocalAssembler > LocalPatternAssemblerEngine
Definition: onestep/localassembler.hh:50
void setConstResidual(Residual &const_residual_)
Definition: prestageengine.hh:108
LocalJacobianAssemblerEngine & localJacobianAssemblerEngine(typename Traits::Jacobian &a, const typename Traits::Solution &x)
Definition: onestep/localassembler.hh:211
void setResidual(Residual &residual_)
Definition: onestep/residualengine.hh:96
virtual R d(int r) const =0
Return entries of the d Vector.
Dune::PDELab::LocalAssemblerBase< typename GO::Traits::MatrixBackend, typename GO::Traits::TrialGridFunctionSpaceConstraints, typename GO::Traits::TestGridFunctionSpaceConstraints > Base
The base class.
Definition: onestep/localassembler.hh:46
LA1::LocalPatternAssemblerEngine LocalExplicitPatternAssemblerEngine
Definition: onestep/localassembler.hh:55
GO::Traits::Domain Solution
The type of the domain (solution).
Definition: assemblerutilities.hh:47
LocalExplicitPatternAssemblerEngine & localExplicitPatternAssemblerEngine(typename Traits::MatrixPattern &p)
Definition: onestep/localassembler.hh:221
void setConstResiduals(Residual &const_residual_0_, Residual &const_residual_1_)
Definition: prestageengine.hh:95
OneStepLocalResidualAssemblerEngine< OneStepLocalAssembler > LocalResidualAssemblerEngine
Definition: onestep/localassembler.hh:52
static const unsigned int value
Definition: gridfunctionspace/tags.hh:139
OneStepExplicitLocalJacobianResidualAssemblerEngine< OneStepLocalAssembler > LocalExplicitJacobianResidualAssemblerEngine
Definition: onestep/localassembler.hh:57
Real timeAtStage() const
Access time at given stage.
Definition: onestep/localassembler.hh:164
Real timeAtStage(int stage_) const
Access time at given stage.
Definition: onestep/localassembler.hh:158