CoupledHMFemPhysics
The GeMA Coupled Hydro-Mechanical FEM Physics Plugin
Loading...
Searching...
No Matches
gmpCoupledDualPorosityMaterial.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_COUPLED_DUALPOROSITY_MATERIAL_H_
25#define _GEMA_PLUGIN_COUPLED_DUALPOROSITY_MATERIAL_H_
26
27#include <gmpFemPhysicsCommonMaterial.h>
28
29#include <gmpMechanicalMaterial.h>
31#include <gmpHydraulicDualFlow.h>
32#include <gmpHydraulicMaterial.h>
33#include "gmpMechanicPoint.h"
34
39{
40protected:
49
58
59public:
60
62 GmpCoupledDualPorosityMaterial(int typeIndex, QString typeName, const GmLogCategory& logger)
63 : GmpCoupledHMMaterial(typeIndex, typeName, logger)
64 {
65 }
66
69
71 static GmpFemPhysicsCommonMaterial* instance(GmSimulationData* simulation, int typeIndex, QString typeName, const GmLogCategory& logger)
72 {
73 Q_UNUSED(simulation);
74 return new GmpCoupledDualPorosityMaterial(typeIndex, typeName, logger);
75 }
76
77 virtual const QVariantMap* materialMetaDataMap();
78
80 virtual double normalElasticStiffness(const GmElement* e, const GmVector* coord, int ip) const
81 {
82 return propertyAc(Knf_ID)->scalarValueAt(e, coord, ip);
83 }
84
86 virtual double shearElasticStiffness(const GmElement* e, const GmVector* coord, int ip) const
87 {
88 return propertyAc(Ksf_ID)->scalarValueAt(e, coord, ip);
89 }
90
92 virtual double shearElasticStiffnessTwo(const GmElement* e, const GmVector* coord, int ip) const
93 {
94 if (propertyAc(Ktf_ID) == NULL)
95 {
96 return 0;
97 }
98 return propertyAc(Ktf_ID)->scalarValueAt(e, coord, ip);
99 }
100
102 virtual closureModel fractureClosureModel(const GmElement* e, const GmVector* coord, int ip) const
103 {
104 S_TRACE();
105 assert(e);
107
108 if (propertyAc(Closure_ID) == NULL)
109 {
111 }
112
113 int closureType = propertyAc(Closure_ID)->scalarValueAt(e, coord, ip);
114 //
115 if (closureType == 1)
116 {
118 }
119 //else if (closureType == 2)
120 //{
121 // type = GmpCoupledDualPorosityMaterial::closureModel::bartonBandis;
122 //}
123 else
124 {
126 }
127
128 return type;
129 }
130
133 virtual bool fillElasticStiffnessMatrix(const GmElement* e, GmMatrix& Dmfr, GmMatrix& Cm, GmMatrix& Cfr, const GmVector* coord, int ip, const GmpMechanicPoint* mp, unsigned sc) const;
134
135 virtual void updateElasticStiffnessMatrix(const GmElement* e, GmMatrix& Dmfr, GmMatrix& Cm, GmMatrix& Cfr, const GmpMechanicPoint* mp, const GmVector* coord, int ip, unsigned sc) const;
136 virtual void penalty(const GmElement* e, GmVector& b, const GmVector* coord, int ip, const GmpMechanicPoint* mp, unsigned sc)const;
137
140 virtual bool mechanicalConstitutiveModel(const GmElement* e, GmMatrix& Dmfr, GmMatrix& Cm, GmMatrix& Cfr, const GmpMechanicPoint* mp, const GmVector* coord, unsigned sc, unsigned ips) const;
141 virtual void tangentModulus(const GmElement* e, GmMatrix& Dmfr, GmMatrix& Cm, GmMatrix& Cfr, const GmpMechanicPoint* mp, const GmVector* coord, unsigned nc) const;
142
144 virtual bool fillFluidFlowFracture(const GmElement* e, GmMatrix& Kfc, GmMatrix B, double c, int d, const GmpMechanicPoint* mp, const GmVector* coord, unsigned nc) const;
145
147 virtual bool fillFractureStorageCompMatrix(const GmElement* e, GmpHydraulicDualFlow* hp, GmMatrix& Sfc, const GmVector& N, double c, int d, const GmpMechanicPoint* mp, const GmVector* coord, unsigned sc)const;
148
150 virtual bool fillTransferMatrix(const GmElement* e, GmpHydraulicDualFlow* hp, GmMatrix& Wfm, const GmVector& N, double c, int d, const GmpMechanicPoint* mp, const GmVector* coord, unsigned sc)const;
151
152};
153
154#endif
155
Basic class for a coupled hydro-mechanical material object, storing references for a mechanical and a...
Definition gmpCoupledDualPorosityMaterial.h:39
virtual bool fillFractureStorageCompMatrix(const GmElement *e, GmpHydraulicDualFlow *hp, GmMatrix &Sfc, const GmVector &N, double c, int d, const GmpMechanicPoint *mp, const GmVector *coord, unsigned sc) const
Evaluates the fracture storage compressibility matrix.
Definition gmpCoupledDualPorosityMaterial.cpp:446
GmpCoupledDualPorosityMaterial(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition gmpCoupledDualPorosityMaterial.h:62
virtual double normalElasticStiffness(const GmElement *e, const GmVector *coord, int ip) const
Returns the normal elastic stiffness of fracture.
Definition gmpCoupledDualPorosityMaterial.h:80
virtual double shearElasticStiffnessTwo(const GmElement *e, const GmVector *coord, int ip) const
Returns the shear elastic stiffness 2 of fracture.
Definition gmpCoupledDualPorosityMaterial.h:92
virtual const QVariantMap * materialMetaDataMap()
Returns a pointer to the material attribute map, built when the function is called for the first time...
Definition gmpCoupledDualPorosityMaterial.cpp:46
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 gmpCoupledDualPorosityMaterial.h:71
virtual bool fillElasticStiffnessMatrix(const GmElement *e, GmMatrix &Dmfr, GmMatrix &Cm, GmMatrix &Cfr, const GmVector *coord, int ip, const GmpMechanicPoint *mp, unsigned sc) const
Returns the elastic constitutive matrix for an dual porosity dual permeability Dmfr = (Cm + Cfr) ^-1
Definition gmpCoupledDualPorosityMaterial.cpp:65
virtual bool fillTransferMatrix(const GmElement *e, GmpHydraulicDualFlow *hp, GmMatrix &Wfm, const GmVector &N, double c, int d, const GmpMechanicPoint *mp, const GmVector *coord, unsigned sc) const
Evaluates the Transfer matrix considering the computed scalar "shape factor".
Definition gmpCoupledDualPorosityMaterial.cpp:574
DualPorosityElementPropertyIds
IDs for saturated material element properties.
Definition gmpCoupledDualPorosityMaterial.h:43
@ Ksf_ID
Id for retrieving the shear elastic stiffness of fracture.
Definition gmpCoupledDualPorosityMaterial.h:45
@ Knf_ID
Id for retrieving the normal elastic stiffness of frature.
Definition gmpCoupledDualPorosityMaterial.h:44
@ Ktf_ID
Id for retrieving the tangential elastic stiffness of fracture.
Definition gmpCoupledDualPorosityMaterial.h:46
@ Closure_ID
Id for retrieving the closure model.
Definition gmpCoupledDualPorosityMaterial.h:47
virtual closureModel fractureClosureModel(const GmElement *e, const GmVector *coord, int ip) const
Returns the type of fracture closure model.
Definition gmpCoupledDualPorosityMaterial.h:102
virtual bool fillFluidFlowFracture(const GmElement *e, GmMatrix &Kfc, GmMatrix B, double c, int d, const GmpMechanicPoint *mp, const GmVector *coord, unsigned nc) const
Returns the fracture fluid flow matrix.
Definition gmpCoupledDualPorosityMaterial.cpp:385
virtual double shearElasticStiffness(const GmElement *e, const GmVector *coord, int ip) const
Returns the shear elastic stiffness of fracture.
Definition gmpCoupledDualPorosityMaterial.h:86
closureModel
Fracture closure models.
Definition gmpCoupledDualPorosityMaterial.h:52
@ hardStiffness
Fracture closure considering Hard Stiffness.
Definition gmpCoupledDualPorosityMaterial.h:54
@ normal
Normal closure without contact.
Definition gmpCoupledDualPorosityMaterial.h:53
@ bartonBandis
Fracture closure considering Barton-Bandis model.
Definition gmpCoupledDualPorosityMaterial.h:55
virtual ~GmpCoupledDualPorosityMaterial()
Destructor.
Definition gmpCoupledDualPorosityMaterial.h:68
virtual bool mechanicalConstitutiveModel(const GmElement *e, GmMatrix &Dmfr, GmMatrix &Cm, GmMatrix &Cfr, const GmpMechanicPoint *mp, const GmVector *coord, unsigned sc, unsigned ips) const
Returns the mechanical constitutive model for fractured rock Dmfr.
Definition gmpCoupledDualPorosityMaterial.cpp:350
Basic class for a coupled hydro-mechanical material object, storing references for a mechanical and a...
Definition gmpCoupledHMMaterial.h:41
arma::mat GmMatrix
#define S_TRACE()
arma::vec GmVector
Declaration of the GmpCoupledHMMaterial class.