29#ifndef EWOMS_QUANTITY_CALLBACKS_HH
30#define EWOMS_QUANTITY_CALLBACKS_HH
34#include <opm/material/common/MathToolbox.hpp>
35#include <opm/material/common/Valgrind.hpp>
46template <
class TypeTag>
52 using IQFluidState =
decltype(std::declval<IntensiveQuantities>().fluidState());
53 using ResultRawType =
decltype(std::declval<IQFluidState>().temperature(0));
56 using ResultType =
typename std::remove_const<typename std::remove_reference<ResultRawType>::type>::type;
57 using ResultValueType =
typename MathToolbox<ResultType>::ValueType;
71 {
return elemCtx_.intensiveQuantities(
dofIdx, 0).fluidState().temperature(0); }
74 const ElementContext& elemCtx_;
82template <
class TypeTag>
88 using IQFluidState =
decltype(std::declval<IntensiveQuantities>().fluidState());
89 using ResultRawType =
decltype(std::declval<IQFluidState>().pressure(0));
92 using ResultType =
typename std::remove_const<typename std::remove_reference<ResultRawType>::type>::type;
93 using ResultValueType =
typename MathToolbox<ResultType>::ValueType;
97 { Valgrind::SetUndefined(phaseIdx_); }
101 , phaseIdx_(
static_cast<unsigned short>(
phaseIdx))
109 { phaseIdx_ =
static_cast<unsigned short>(
phaseIdx); }
117 Valgrind::CheckDefined(phaseIdx_);
118 return elemCtx_.intensiveQuantities(
dofIdx, 0).fluidState().pressure(phaseIdx_);
122 const ElementContext& elemCtx_;
123 unsigned short phaseIdx_;
131template <
class TypeTag,
class Flu
idState>
138 using IQRawFluidState =
decltype(std::declval<IntensiveQuantities>().fluidState());
139 using IQFluidState =
typename std::remove_const<typename std::remove_reference<IQRawFluidState>::type>::type;
140 using IQScalar =
typename IQFluidState::Scalar;
144 using ResultType = IQScalar;
149 { Valgrind::SetUndefined(phaseIdx_); }
156 , phaseIdx_(
static_cast<unsigned short>(
phaseIdx))
164 { phaseIdx_ =
static_cast<unsigned short>(
phaseIdx); }
172 Valgrind::CheckDefined(phaseIdx_);
173 return elemCtx_.intensiveQuantities(
dofIdx, 0).fluidState().pressure(phaseIdx_);
176 IQScalar boundaryValue()
const
178 Valgrind::CheckDefined(phaseIdx_);
179 return boundaryFs_.pressure(phaseIdx_);
183 const ElementContext& elemCtx_;
184 const FluidState& boundaryFs_;
185 unsigned short phaseIdx_;
193template <
class TypeTag>
199 using IQFluidState =
decltype(std::declval<IntensiveQuantities>().fluidState());
200 using ResultRawType =
decltype(std::declval<IQFluidState>().density(0));
203 using ResultType =
typename std::remove_const<typename std::remove_reference<ResultRawType>::type>::type;
204 using ResultValueType =
typename MathToolbox<ResultType>::ValueType;
208 { Valgrind::SetUndefined(phaseIdx_); }
212 , phaseIdx_(
static_cast<unsigned short>(
phaseIdx))
220 { phaseIdx_ =
static_cast<unsigned short>(
phaseIdx); }
228 Valgrind::CheckDefined(phaseIdx_);
229 return elemCtx_.intensiveQuantities(
dofIdx, 0).fluidState().density(phaseIdx_);
233 const ElementContext& elemCtx_;
234 unsigned short phaseIdx_;
242template <
class TypeTag>
248 using IQFluidState =
decltype(std::declval<IntensiveQuantities>().fluidState());
251 using ResultType =
decltype(std::declval<IQFluidState>().molarDensity(0));
252 using ResultValueType =
typename MathToolbox<ResultType>::ValueType;
256 { Valgrind::SetUndefined(phaseIdx_); }
260 , phaseIdx_(
static_cast<unsigned short>(
phaseIdx))
268 { phaseIdx_ =
static_cast<unsigned short>(
phaseIdx); }
276 Valgrind::CheckDefined(phaseIdx_);
277 return elemCtx_.intensiveQuantities(
dofIdx, 0).fluidState().molarDensity(phaseIdx_);
281 const ElementContext& elemCtx_;
282 unsigned short phaseIdx_;
290template <
class TypeTag>
296 using IQFluidState =
decltype(std::declval<IntensiveQuantities>().fluidState());
297 using ResultRawType =
decltype(std::declval<IQFluidState>().viscosity(0));
300 using ResultType =
typename std::remove_const<typename std::remove_reference<ResultRawType>::type>::type;
301 using ResultValueType =
typename MathToolbox<ResultType>::ValueType;
305 { Valgrind::SetUndefined(phaseIdx_); }
309 , phaseIdx_(
static_cast<unsigned short>(
phaseIdx))
317 { phaseIdx_ =
static_cast<unsigned short>(
phaseIdx); }
325 Valgrind::CheckDefined(phaseIdx_);
326 return elemCtx_.intensiveQuantities(
dofIdx, 0).fluidState().viscosity(phaseIdx_);
330 const ElementContext& elemCtx_;
331 unsigned short phaseIdx_;
339template <
class TypeTag>
346 using ResultRawType =
decltype(IntensiveQuantities().velocityCenter());
348 enum { dim = GridView::dimensionworld };
351 using ResultType =
typename std::remove_const<typename std::remove_reference<ResultRawType>::type>::type;
352 using ResultFieldType =
typename ResultType::field_type;
353 using ResultFieldValueType =
typename MathToolbox<ResultFieldType>::ValueType;
364 {
return elemCtx_.intensiveQuantities(
dofIdx, 0).velocityCenter(); }
367 const ElementContext& elemCtx_;
375template <
class TypeTag>
381 using ResultRawType =
decltype(IntensiveQuantities().velocityCenter()[0]);
384 using ResultType =
typename std::remove_const<typename std::remove_reference<ResultRawType>::type>::type;
385 using ResultValueType =
typename MathToolbox<ResultType>::ValueType;
389 { Valgrind::SetUndefined(dimIdx_); }
409 Valgrind::CheckDefined(dimIdx_);
410 return elemCtx_.intensiveQuantities(
dofIdx, 0).velocityCenter()[dimIdx_];
414 const ElementContext& elemCtx_;
423template <
class TypeTag>
429 using IQFluidState =
decltype(std::declval<IntensiveQuantities>().fluidState());
430 using ResultRawType =
decltype(std::declval<IQFluidState>().moleFraction(0, 0));
433 using ResultType =
typename std::remove_const<typename std::remove_reference<ResultRawType>::type>::type;
434 using ResultValueType =
typename MathToolbox<ResultType>::ValueType;
439 Valgrind::SetUndefined(phaseIdx_);
440 Valgrind::SetUndefined(compIdx_);
445 , phaseIdx_(
static_cast<unsigned short>(
phaseIdx))
446 , compIdx_(
static_cast<unsigned short>(
compIdx))
454 { phaseIdx_ =
static_cast<unsigned short>(
phaseIdx); }
461 { compIdx_ =
static_cast<unsigned short>(
compIdx); }
469 Valgrind::CheckDefined(phaseIdx_);
470 Valgrind::CheckDefined(compIdx_);
471 return elemCtx_.intensiveQuantities(
dofIdx, 0).fluidState().moleFraction(phaseIdx_, compIdx_);
475 const ElementContext& elemCtx_;
476 unsigned short phaseIdx_;
477 unsigned short compIdx_;
Callback class for a phase pressure.
Definition quantitycallbacks.hh:133
void setPhaseIndex(unsigned phaseIdx)
Set the index of the fluid phase for which the pressure should be returned.
Definition quantitycallbacks.hh:163
ResultType operator()(unsigned dofIdx) const
Return the pressure of a phase given the index of a degree of freedom within an element context.
Definition quantitycallbacks.hh:170
Callback class for the density of a phase.
Definition quantitycallbacks.hh:195
void setPhaseIndex(unsigned phaseIdx)
Set the index of the fluid phase for which the density should be returned.
Definition quantitycallbacks.hh:219
ResultType operator()(unsigned dofIdx) const
Return the density of a phase given the index of a degree of freedom within an element context.
Definition quantitycallbacks.hh:226
Callback class for the molar density of a phase.
Definition quantitycallbacks.hh:244
void setPhaseIndex(unsigned phaseIdx)
Set the index of the fluid phase for which the molar density should be returned.
Definition quantitycallbacks.hh:267
ResultType operator()(unsigned dofIdx) const
Return the molar density of a phase given the index of a degree of freedom within an element context.
Definition quantitycallbacks.hh:274
Callback class for a mole fraction of a component in a phase.
Definition quantitycallbacks.hh:425
void setComponentIndex(unsigned compIdx)
Set the index of the component for which the mole fraction should be returned.
Definition quantitycallbacks.hh:460
void setPhaseIndex(unsigned phaseIdx)
Set the index of the fluid phase for which a mole fraction should be returned.
Definition quantitycallbacks.hh:453
ResultType operator()(unsigned dofIdx) const
Return the mole fraction of a component in a phase given the index of a degree of freedom within an e...
Definition quantitycallbacks.hh:467
Callback class for a phase pressure.
Definition quantitycallbacks.hh:84
ResultType operator()(unsigned dofIdx) const
Return the pressure of the specified phase given the index of a degree of freedom within an element c...
Definition quantitycallbacks.hh:115
void setPhaseIndex(unsigned phaseIdx)
Set the index of the fluid phase for which the pressure should be returned.
Definition quantitycallbacks.hh:108
Callback class for temperature.
Definition quantitycallbacks.hh:48
ResultType operator()(unsigned dofIdx) const
Return the temperature given the index of a degree of freedom within an element context.
Definition quantitycallbacks.hh:70
Callback class for the velocity of a phase at the center of a DOF.
Definition quantitycallbacks.hh:341
ResultType operator()(unsigned dofIdx) const
Return the velocity of a phase given the index of a degree of freedom within an element context.
Definition quantitycallbacks.hh:363
Callback class for the velocity of a phase at the center of a DOF.
Definition quantitycallbacks.hh:377
void setDimIndex(unsigned dimIdx)
Set the index of the component of the velocity which should be returned.
Definition quantitycallbacks.hh:400
ResultType operator()(unsigned dofIdx) const
Return the velocity of a phase given the index of a degree of freedom within an element context.
Definition quantitycallbacks.hh:407
Callback class for the viscosity of a phase.
Definition quantitycallbacks.hh:292
ResultType operator()(unsigned dofIdx) const
Return the viscosity of a phase given the index of a degree of freedom within an element context.
Definition quantitycallbacks.hh:323
void setPhaseIndex(unsigned phaseIdx)
Set the index of the fluid phase for which the viscosity should be returned.
Definition quantitycallbacks.hh:316
Declare the properties used by the infrastructure code of the finite volume discretizations.
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilboundaryratevector.hh:37
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:242
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:235