HydroFemPhysics
The GeMA Hydraulic FEM Physics Plugin
Loading...
Searching...
No Matches
gmpHydraulicMaterialEquivalentContinuum.h
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_HYDRAULIC_MATERIAL_EQUIVALENTCONTINUUM_H_
25#define _GEMA_PLUGIN_HYDRAULIC_MATERIAL_EQUIVALENTCONTINUUM_H_
26
28
29class GMP_HYDRAULIC_PHYSICS_API_EXPORT GmpHydraulicMaterialEquivalentContinuum : public GmpHydraulicMaterialSaturated
30{
31protected:
44
45public:
46
48 GmpHydraulicMaterialEquivalentContinuum(int typeIndex, QString typeName, const GmLogCategory& logger)
49 : GmpHydraulicMaterialSaturated(typeIndex, typeName, logger) {}
50
52 static GmpFemPhysicsCommonMaterial* instance(GmSimulationData* simulation, int typeIndex, QString typeName, const GmLogCategory& logger)
53 {
54 Q_UNUSED(simulation);
55 return new GmpHydraulicMaterialEquivalentContinuum(typeIndex, typeName, logger);
56 }
57
58 // Fills equivalent continuum material map
59 virtual const QVariantMap* materialMetaDataMap();
60
62 virtual GmVector fractureSpacing(const GmElement* e, const GmVector* coord, int ip) const
63 {
64 S_TRACE(); assert(e);
65 GmVector Sf;
66 GmCellAccessor* sfAc = propertyAc(Sfr_ID);
67 // fill property values
68 if (!vectorPropertyValue(e, sfAc, Sf, coord, ip)) {
69 Sf.set_size(1);
70 return Sf.fill(0);
71 }
72 return Sf;
73 }
74
76 virtual GmVector fractureAperture(const GmElement* e, const GmVector* coord, int ip) const
77 {
78 S_TRACE(); assert(e);
79 GmVector Bfr;
80 GmCellAccessor* bfAc = propertyAc(Bfr_ID);
81 // Fills property values
82 vectorPropertyValue(e, bfAc, Bfr, coord, ip);
83
84 return Bfr;
85 }
86
88 virtual GmVector fracturedDip(const GmElement* e, const GmVector* coord, int ip) const
89 {
90 S_TRACE(); assert(e);
91 GmVector Dip;
92 GmCellAccessor* dipAc = propertyAc(DIP_ID);
93 // Fills property values
94 vectorPropertyValue(e, dipAc, Dip, coord, ip);
95
96 return Dip;
97 }
98
100 virtual GmVector fractureStrike(const GmElement* e, const GmVector* coord, int ip) const
101 {
102 S_TRACE(); assert(e);
103 GmVector Strike;
104 GmCellAccessor* strikeAc = propertyAc(STRIKE_ID);
105 // fill property values
106 if (!vectorPropertyValue(e, strikeAc, Strike, coord, ip)) {
107 Strike.set_size(1);
108 return Strike.fill(0);
109 }
110 return Strike;
111 }
112
114 virtual double fractureViscosity(const GmElement* e, const GmVector* coord, int ip) const
115 {
116 S_TRACE(); assert(e);
117 return propertyAc(Uf_ID)->scalarValueAt(e, coord, ip);
118 }
119
121 virtual void hydraulicConstitutiveModel(const GmElement* e, const GmVector* coord, int ip, const GmpHydraulic::HMaterialPointAccessors& mp, GmMatrix& K) const;
122 virtual bool fillFracturePermeability(const GmElement* e, const GmVector* coord, int ip, GmMatrix& Kper) const;
123 virtual GmMatrix fillFractureLocalPermeability(int dim, double bi, double si) const;
124 virtual GmMatrix fillRotationMatrix(int dim, double dip, double strike) const;
125};
126
127#endif
Definition gmpHydraulicMaterialEquivalentContinuum.h:30
virtual double fractureViscosity(const GmElement *e, const GmVector *coord, int ip) const
Returns the fracture dynamic viscosity.
Definition gmpHydraulicMaterialEquivalentContinuum.h:114
virtual GmVector fractureAperture(const GmElement *e, const GmVector *coord, int ip) const
Returns the fracture spacing.
Definition gmpHydraulicMaterialEquivalentContinuum.h:76
virtual GmVector fractureStrike(const GmElement *e, const GmVector *coord, int ip) const
Returns the angle of strike.
Definition gmpHydraulicMaterialEquivalentContinuum.h:100
virtual GmVector fracturedDip(const GmElement *e, const GmVector *coord, int ip) const
Returns the angle of dip.
Definition gmpHydraulicMaterialEquivalentContinuum.h:88
GmpHydraulicMaterialEquivalentContinuum(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition gmpHydraulicMaterialEquivalentContinuum.h:48
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 gmpHydraulicMaterialEquivalentContinuum.h:52
EquivalentElementPropertyIds
IDs for saturated material element properties.
Definition gmpHydraulicMaterialEquivalentContinuum.h:34
@ Bfr_ID
Id for retrieving the frature aperture accessor.
Definition gmpHydraulicMaterialEquivalentContinuum.h:36
@ Uf_ID
Id for retrieving the fracture dynamic viscosity.
Definition gmpHydraulicMaterialEquivalentContinuum.h:39
@ STRIKE_ID
Id for retrieving the angle of strike accessor.
Definition gmpHydraulicMaterialEquivalentContinuum.h:38
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpHydraulicMaterialEquivalentContinuum.h:42
@ DIP_ID
Id for retrieving the angle of dip accessor.
Definition gmpHydraulicMaterialEquivalentContinuum.h:37
virtual GmVector fractureSpacing(const GmElement *e, const GmVector *coord, int ip) const
Returns the fracture spacing.
Definition gmpHydraulicMaterialEquivalentContinuum.h:62
Definition gmpMaterialSaturated.h:30
virtual void hydraulicConstitutiveModel(const GmElement *e, const GmVector *coord, int ip, const GmpHydraulic::HMaterialPointAccessors &mp, GmMatrix &K) const
Brief Returns the hydraulic constitutive model (permeability tensor)
Definition gmpMaterialSaturated.cpp:40
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpMaterialSaturated.h:39
virtual const QVariantMap * materialMetaDataMap()
Returns a pointer to the material attribute map, built when the function is called for the first time...
Definition gmpMaterialSaturated.cpp:21
arma::mat GmMatrix
#define S_TRACE()
arma::vec GmVector
Declaration of the GmpHydraulicMaterialSaturated class.
Definition gmpHydraulic.h:47