HydroFemPhysics
The GeMA Hydraulic FEM Physics Plugin
Loading...
Searching...
No Matches
gmpMaterialInterfaceMultiPhaseFlow.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_INTERFACE_MULTIPHASE_FLOW_H_
25#define _GEMA_PLUGIN_HYDRAULIC_MATERIAL_INTERFACE_MULTIPHASE_FLOW_H_
26
27#include <gmpFemPhysicsCommonMaterial.h>
29#include "gmpHydraulicConfig.h"
31//#include "gmpHydraulicMaterialMultiPhase.h"
33
34class GMP_HYDRAULIC_PHYSICS_API_EXPORT GmpMaterialInterfaceMultiPhaseFlow: public GmpHydraulicMaterialTwoPhase
35{
36protected:
37
49
50public:
51
53 {
55 AnOLD_GA_ID,
56
57 // --- NO ADDING BELOW THIS LINE
59 };
60
62 GmpMaterialInterfaceMultiPhaseFlow(int typeIndex, QString typeName, const GmLogCategory& logger)
63 : GmpHydraulicMaterialTwoPhase(typeIndex, typeName, logger) {}
64
66 static GmpFemPhysicsCommonMaterial* instance(GmSimulationData* simulation, int typeIndex, QString typeName, const GmLogCategory& logger)
67 {
68 Q_UNUSED(simulation);
69 return new GmpMaterialInterfaceMultiPhaseFlow(typeIndex, typeName, logger);
70 }
71
72 // set interface flow material map
73 virtual const QVariantMap* materialMetaDataMap();
74
75 // See comments on the base class
76 virtual bool addStateItemsToGroup(GmStateDump* state, GmElementMesh* mesh, bool fixedHint, int groupId);
77
79 virtual double fractureOpening(const GmElement* e, const GmVector* coord, int ip) const
80 {
81 S_TRACE();
82 assert(e);
83 return propertyAc(GAP_ID)->scalarValueAt(e, coord, ip);
84 }
85
87 virtual double oldFractureAperture(const GmElement* e, const GmVector* coord, int ip) const
88 {
89 S_TRACE();
90 assert(e);
91 return gaussAttrAc(AnOLD_GA_ID)->scalarValueAt(e, ip, coord);
92 }
93
95 virtual double transversalPermeabilityTopFace(const GmElement* e, const GmVector* coord, int ip) const
96 {
97 S_TRACE();
98 assert(e);
99 if (propertyAc(KTTOP_ID) == NULL)
100 {
101 return 0;
102 }
103 return propertyAc(KTTOP_ID)->scalarValueAt(e, coord, ip);
104 }
105
107 virtual double transversalPermeabilityBottomFace(const GmElement* e, const GmVector* coord, int ip) const
108 {
109 S_TRACE();
110 assert(e);
111 if (propertyAc(KTBOT_ID) == NULL)
112 {
113 return 0;
114 }
115 return propertyAc(KTBOT_ID)->scalarValueAt(e, coord, ip);
116 }
117
119 virtual double initiallyOpenElem(const GmElement* e, const GmVector* coord, int ip) const
120 {
121 S_TRACE();
122 assert(e);
123 if (propertyAc(IOPEN_ID) == NULL)
124 {
125 return 1;
126 }
127 return propertyAc(IOPEN_ID)->scalarValueAt(e, coord, ip);
128 }
129
131 virtual double cubicLaw(const GmElement* e, const GmVector* coord, int ip) const;
132
134 virtual void hydraulicConstitutiveModel(const GmElement* e, GmVector& flowParam, const GmVector* coord, int ip) const;
135
137 virtual bool initialCondition(const GmElement* e, const GmVector* coord, int ip) const;
138};
139
140#endif
Definition gmpHydraulicMaterialTwoPhase.h:30
virtual const QVariantMap * materialMetaDataMap()
Returns a pointer to the material attribute map, built when the function is called for the first time...
Definition gmpHydraulicMaterialTwoPhase.cpp:22
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpHydraulicMaterialTwoPhase.h:70
virtual void hydraulicConstitutiveModel(const GmElement *e, const GmVector *coord, int ip, GmMatrix &Kw, GmMatrix &Kc, double Sw, const GmpHydraulic::HMaterialPointAccessors &mp, int d) const
Brief Returns the hydraulic constitutive model (permeability tensor)
Definition gmpHydraulicMaterialTwoPhase.cpp:164
Definition gmpMaterialInterfaceMultiPhaseFlow.h:35
GmpMaterialInterfaceMultiPhaseFlow(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:62
virtual double transversalPermeabilityBottomFace(const GmElement *e, const GmVector *coord, int ip) const
Returns the transversal permeability at the top face of the discontinuity.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:107
virtual double oldFractureAperture(const GmElement *e, const GmVector *coord, int ip) const
Returns the initial fracture opening.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:87
InterfaceGaussAttributeIds
Definition gmpMaterialInterfaceMultiPhaseFlow.h:53
@ An_GA_ID
Base Id for Gauss attribute(s) used to store the normal aperture.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:54
@ NUM_GA_IDS
The number of property ids above.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:58
TwoPhaseInterfacePropertyIds
IDs for saturated material element properties.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:40
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:47
@ KTBOT_ID
Id for retrieving the transversal permeability at the top face.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:43
@ KTTOP_ID
Id for retrieving the transversal permeability at the top face.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:42
@ IOPEN_ID
Id for retrieving the initially open element accessor.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:44
virtual double transversalPermeabilityTopFace(const GmElement *e, const GmVector *coord, int ip) const
Returns the transversal permeability at the top face of the discontinuity.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:95
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 gmpMaterialInterfaceMultiPhaseFlow.h:66
virtual double fractureOpening(const GmElement *e, const GmVector *coord, int ip) const
Returns the initial fracture opening.
Definition gmpMaterialInterfaceMultiPhaseFlow.h:79
virtual double initiallyOpenElem(const GmElement *e, const GmVector *coord, int ip) const
Returns the initially open element
Definition gmpMaterialInterfaceMultiPhaseFlow.h:119
#define S_TRACE()
arma::vec GmVector
Declaration of useful configuration definitions for the plugin library.
Declaration of the GmpHydraulicInterfaceTwoPhaseFlow classes.
Declaration of the GmpHydraulicMaterialTwoPhase class.
Declaration of the GmpMaterialInterfaceFlow class.