24#ifndef _GEMA_PLUGIN_HYDRAULIC_MATERIAL_TWOPHASE_H_
25#define _GEMA_PLUGIN_HYDRAULIC_MATERIAL_TWOPHASE_H_
77 : GmpFemPhysicsCommonMaterial(typeIndex, typeName, logger) {}
87 virtual const QVariantMap* materialMetaDataMap();
90 bool checkLoadedData(
const GmElement* e)
const;
124 virtual double liquidDensity(
const GmElement* e,
const GmVector* coord,
int ip,
const double Plref = 0.0,
double Pl = 0.0)
const;
127 virtual double liquidDensityPressureCompressibility(
const GmElement* e,
const GmVector* coord,
int ip,
double rho)
const;
130 virtual double gasDensity(
const GmElement* e,
const GmVector* coord,
int ip,
const double Pgref = 0.0,
double Pg = 0.0)
const;
133 virtual double exponentialFluidDensity(
const double rho0,
const double K,
const double P0,
const double P)
const;
136 virtual double exponentialFluidDensityCompressibility(
const double rho,
const double K)
const;
139 virtual double linearFluidDensity(
const double rho0,
const double K,
const double P0,
const double P)
const;
142 virtual double linearFluidDensityCompressibility(
const double rho0,
const double K)
const;
145 virtual double gasDensityPressureCompressibility(
const GmElement* e,
const GmVector* coord,
int ip,
double rho)
const;
148 virtual double idealGasDensity(
const GmElement* e,
const GmVector* coord,
int ip,
double Pg)
const;
151 virtual double idealGasCompressibility(
const GmElement* e,
const GmVector* coord,
int ip)
const;
154 virtual double liquidSaturation(
const GmElement* e,
const GmVector* coord,
int ip,
double pc)
const;
157 virtual double derivativeLiquidSaturation(
const GmElement* e,
const GmVector* coord,
int ip,
double Sl,
double Pc = 0.0)
const;
160 virtual double derivativeEffectiveSaturationDegree(
const GmElement* e,
const GmVector* coord,
int ip)
const;
163 virtual double derivativeLiquidRelativePermeability(
const GmElement* e,
const GmVector* coord,
int ip,
double Sl)
const;
166 virtual double derivativeGasRelativePermeability(
const GmElement* e,
const GmVector* coord,
int ip,
double Sl)
const;
169 virtual double effectiveSaturation(
const GmElement* e,
const GmVector* coord,
int ip,
double Sw)
const;
172 virtual double liquidRelativePermeability(
const GmElement* e,
const GmVector* coord,
int ip,
double Sw)
const;
175 virtual double gasRelativePermeability(
const GmElement* e,
const GmVector* coord,
int ip,
double Sw)
const;
182 if (SatLawAcc == NULL)
186 return SatLawAcc->scalarValueAt(e, coord, ip);
194 if (LiqRelAcc == NULL)
198 return LiqRelAcc->scalarValueAt(e, coord, ip);
206 if (GasRelAcc == NULL)
210 return GasRelAcc->scalarValueAt(e, coord, ip);
218 if (FluidRhoAcc == NULL)
222 return FluidRhoAcc->scalarValueAt(e, coord, ip);
230 if (FluidRhoAcc == NULL)
234 return FluidRhoAcc->scalarValueAt(e, coord, ip);
240 return propertyAc(K_ID)->scalarValueAt(e, coord, ip);
249 if ((propertyAc(K_ID) == NULL) && (!isInterface))
259 return propertyAc(Pht_ID)->scalarValueAt(e, coord, ip);
268 if ((propertyAc(Pht_ID) == NULL) && (!isInterface))
278 return propertyAc(R_ID)->scalarValueAt(e, coord, ip);
284 return propertyAc(T_ID)->scalarValueAt(e, coord, ip);
290 if (propertyAc(Mg_ID) == NULL)
294 return propertyAc(Mg_ID)->scalarValueAt(e, coord, ip);
300 if (propertyAc(Bp_ID) == NULL)
304 return propertyAc(Bp_ID)->scalarValueAt(e, coord, ip);
310 if (propertyAc(Kww_ID) == NULL)
314 return propertyAc(Kww_ID)->scalarValueAt(e, coord, ip);
320 if (propertyAc(Kgg_ID) == NULL)
324 return propertyAc(Kgg_ID)->scalarValueAt(e, coord, ip);
342 if (propertyAc(Uw_ID) == NULL)
346 return propertyAc(Uw_ID)->scalarValueAt(e, coord, ip);
352 if (propertyAc(Ug_ID) == NULL)
356 return propertyAc(Ug_ID)->scalarValueAt(e, coord, ip);
362 if (propertyAc(Rhow_ID) == NULL)
366 return propertyAc(Rhow_ID)->scalarValueAt(e, coord, ip);
373 if (propertyAc(Rhog_ID) == NULL)
377 return propertyAc(Rhog_ID)->scalarValueAt(e, coord, ip);
383 if (propertyAc(SLR_ID) == NULL)
387 return propertyAc(SLR_ID)->scalarValueAt(e, coord, ip);
393 if (propertyAc(SGR_ID) == NULL)
397 return propertyAc(SGR_ID)->scalarValueAt(e, coord, ip);
403 if (propertyAc(Pd_ID) == NULL)
407 return propertyAc(Pd_ID)->scalarValueAt(e, coord, ip);
413 if (propertyAc(LAMBDAL_ID) == NULL)
417 return propertyAc(LAMBDAL_ID)->scalarValueAt(e, coord, ip);
423 if (propertyAc(LAMBDAG_ID) == NULL)
427 return propertyAc(LAMBDAG_ID)->scalarValueAt(e, coord, ip);
433 if (propertyAc(LAMBDA_ID) == NULL)
437 return propertyAc(LAMBDA_ID)->scalarValueAt(e, coord, ip);
443 if (propertyAc(RPMIN_ID) == NULL)
447 return propertyAc(RPMIN_ID)->scalarValueAt(e, coord, ip);
virtual GmCellGeometry geometry() const
Definition gmpHydraulicMaterialTwoPhase.h:30
virtual double liquidPermeabilityFittingParameter(const GmElement *e, const GmVector *coord, int ip) const
Returns the shape of the curve Krl x Sl.
Definition gmpHydraulicMaterialTwoPhase.h:411
virtual double minimumRelativePermeability(const GmElement *e, const GmVector *coord, int ip) const
Returns the minimum relative permeability.
Definition gmpHydraulicMaterialTwoPhase.h:441
virtual double gasPermeabilityFittingParameter(const GmElement *e, const GmVector *coord, int ip) const
Returns the shape of the curve Krg x Sl.
Definition gmpHydraulicMaterialTwoPhase.h:421
virtual double residualLiquidSaturation(const GmElement *e, const GmVector *coord, int ip) const
Returns the value of the residual water saturation degree.
Definition gmpHydraulicMaterialTwoPhase.h:381
virtual int liquidRelativePermeabilityId(const GmElement *e, const GmVector *coord, int ip) const
Returns the liquid phase relative permeability id.
Definition gmpHydraulicMaterialTwoPhase.h:190
virtual double porosity(const GmElement *e, const GmVector *coord, int ip) const
Returns the material porosity.
Definition gmpHydraulicMaterialTwoPhase.h:257
virtual double liqReferenceDensity(const GmElement *e, const GmVector *coord, int ip) const
Returns the liquid fluid density.
Definition gmpHydraulicMaterialTwoPhase.h:360
virtual double saturationFittingParameter(const GmElement *e, const GmVector *coord, int ip) const
Returns the shape of the curve Sw x pc.
Definition gmpHydraulicMaterialTwoPhase.h:431
virtual int gasRelativePermeabilityId(const GmElement *e, const GmVector *coord, int ip) const
Returns the gas phase relative permeability id.
Definition gmpHydraulicMaterialTwoPhase.h:202
TwoPhasePropertyIds
IDs for saturated material element properties.
Definition gmpHydraulicMaterialTwoPhase.h:34
@ Kww_ID
Id for retrieving the water bulk modulus accessor
Definition gmpHydraulicMaterialTwoPhase.h:41
@ GRP_ID
Id for retrieving the gas relative permeability id.
Definition gmpHydraulicMaterialTwoPhase.h:54
@ LIQRHO_ID
Id for retrieving the liquid density model.
Definition gmpHydraulicMaterialTwoPhase.h:48
@ LRP_ID
Id for retrieving the liquid relative permeability id.
Definition gmpHydraulicMaterialTwoPhase.h:45
@ Pht_ID
Id for retrieving the porosity accessor.
Definition gmpHydraulicMaterialTwoPhase.h:37
@ Uw_ID
Id for retrieving the water dynamic viscosity accessor
Definition gmpHydraulicMaterialTwoPhase.h:42
@ SATLAW_ID
Id for retrieving the saturation law id.
Definition gmpHydraulicMaterialTwoPhase.h:65
@ PCSLCURVE_ID
Id for retrieving the saturation law curve in the UMAT material.
Definition gmpHydraulicMaterialTwoPhase.h:66
@ Kgg_ID
Id for retrieving the gas bulk modulus accessor.
Definition gmpHydraulicMaterialTwoPhase.h:50
@ R_ID
Id for retrieving the gas density accessor.
Definition gmpHydraulicMaterialTwoPhase.h:59
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpHydraulicMaterialTwoPhase.h:70
@ Rhow_ID
Id for retrieving the water density accessor.
Definition gmpHydraulicMaterialTwoPhase.h:43
@ KRLCURVE_ID
Id for retrieving the liquid relative permeability curve in the UMAT material.
Definition gmpHydraulicMaterialTwoPhase.h:47
@ K_ID
Id for retrieving the intrinsic permeability accessor.
Definition gmpHydraulicMaterialTwoPhase.h:36
@ SLR_ID
Id for retrieving the residual water saturation degree.
Definition gmpHydraulicMaterialTwoPhase.h:46
@ Bp_ID
Id for retrieving the pore compressibility accessor.
Definition gmpHydraulicMaterialTwoPhase.h:38
@ T_ID
Id for retrieving the temperature accessor.
Definition gmpHydraulicMaterialTwoPhase.h:60
@ LAMBDAG_ID
Id for retrieving the curve Krg x Sl fitting parameter.
Definition gmpHydraulicMaterialTwoPhase.h:53
@ Rhog_ID
Id for retrieving the gas density accessor.
Definition gmpHydraulicMaterialTwoPhase.h:52
@ GASRHO_ID
Id for retrieving the gas density model.
Definition gmpHydraulicMaterialTwoPhase.h:57
@ RPMIN_ID
Id for retrieving the minimum relative permeability.
Definition gmpHydraulicMaterialTwoPhase.h:39
@ LAMBDA_ID
Id for retrieving the curve Sl x pc fitting parameter.
Definition gmpHydraulicMaterialTwoPhase.h:64
@ SGR_ID
Id for retrieving the residual water saturation degree.
Definition gmpHydraulicMaterialTwoPhase.h:55
@ LAMBDAL_ID
Id for retrieving the curve Krl x Sl fitting parameter.
Definition gmpHydraulicMaterialTwoPhase.h:44
@ KRGCURVE_ID
Id for retrieving the gas relative permeability curve in the UMAT material.
Definition gmpHydraulicMaterialTwoPhase.h:56
@ Ug_ID
Id for retrieving the gas dynamic viscosity accessor.
Definition gmpHydraulicMaterialTwoPhase.h:51
@ Mg_ID
Id for retrieving the molar mass accessor.
Definition gmpHydraulicMaterialTwoPhase.h:61
@ Pd_ID
Id for retrieving the pressure associated with the gas-entry value.
Definition gmpHydraulicMaterialTwoPhase.h:63
double universalGasConstant(const GmElement *e, const GmVector *coord, int ip) const
Returns the Universal gas constant R.
Definition gmpHydraulicMaterialTwoPhase.h:276
virtual double gasViscosity(const GmElement *e, const GmVector *coord, int ip) const
Returns the fluid dynamic viscosity.
Definition gmpHydraulicMaterialTwoPhase.h:350
virtual bool checkIntrinsicPermeability(const GmElement *e, const GmVector *coord, int ip) const
Check if continuum elements have the intrinsic permeability defined.
Definition gmpHydraulicMaterialTwoPhase.h:244
virtual double temperature(const GmElement *e, const GmVector *coord, int ip) const
Returns the Temperature from property table.
Definition gmpHydraulicMaterialTwoPhase.h:282
twoPhaseRelationships
IDs for the two-phase flow relationships.
Definition gmpHydraulicMaterialTwoPhase.h:94
@ NUM_TWOPHASEREL_IDS
The number of two-phase flow relationships.
Definition gmpHydraulicMaterialTwoPhase.h:101
virtual double liquidBulkModulus(const GmElement *e, const GmVector *coord, int ip) const
Returns the water bulk modulus.
Definition gmpHydraulicMaterialTwoPhase.h:308
virtual double residualGasSaturation(const GmElement *e, const GmVector *coord, int ip) const
Returns the value of the residual water saturation degree.
Definition gmpHydraulicMaterialTwoPhase.h:391
virtual double gasReferencePressure(const GmElement *e, const GmVector *coord, int ip) const
Return the gas fluid reference pressure.
Definition gmpHydraulicMaterialTwoPhase.h:334
virtual double molarMassGas(const GmElement *e, const GmVector *coord, int ip) const
Returns the material pore compressibility.
Definition gmpHydraulicMaterialTwoPhase.h:288
virtual double gasBulkModulus(const GmElement *e, const GmVector *coord, int ip) const
Returns the bulk modulus of another fluid.
Definition gmpHydraulicMaterialTwoPhase.h:318
GmpHydraulicMaterialTwoPhase(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition gmpHydraulicMaterialTwoPhase.h:76
virtual int saturationLawId(const GmElement *e, const GmVector *coord, int ip) const
Returns the saturation law id.
Definition gmpHydraulicMaterialTwoPhase.h:178
virtual double liquidViscosity(const GmElement *e, const GmVector *coord, int ip) const
Returns the water dynamic viscosity.
Definition gmpHydraulicMaterialTwoPhase.h:340
virtual double poreCompressibility(const GmElement *e, const GmVector *coord, int ip) const
Returns the material pore compressibility.
Definition gmpHydraulicMaterialTwoPhase.h:298
virtual double gasEntryPressure(const GmElement *e, const GmVector *coord, int ip) const
Returns the value of the pressure associated with the gas-entry value.
Definition gmpHydraulicMaterialTwoPhase.h:401
virtual int gasDensityModelId(const GmElement *e, const GmVector *coord, int ip) const
Returns the gas fluid density model id.
Definition gmpHydraulicMaterialTwoPhase.h:226
virtual int liquidDensityModelId(const GmElement *e, const GmVector *coord, int ip) const
Returns the liquid fluid density model id.
Definition gmpHydraulicMaterialTwoPhase.h:214
virtual double gasReferenceDensity(const GmElement *e, const GmVector *coord, int ip) const
Returns the gas fluid density.
Definition gmpHydraulicMaterialTwoPhase.h:371
virtual bool checkPorosity(const GmElement *e, const GmVector *coord, int ip) const
Check if continuum elements have the porosity defined.
Definition gmpHydraulicMaterialTwoPhase.h:263
virtual double intrinsicPermeability(const GmElement *e, const GmVector *coord, int ip) const
Returns the intrinsic permeability.
Definition gmpHydraulicMaterialTwoPhase.h:238
static GmpFemPhysicsCommonMaterial * instance(GmSimulationData *simulation, int typeIndex, QString typeName, const GmLogCategory &logger)
A "factory" function used to register the material with the physics material factory.
Definition gmpHydraulicMaterialTwoPhase.h:80
fluidDensityModel
IDs for the two-phase flow relationships.
Definition gmpHydraulicMaterialTwoPhase.h:106
@ NUM_FLUIDDENSITY_IDS
The number of fluid density models.
Definition gmpHydraulicMaterialTwoPhase.h:114
virtual double liquidReferencePressure(const GmElement *e, const GmVector *coord, int ip) const
Return the liquid fluid reference pressure.
Definition gmpHydraulicMaterialTwoPhase.h:328
Declaration of the GmpHydraulicMaterialSaturated class.
Definition gmpHydraulic.h:47