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>
41 using ElementVariables =
typename GridVariablesCache::LocalView;
42 using Element =
typename GridView::template Codim<0>::Entity;
45 using LocalResidual = std::decay_t<decltype(std::declval<Assembler>().localResidual())>;
53 const SolutionVector&
curSol)
69 const SolutionVector&
curSol,
89 {
return useImplicitAssembly; }
98 if (this->
assembler().isStationaryProblem())
99 DUNE_THROW(Dune::InvalidStateException,
"Using explicit jacobian assembler with stationary local residual");
143 return localResidual_.evalFluxAndSource(element_, fvGeometry_, elemVars);
152 return localResidual_.evalStorage(element_, fvGeometry_, prevElemVars_, curElemVars_);
175 if (!this->
assembler().isStationaryProblem())
187 {
return assembler_.problem(); }
191 {
return assembler_; }
199 {
return elementIsGhost_; }
207 {
return fvGeometry_; }
211 {
return curElemVars_; }
215 {
return prevElemVars_; }
219 {
return localResidual_; }
223 {
return fvGeometry_; }
227 {
return curElemVars_; }
231 {
return prevElemVars_; }
235 {
return localResidual_; }
239 {
return *
static_cast<Implementation*
>(
this); }
242 {
return *
static_cast<const Implementation*
>(
this); }
247 const Element& element_;
248 const SolutionVector& curSol_;
250 FVElementGeometry fvGeometry_;
251 ElementVariables curElemVars_;
252 ElementVariables prevElemVars_;
255 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
GVC GridVariablesCache
export type of the grid variables cache
Definition discretization/gridvariables.hh:33
const Assembler & assembler() const
The assembler.
Definition assembly/localassemblerbase.hh:190
static constexpr bool isImplicit()
Returns true if the assembler considers implicit assembly.
Definition assembly/localassemblerbase.hh:88
const ElementVariables & curElemVars() const
The current element variables.
Definition assembly/localassemblerbase.hh:226
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:150
void bindLocalViews()
Convenience function bind and prepare all relevant variables required for the evaluation of the local...
Definition assembly/localassemblerbase.hh:159
ElementResidualVector evalLocalResidual(const ElementVariables &elemVars) const
Evaluates the complete local residual for the current element.
Definition assembly/localassemblerbase.hh:112
const ElementVariables & prevElemVars() const
The element variables of the previous time step.
Definition assembly/localassemblerbase.hh:230
typename LocalResidual::ElementResidualVector ElementResidualVector
Definition assembly/localassemblerbase.hh:46
const Element & element() const
The current element.
Definition assembly/localassemblerbase.hh:194
const LocalResidual & localResidual() const
The local residual for the current element.
Definition assembly/localassemblerbase.hh:234
const FVElementGeometry & fvGeometry() const
The finite volume geometry.
Definition assembly/localassemblerbase.hh:222
bool elementIsGhost() const
Returns if element is a ghost entity.
Definition assembly/localassemblerbase.hh:198
Implementation & asImp_()
Definition assembly/localassemblerbase.hh:238
ElementVariables & curElemVars()
The current element variables.
Definition assembly/localassemblerbase.hh:210
ElementResidualVector evalLocalResidual() const
Convenience function to evaluate the complete local residual for the current element....
Definition assembly/localassemblerbase.hh:95
LocalAssemblerBase(const Assembler &assembler, const Element &element, const SolutionVector &curSol)
The constructor. Delegates to the general constructor.
Definition assembly/localassemblerbase.hh:51
const Problem & problem() const
The problem.
Definition assembly/localassemblerbase.hh:186
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:141
ElementResidualVector evalLocalFluxAndSourceResidual() const
Convenience function to evaluate the flux and source terms (i.e., the terms without a time derivative...
Definition assembly/localassemblerbase.hh:129
LocalResidual & localResidual()
The local residual for the current element.
Definition assembly/localassemblerbase.hh:218
std::decay_t< decltype(std::declval< Assembler >().localResidual())> LocalResidual
Definition assembly/localassemblerbase.hh:45
const Implementation & asImp_() const
Definition assembly/localassemblerbase.hh:241
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:67
ElementVariables & prevElemVars()
The element variables of the previous time step.
Definition assembly/localassemblerbase.hh:214
FVElementGeometry & fvGeometry()
The element discretization.
Definition assembly/localassemblerbase.hh:206
const SolutionVector & curSol() const
The current solution.
Definition assembly/localassemblerbase.hh:202
The element-wise residual for grid-based discretization schemes.
Definition assembly/localresidual.hh:39
ReservedBlockVector< NumEqVector, Dumux::Detail::LocalDofs::maxNumLocalDofs< ElementDiscretization >()> ElementResidualVector
the container storing all element residuals
Definition assembly/localresidual.hh:56
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