HydroFemPhysics
The GeMA Hydraulic FEM Physics Plugin
Loading...
Searching...
No Matches
gmpMaterialInterfaceFlow.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_HYDRAULIC_MATERIAL_INTERFACEFLOW_H_
25#define _GEMA_PLUGIN_HYDRAULIC_MATERIAL_INTERFACEFLOW_H_
26
27#include <gmpFemPhysicsCommonMaterial.h>
28
29#include "gmpHydraulicConfig.h"
31
32class GMP_HYDRAULIC_PHYSICS_API_EXPORT GmpMaterialInterfaceFlow: public GmpFemPhysicsCommonMaterial
33{
34protected:
37 {
44
45 // --- NO ADDING BELOW THIS LINE
47 };
48
49public:
51 {
53 AnOLD_GA_ID,
54
55 // --- NO ADDING BELOW THIS LINE
57 };
58
60 GmpMaterialInterfaceFlow(int typeIndex, QString typeName, const GmLogCategory& logger)
61 : GmpFemPhysicsCommonMaterial(typeIndex, typeName, logger) {}
62
63 // set interface flow material map
64 virtual const QVariantMap* materialMetaDataMap();
65
66 // See comments on the base class
67 virtual bool addStateItemsToGroup(GmStateDump* state, GmElementMesh* mesh, bool fixedHint, int groupId);
68
70 virtual double fractureOpening(const GmElement* e, const GmVector* coord, int ip) const
71 {
72 S_TRACE();
73 assert(e);
74 return propertyAc(GAP_ID)->scalarValueAt(e, coord, ip);
75 }
76
78 virtual double fluidViscosity(const GmElement* e, const GmVector* coord, int ip) const
79 {
80 S_TRACE();
81 assert(e);
82 return propertyAc(Uf_ID)->scalarValueAt(e, coord, ip);
83 }
84
86 virtual double interfaceBiotModulus(const GmElement* e, const GmVector* coord, int ip) const
87 {
88 S_TRACE();
89 assert(e);
90 if (propertyAc(MFw_ID) == NULL)
91 {
92 return 0;
93 }
94 return propertyAc(MFw_ID)->scalarValueAt(e, coord, ip);
95 }
96
98 virtual double leakoffTop(const GmElement* e, const GmVector* coord, int ip) const
99 {
100 S_TRACE();
101 assert(e);
102 if (propertyAc(LKT_ID) == NULL)
103 {
104 return 0;
105 }
106 return propertyAc(LKT_ID)->scalarValueAt(e, coord, ip);
107 }
108
110 virtual double leakoffBottom(const GmElement* e, const GmVector* coord, int ip) const
111 {
112 S_TRACE();
113 assert(e);
114 if (propertyAc(LKB_ID) == NULL)
115 {
116 return 0;
117 }
118 return propertyAc(LKB_ID)->scalarValueAt(e, coord, ip);
119 }
120
122 virtual double initiallyOpenElem(const GmElement* e, const GmVector* coord, int ip) const
123 {
124 S_TRACE();
125 assert(e);
126 if (propertyAc(IOPEN_ID) == NULL)
127 {
128 return 1;
129 }
130 return propertyAc(IOPEN_ID)->scalarValueAt(e, coord, ip);
131 }
132
134 virtual bool initialCondition(const GmElement* e, const GmVector* coord, int ip) const;
135
137 virtual void hydraulicConstitutiveModel(const GmElement* e, GmVector& flowParam, const GmVector* coord, int ip) const = 0;
138
139};
140
141#endif
Definition gmpMaterialInterfaceFlow.h:33
virtual double fractureOpening(const GmElement *e, const GmVector *coord, int ip) const
Returns the initial fracture opening.
Definition gmpMaterialInterfaceFlow.h:70
virtual double interfaceBiotModulus(const GmElement *e, const GmVector *coord, int ip) const
Returns the discontinuity Biot's Modulus.
Definition gmpMaterialInterfaceFlow.h:86
InterfaceGaussAttributeIds
Definition gmpMaterialInterfaceFlow.h:51
@ NUM_GA_IDS
The number of property ids above.
Definition gmpMaterialInterfaceFlow.h:56
@ An_GA_ID
Base Id for Gauss attribute(s) used to store the normal aperture.
Definition gmpMaterialInterfaceFlow.h:52
GmpMaterialInterfaceFlow(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition gmpMaterialInterfaceFlow.h:60
virtual double initiallyOpenElem(const GmElement *e, const GmVector *coord, int ip) const
Returns the initially open element
Definition gmpMaterialInterfaceFlow.h:122
virtual double leakoffTop(const GmElement *e, const GmVector *coord, int ip) const
Returns the leakoff coefficient at the top.
Definition gmpMaterialInterfaceFlow.h:98
virtual double fluidViscosity(const GmElement *e, const GmVector *coord, int ip) const
Returns the dynamic fluid viscosity.
Definition gmpMaterialInterfaceFlow.h:78
virtual double leakoffBottom(const GmElement *e, const GmVector *coord, int ip) const
Returns the leakoff coefficient at the Bottom.
Definition gmpMaterialInterfaceFlow.h:110
virtual void hydraulicConstitutiveModel(const GmElement *e, GmVector &flowParam, const GmVector *coord, int ip) const =0
Hydraulic constitutive model.
InterfacePropertyIds
IDs for saturated material element properties.
Definition gmpMaterialInterfaceFlow.h:37
@ LKB_ID
Id for retrieving the leakoff coefficient at the bottom
Definition gmpMaterialInterfaceFlow.h:42
@ LKT_ID
Id for retrieving the leakoff coefficient at the top.
Definition gmpMaterialInterfaceFlow.h:41
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpMaterialInterfaceFlow.h:46
@ IOPEN_ID
Id for retrieving the initially open element accessor.
Definition gmpMaterialInterfaceFlow.h:43
@ Uf_ID
Id for retrieving the dynamic fluid viscosity.
Definition gmpMaterialInterfaceFlow.h:39
@ MFw_ID
Id for retrieving the discontinuity Biot's Modulus.
Definition gmpMaterialInterfaceFlow.h:40
@ GAP_ID
Id for retrieving the initial fracture aperture.
Definition gmpMaterialInterfaceFlow.h:38
#define S_TRACE()
arma::vec GmVector
Declaration of useful configuration definitions for the plugin library.
Declaration of the GmpHydraulicInterface classes.