HydroFemPhysics
The GeMA Hydraulic FEM Physics Plugin
Loading...
Searching...
No Matches
gmpHydraulicMaterial.h
Go to the documentation of this file.
1/************************************************************************
2**
3** Copyright (C) 2014 by Carlos Augusto Teixera Mendes
4** All rights reserved.
5**
6** This file is part of the "GeMA" software. It's use should respect
7** the terms in the license agreement that can be found together
8** with this source code.
9** It is provided AS IS, with NO WARRANTY OF ANY KIND,
10** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR
11** A PARTICULAR PURPOSE.
12**
13************************************************************************/
14
24#ifndef _GEMA_PLUGIN_HYDRAULICMATERIAL_H_
25#define _GEMA_PLUGIN_HYDRAULICMATERIAL_H_
26
27#include "gmpHydraulic.h"
28
29#include <gmpFemPhysicsCommonMaterial.h>
30#include <gmTrace.h>
31#include <assert.h>
32
35class GMP_HYDRAULIC_PHYSICS_API_EXPORT GmpHydraulicMaterial : public GmpFemPhysicsCommonMaterial
36{
37//public:
38protected:
41 {
48
49 // --- NO ADDING BELOW THIS LINE
51 };
52
53public:
54
56 GmpHydraulicMaterial(int typeIndex, QString typeName, const GmLogCategory& logger)
57 : GmpFemPhysicsCommonMaterial(typeIndex, typeName, logger) {}
58
61
63 virtual double waterBulkModulus(const GmElement* e, const GmVector* coord, int ip) const
64 {
65 if (propertyAc(KWW_ID) == NULL)
66 {
67 return 1.0e25;
68 }
69 return propertyAc(KWW_ID)->scalarValueAt(e, coord, ip);
70 }
71
73 virtual double gammaWater(const GmElement* e, const GmVector* coord, int ip) const
74 {
75 return propertyAc(GW_ID)->scalarValueAt(e, coord, ip);
76 }
77
79 virtual double fluidDensity(const GmElement* e, const GmVector* coord, int ip) const
80 {
81 return propertyAc(rhof_ID)->scalarValueAt(e, coord, ip);
82 }
83
85 virtual double fluidViscosity(const GmElement* e, const GmVector* coord, int ip) const
86 {
87 return propertyAc(Uf_ID)->scalarValueAt(e, coord, ip);
88 }
89
91 virtual double porosity(const GmElement* e, const GmVector* coord, int ip) const
92 {
93 Q_UNUSED(e); Q_UNUSED(coord); Q_UNUSED(ip);
94 return 0.0;
95 }
96
98 virtual double poreCompressibility(const GmElement* e, const GmVector* coord, int ip) const
99 {
100 Q_UNUSED(e); Q_UNUSED(coord); Q_UNUSED(ip);
101 return 0.0;
102 }
103
104 virtual double referencePorePressure(const GmElement* e, const GmVector* coord, int ip) const = 0;
105
107 virtual double relativePermeability (const GmElement* e, const GmVector* coord, int ip) const = 0;
108
110 virtual void hydraulicConstitutiveModel(const GmElement* e, const GmVector* coord, int ip, const GmpHydraulic::HMaterialPointAccessors& mp, GmMatrix& K) const = 0;
111
112 virtual void permeabilityStiffness(const GmElement* e, const GmVector* coord, int ip, GmMatrix& K) const;
113
114 virtual bool permeabilityStiffnessIsSymmetric() const;
115
116 virtual const QVariantMap* materialMetaDataMap();
117};
118#endif
Basic class providing the interface for a hydraulic material.
Definition gmpHydraulicMaterial.h:36
virtual double fluidViscosity(const GmElement *e, const GmVector *coord, int ip) const
Returns the material density of water.
Definition gmpHydraulicMaterial.h:85
virtual ~GmpHydraulicMaterial()
Virtual destructor.
Definition gmpHydraulicMaterial.h:60
virtual void hydraulicConstitutiveModel(const GmElement *e, const GmVector *coord, int ip, const GmpHydraulic::HMaterialPointAccessors &mp, GmMatrix &K) const =0
Brief Returns the hydraulic constitutive model (permeability tensor)
virtual double fluidDensity(const GmElement *e, const GmVector *coord, int ip) const
Returns the material density of water.
Definition gmpHydraulicMaterial.h:79
virtual double poreCompressibility(const GmElement *e, const GmVector *coord, int ip) const
Returns the material pore compressibility.
Definition gmpHydraulicMaterial.h:98
virtual double waterBulkModulus(const GmElement *e, const GmVector *coord, int ip) const
Returns the material bulk modulus of water.
Definition gmpHydraulicMaterial.h:63
virtual double porosity(const GmElement *e, const GmVector *coord, int ip) const
Returns the material porosity.
Definition gmpHydraulicMaterial.h:91
GmpHydraulicMaterial(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition gmpHydraulicMaterial.h:56
virtual double gammaWater(const GmElement *e, const GmVector *coord, int ip) const
Returns the material gamma water.
Definition gmpHydraulicMaterial.h:73
virtual double relativePermeability(const GmElement *e, const GmVector *coord, int ip) const =0
Brief Returns the relative permeability.
ElementPropertyIds
IDs for material element properties.
Definition gmpHydraulicMaterial.h:41
@ KWW_ID
Id for retrieving the bulk modulus of water accessor.
Definition gmpHydraulicMaterial.h:43
@ rhof_ID
Id for retrieving the density of fluid.
Definition gmpHydraulicMaterial.h:46
@ Uf_ID
Id for retrieving the viscosity of fluid.
Definition gmpHydraulicMaterial.h:47
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpHydraulicMaterial.h:50
@ Ki_ID
Id for retrieving the permeability tensor accessor.
Definition gmpHydraulicMaterial.h:45
@ GW_ID
Id for retrieving the gamma water accessor.
Definition gmpHydraulicMaterial.h:44
@ K_ID
Id for retrieving the permeability tensor accessor.
Definition gmpHydraulicMaterial.h:42
arma::mat GmMatrix
arma::vec GmVector
Declaration of the gmpHydraulic classes.
Definition gmpHydraulic.h:47