12#ifndef DUMUX_LOCAL_ASSEMBLER_BASE_HH
13#define DUMUX_LOCAL_ASSEMBLER_BASE_HH
18#include <dune/grid/common/gridenums.hh>
32template<
class TypeTag,
class Assembler,
class Implementation,
bool useImplicitAssembly>
42 using ElementVariables =
typename GridVariablesCache::LocalView;
43 using Element =
typename GridView::template Codim<0>::Entity;
46 using LocalResidual = std::decay_t<decltype(std::declval<Assembler>().localResidual())>;
54 const SolutionVector&
curSol)
70 const SolutionVector&
curSol,
90 {
return useImplicitAssembly; }
99 if (this->
assembler().isStationaryProblem())
100 DUNE_THROW(Dune::InvalidStateException,
"Using explicit jacobian assembler with stationary local residual");
144 return localResidual_.evalFluxAndSource(element_, fvGeometry_, elemVars, elemBcTypes_);
153 return localResidual_.evalStorage(element_, fvGeometry_, prevElemVars_, curElemVars_);
176 if (!this->
assembler().isStationaryProblem())
188 {
return assembler_.
problem(); }
192 {
return assembler_; }
200 {
return elementIsGhost_; }
208 {
return fvGeometry_; }
212 {
return curElemVars_; }
216 {
return prevElemVars_; }
220 {
return localResidual_; }
224 {
return elemBcTypes_; }
228 {
return fvGeometry_; }
232 {
return curElemVars_; }
236 {
return prevElemVars_; }
240 {
return elemBcTypes_; }
244 {
return localResidual_; }
248 {
return *
static_cast<Implementation*
>(
this); }
251 {
return *
static_cast<const Implementation*
>(
this); }
256 const Element& element_;
257 const SolutionVector& curSol_;
259 FVElementGeometry fvGeometry_;
260 ElementVariables curElemVars_;
261 ElementVariables prevElemVars_;
262 ElementBoundaryTypes elemBcTypes_;
265 bool elementIsGhost_;
A linear system assembler (residual and Jacobian) for general discretization schemes.
Definition: assembly/assembler.hh:83
const SolutionVector & prevSol() const
The solution of the previous time step.
Definition: assembly/assembler.hh:325
GetPropType< TypeTag, Properties::SolutionVector > SolutionVector
Definition: assembly/assembler.hh:96
const Problem & problem() const
The problem.
Definition: assembly/assembler.hh:297
GVC GridVariablesCache
export type of the grid variables cache
Definition: discretization/gridvariables.hh:33
A base class for all local assemblers.
Definition: assembly/localassemblerbase.hh:34
const Assembler & assembler() const
The assembler.
Definition: assembly/localassemblerbase.hh:191
static constexpr bool isImplicit()
Returns true if the assembler considers implicit assembly.
Definition: assembly/localassemblerbase.hh:89
const ElementVariables & curElemVars() const
The current element variables.
Definition: assembly/localassemblerbase.hh:231
ElementResidualVector evalLocalStorageResidual() const
Convenience function to evaluate storage term (i.e., the term with a time derivative) of the local re...
Definition: assembly/localassemblerbase.hh:151
void bindLocalViews()
Convenience function bind and prepare all relevant variables required for the evaluation of the local...
Definition: assembly/localassemblerbase.hh:160
ElementResidualVector evalLocalResidual(const ElementVariables &elemVars) const
Evaluates the complete local residual for the current element.
Definition: assembly/localassemblerbase.hh:113
const ElementVariables & prevElemVars() const
The element variables of the previous time step.
Definition: assembly/localassemblerbase.hh:235
typename LocalResidual::ElementResidualVector ElementResidualVector
Definition: assembly/localassemblerbase.hh:47
ElementBoundaryTypes & elemBcTypes()
The element's boundary types.
Definition: assembly/localassemblerbase.hh:223
const Element & element() const
The current element.
Definition: assembly/localassemblerbase.hh:195
const ElementBoundaryTypes & elemBcTypes() const
The element's boundary types.
Definition: assembly/localassemblerbase.hh:239
const LocalResidual & localResidual() const
The local residual for the current element.
Definition: assembly/localassemblerbase.hh:243
const FVElementGeometry & fvGeometry() const
The finite volume geometry.
Definition: assembly/localassemblerbase.hh:227
bool elementIsGhost() const
Returns if element is a ghost entity.
Definition: assembly/localassemblerbase.hh:199
Implementation & asImp_()
Definition: assembly/localassemblerbase.hh:247
ElementVariables & curElemVars()
The current element variables.
Definition: assembly/localassemblerbase.hh:211
ElementResidualVector evalLocalResidual() const
Convenience function to evaluate the complete local residual for the current element....
Definition: assembly/localassemblerbase.hh:96
LocalAssemblerBase(const Assembler &assembler, const Element &element, const SolutionVector &curSol)
The constructor. Delegates to the general constructor.
Definition: assembly/localassemblerbase.hh:52
const Problem & problem() const
The problem.
Definition: assembly/localassemblerbase.hh:187
ElementResidualVector evalLocalFluxAndSourceResidual(const ElementVariables &elemVars) const
Evaluates the flux and source terms (i.e., the terms without a time derivative) of the local residual...
Definition: assembly/localassemblerbase.hh:142
ElementResidualVector evalLocalFluxAndSourceResidual() const
Convenience function to evaluate the flux and source terms (i.e., the terms without a time derivative...
Definition: assembly/localassemblerbase.hh:130
LocalResidual & localResidual()
The local residual for the current element.
Definition: assembly/localassemblerbase.hh:219
std::decay_t< decltype(std::declval< Assembler >().localResidual())> LocalResidual
Definition: assembly/localassemblerbase.hh:46
const Implementation & asImp_() const
Definition: assembly/localassemblerbase.hh:250
LocalAssemblerBase(const Assembler &assembler, const Element &element, const SolutionVector &curSol, const FVElementGeometry &fvGeometry, const ElementVariables &curElemVars, const ElementVariables &prevElemVars, const LocalResidual &localResidual, const bool elementIsGhost)
The constructor. General version explicitly expecting each argument.
Definition: assembly/localassemblerbase.hh:68
ElementVariables & prevElemVars()
The element variables of the previous time step.
Definition: assembly/localassemblerbase.hh:215
FVElementGeometry & fvGeometry()
The element discretization.
Definition: assembly/localassemblerbase.hh:207
const SolutionVector & curSol() const
The current solution.
Definition: assembly/localassemblerbase.hh:203
The element-wise residual for grid-based discretization schemes.
Definition: assembly/localresidual.hh:37
ReservedBlockVector< NumEqVector, Dumux::Detail::LocalDofs::maxNumLocalDofs< FVElementGeometry >()> ElementResidualVector
the container storing all element residuals
Definition: assembly/localresidual.hh:55
Defines all properties used in Dumux.
GridCache::LocalView localView(const GridCache &gridCache)
Free function to get the local view of a grid cache object.
Definition: localview.hh:26
typename GetProp< TypeTag, Property >::type GetPropType
get the type alias defined in the property
Definition: propertysystem.hh:296
Definition: assembly/assembler.hh:44
Definition: common/pdesolver.hh:24