28#ifndef EWOMS_FV_BASE_PRIMARY_VARIABLES_HH
29#define EWOMS_FV_BASE_PRIMARY_VARIABLES_HH
31#include <dune/common/fvector.hh>
33#include <opm/material/common/MathToolbox.hpp>
34#include <opm/material/common/Valgrind.hpp>
49template <
class TypeTag>
50class FvBasePrimaryVariables
51 :
public Dune::FieldVector<GetPropType<TypeTag, Properties::Scalar>,
52 getPropValue<TypeTag, Properties::NumEq>()>
59 using Toolbox = MathToolbox<Evaluation>;
60 using ParentType = Dune::FieldVector<Scalar, numEq>;
63 FvBasePrimaryVariables()
65 { Valgrind::SetUndefined(*
this); }
75 FvBasePrimaryVariables&
operator=(
const FvBasePrimaryVariables& value) =
default;
77 using ParentType::operator=;
84 static void registerParameters()
99 if constexpr (std::is_same_v<Evaluation, Scalar>) {
100 return (*
this)[varIdx];
104 if (timeIdx == linearizationType.time) {
105 return Toolbox::createVariable((*
this)[varIdx], varIdx);
108 return Toolbox::createConstant((*
this)[varIdx]);
123 template <
class Flu
idState>
126 throw std::runtime_error(
"The PrimaryVariables class does not define "
127 "an assignNaive() method");
135 Valgrind::CheckDefined(*
static_cast<const ParentType*
>(
this));
145 template<
class TypeTag,
bool>
150 template<
class TypeTag>
152 :
public FieldTraits<FieldVector<Opm::GetPropType<TypeTag, Opm::Properties::Scalar>,
153 Opm::getPropValue<TypeTag, Opm::Properties::NumEq>()>>
161 :
public FieldTraits<T>
166 template<
class TypeTag,
template <
class>
class EwomsPrimaryVariable>
167 struct FieldTraits<EwomsPrimaryVariable<TypeTag>>
169 std::is_base_of_v<Opm::FvBasePrimaryVariables<TypeTag>,
170 EwomsPrimaryVariable<TypeTag>>>
static void init()
< Import base class assignment operators.
Definition fvbaseprimaryvariables.hh:79
FvBasePrimaryVariables(const FvBasePrimaryVariables &value)=default
Assignment from another primary variables object.
FvBasePrimaryVariables & operator=(const FvBasePrimaryVariables &value)=default
Assignment from another primary variables object.
void checkDefined() const
Instruct valgrind to check the definedness of all attributes of this class.
Definition fvbaseprimaryvariables.hh:133
void assignNaive(const FluidState &)
Assign the primary variables "somehow" from a fluid state.
Definition fvbaseprimaryvariables.hh:124
Evaluation makeEvaluation(unsigned varIdx, unsigned timeIdx, LinearizationType linearizationType=LinearizationType()) const
Return a primary variable intensive evaluation.
Definition fvbaseprimaryvariables.hh:96
Declare the properties used by the infrastructure code of the finite volume discretizations.
The common code for the linearizers of non-linear systems of equations.
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilbioeffectsmodules.hh:43
typename Properties::Detail::GetPropImpl< TypeTag, Property >::type::type GetPropType
get the type alias defined in the property (equivalent to old macro GET_PROP_TYPE(....
Definition propertysystem.hh:233
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:240
Compatibility traits class for DenseVector and DenseMatrix.
Definition fvbaseprimaryvariables.hh:146
Definition linearizationtype.hh:34