28 #ifndef EWOMS_FV_BASE_NEWTON_METHOD_HH
29 #define EWOMS_FV_BASE_NEWTON_METHOD_HH
38 template <
class TypeTag>
41 template <
class TypeTag>
46 namespace Properties {
86 template <
class TypeTag>
87 class FvBaseNewtonMethod :
public NewtonMethod<TypeTag>
90 typedef typename GET_PROP_TYPE(TypeTag, NewtonMethod) Implementation;
92 typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
93 typedef typename GET_PROP_TYPE(TypeTag, Simulator) Simulator;
94 typedef typename GET_PROP_TYPE(TypeTag, Model) Model;
95 typedef typename GET_PROP_TYPE(TypeTag, Linearizer) Linearizer;
96 typedef typename GET_PROP_TYPE(TypeTag, NewtonMethod) NewtonMethod;
97 typedef typename GET_PROP_TYPE(TypeTag, GlobalEqVector) GlobalEqVector;
98 typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector;
99 typedef typename GET_PROP_TYPE(TypeTag, PrimaryVariables) PrimaryVariables;
100 typedef typename GET_PROP_TYPE(TypeTag, EqVector) EqVector;
104 FvBaseNewtonMethod(Simulator& simulator)
105 : ParentType(simulator)
129 const SolutionVector& currentSolution,
130 const GlobalEqVector& solutionUpdate,
131 const GlobalEqVector& currentResidual)
137 if (
model_().storeIntensiveQuantities()) {
138 for (
unsigned dofIdx = 0; dofIdx <
model_().numGridDof(); ++dofIdx)
139 model_().setIntensiveQuantitiesCacheEntryValidity(dofIdx,
168 Implementation& asImp_()
169 {
return *
static_cast<Implementation*
>(
this); }
171 const Implementation& asImp_()
const
172 {
return *
static_cast<const Implementation*
>(
this); }
void beginIteration_()
Indicates the beginning of a Newton iteration.
Definition: newtonmethod.hh:596
The multi-dimensional Newton method.
void beginIteration_()
Indicates the beginning of a Newton iteration.
Definition: fvbasenewtonmethod.hh:148
Writes the intermediate solutions during the Newton scheme for models using a finite volume discretiz...
Definition: fvbasenewtonconvergencewriter.hh:55
#define NEW_TYPE_TAG(...)
Define a new type tag.
Definition: propertysystem.hh:169
#define GET_PROP_TYPE(TypeTag, PropTagName)
Access the type attribute of a property for a type tag.
Definition: propertysystem.hh:486
#define INHERITS_FROM(...)
Syntactic sugar for NEW_TYPE_TAG.
Definition: propertysystem.hh:230
The multi-dimensional Newton method.
Definition: newtonmethod.hh:56
Provides the magic behind the eWoms property system.
Writes the intermediate solutions during the Newton scheme for models using a finite volume discretiz...
void update_(SolutionVector &nextSolution, const SolutionVector ¤tSolution, const GlobalEqVector &solutionUpdate, const GlobalEqVector ¤tResidual)
Update the current solution with a delta vector.
Definition: newtonmethod.hh:678
#define NEW_PROP_TAG(PTagName)
Define a property tag.
Definition: propertysystem.hh:247
#define SET_TYPE_PROP(EffTypeTagName, PropTagName,...)
Set a property which defines a type.
Definition: propertysystem.hh:377
Model & model()
Returns a reference to the numeric model.
Definition: newtonmethod.hh:256
A Newton method for models using a finite volume discretization.
Definition: fvbasenewtonmethod.hh:39
const Model & model_() const
Returns a reference to the model.
Definition: fvbasenewtonmethod.hh:164
Model & model_()
Returns a reference to the model.
Definition: fvbasenewtonmethod.hh:158
void update_(SolutionVector &nextSolution, const SolutionVector ¤tSolution, const GlobalEqVector &solutionUpdate, const GlobalEqVector ¤tResidual)
Update the current solution with a delta vector.
Definition: fvbasenewtonmethod.hh:128