HydroFemPhysics
The GeMA Hydraulic FEM Physics Plugin
Loading...
Searching...
No Matches
gmpHydraulicEnhancedDualFlow.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
25#ifndef _GEMA_PLUGIN_HYDRAULIC_ENHANCEDDUALFLOW_H_
26#define _GEMA_PLUGIN_HYDRAULIC_ENHANCEDDUALFLOW_H_
27
29#include <gmpFemPhysicsData.h>
30#include <gmpFemPhysicsCommon.h>
31#include <gmDiscontinuitySet.h>
32#include <gmDiscontinuity.h>
34#include <gmMathUtils.h>
35#include <gmTrace.h>
36#include <math.h>
37
38
39class GmGaussAccessor;
40
43{
44public:
45 // constructor
46 GmpHydraulicEnhancedDualFlow(const char* pluginType, GmSimulationData* simulation, QString id, QString description,
47 const GmpFemPhysicsCommonMaterialFactory* matFactory, const GmLogCategory& logger);
48
49 // destructor
51
53 {
55
56 // --- NO ADDING BELOW THIS LINE
58 };
59
60 // set physic map
61 virtual const QVariantMap* physicsMetaDataMap();
62
63 // fill elemental matrix and vectors (K, Fi)
64 virtual FemResultType fillElementData(const GmElement* e, GmpFemMatrixSet& elemMatrices, GmpFemVectorSet& elemVectors);
65
66 // fill element data for continuous enriched element data
67 virtual FemResultType fillContinuousEnrichedElementData(const GmElement* e, GmpFemMatrixSet& elemMatrices, GmpFemVectorSet& elemVectors);
68
69 // Fills fracture fluid flow matrix
70 virtual bool assemblyFractureFlowMatrix(GmMatrix& Kf, GmMatrix & Ke, GmVector& iPe);
71
72 // Get permeability and shapefractor
73 void getPermeabilityAndShapeFactor(const GmElement* e, GmMatrix& Km, double & Gw, double& factor);
74
75 // Get equivalent distance
76 double getEquivalentDistance(const GmElement* e, const GmElement* ef);
77
78 // Sets the initial conditions for hydraulic embedded fracture models.
79 virtual bool setInitialConditions();
80
81 // Get the number of discontinuities crossing and element
84 void getDiscontinuityGeometry(const GmElement* e, int idiscontinuity, GmVector& Xref, GmMatrix& mn);
85 void get2DDiscontinuityGeometry(const GmElement* e, int idiscontinuity, GmVector& Xref, GmMatrix& mn);
86 void get3DDiscontinuityGeometry(const GmElement* e, int idiscontinuity, GmVector& Xref, GmMatrix& mn);
87 void getIdDiscontinuitySubElementInMesh(const GmElement* e, int k, int& idDiscontinuityMesh);
89 FemResultType fillDiscontinuitySetElementData(const GmElement* e, GmMatrix& Hd, GmMatrix& Wf, GmMatrix& Sd, GmMatrix& Tcd, const QMap<int, int>& globalToLocal);
90 void getDiscontinuitySubElementLocalData(const GmElement* e, int k, int& idDiscontinuityElem, QVector<int>& dof, const GmElement* ef, const QMap<int, int>& dNodesGlobalToLocal);
91 void assembleDiscontinuityElementMatrix(GmMatrix& Kg, const GmMatrix& Kl, const QVector<int>& dof) const;
92
93protected:
94 // See comments on the base class
96
97private:
98 const char* _pluginType;
99
100};
101
102#endif
Dual flow hydraulic 2D & 3D for Quad, Tri, Hex and Tet.
Definition gmpHydraulicDualFlow.h:41
Dual flow hydraulic 2D & 3D for Quad, Tri, Hex and Tet.
Definition gmpHydraulicEnhancedDualFlow.h:43
virtual bool setInitialConditions()
Sets the initial conditions required by interface elements. An = normal aperture.
Definition gmpHydraulicEnhancedDualFlow.cpp:120
double getEquivalentDistance(const GmElement *e, const GmElement *ef)
get the equivalent distance
Definition gmpHydraulicEnhancedDualFlow.cpp:639
void getPermeabilityAndShapeFactor(const GmElement *e, GmMatrix &Km, double &Gw, double &factor)
Fill the permeability and shape factor.
Definition gmpHydraulicEnhancedDualFlow.cpp:596
virtual bool checkAndLoadDiscontinuitySetAccessors(LuaTable &table)
Reimplementation of the common function to set initial gauss attributes.
Definition gmpHydraulicEnhancedDualFlow.cpp:98
EmbeddedElemPropertyIds
Definition gmpHydraulicEnhancedDualFlow.h:53
@ NUM_PROPER_IDS
The number of property ids above.
Definition gmpHydraulicEnhancedDualFlow.h:57
@ UFw_ID
Id for retrieving the initial fracture aperture.
Definition gmpHydraulicEnhancedDualFlow.h:54
bool fillDiscontinuityNodesGlobalToLocalMap(const GmElement *e, QMap< int, int > &globalToLocal)
Fill the map with the global to local ids of the discontinuity elements nodes.
Definition gmpHydraulicEnhancedDualFlow.cpp:661
void getDiscontinuityGeometry(const GmElement *e, int idiscontinuity, GmVector &Xref, GmMatrix &mn)
Get the discontinuity geometric properties.
Definition gmpHydraulicEnhancedDualFlow.cpp:741
int getNumberOfDiscontinuities(const GmElement *e)
Returns the number of discontinuities that intersect a given element.
Definition gmpHydraulicEnhancedDualFlow.cpp:181
FemResultType fillDiscontinuitySetElementData(const GmElement *e, GmMatrix &Hd, GmMatrix &Wf, GmMatrix &Sd, GmMatrix &Tcd, const QMap< int, int > &globalToLocal)
Fills the element matrices and vectors of the discontinuity elements.
Definition gmpHydraulicEnhancedDualFlow.cpp:397
const char * _pluginType
The plugin type name.
Definition gmpHydraulicEnhancedDualFlow.h:98
void assembleDiscontinuityElementMatrix(GmMatrix &Kg, const GmMatrix &Kl, const QVector< int > &dof) const
Assemble the contribution of the discontinuity element.
Definition gmpHydraulicEnhancedDualFlow.cpp:856
void get3DDiscontinuityGeometry(const GmElement *e, int idiscontinuity, GmVector &Xref, GmMatrix &mn)
Get the 3D discontinuity geometric properties.
Definition gmpHydraulicEnhancedDualFlow.cpp:795
virtual FemResultType fillElementData(const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
Fills the element matrices and vectors for a generic dual flow element.
Definition gmpHydraulicEnhancedDualFlow.cpp:235
int getNumberOfDiscontinuityElements(const GmElement *e)
Returns the number of discontinuity subelements (bar (2D)/triangle (3D)) that intersect a given eleme...
Definition gmpHydraulicEnhancedDualFlow.cpp:209
virtual const QVariantMap * physicsMetaDataMap()
Returns a reference for the Hydraulics dual flow attribute map, built when the function is called for...
Definition gmpHydraulicEnhancedDualFlow.cpp:62
void get2DDiscontinuityGeometry(const GmElement *e, int idiscontinuity, GmVector &Xref, GmMatrix &mn)
Get the 2D discontinuity geometric properties.
Definition gmpHydraulicEnhancedDualFlow.cpp:757
void getDiscontinuitySubElementLocalData(const GmElement *e, int k, int &idDiscontinuityElem, QVector< int > &dof, const GmElement *ef, const QMap< int, int > &dNodesGlobalToLocal)
Get the ids of the discontinuity sub-element (bar (2D)/triangle (3D)) k locally in the element and fi...
Definition gmpHydraulicEnhancedDualFlow.cpp:711
void getIdDiscontinuitySubElementInMesh(const GmElement *e, int k, int &idDiscontinuityMesh)
Get the id of the discontinuity sub-element (bar (2D)/triangle (3D)) k in the mesh.
Definition gmpHydraulicEnhancedDualFlow.cpp:691
virtual ~GmpHydraulicEnhancedDualFlow()
Destructor.
Definition gmpHydraulicEnhancedDualFlow.cpp:56
virtual FemResultType fillContinuousEnrichedElementData(const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
Fills the element matrices and vectors for a enriched element.
Definition gmpHydraulicEnhancedDualFlow.cpp:276
@ NUM_PROPER_IDS
The number of property ids above.
Definition gmpHydraulic.h:189
arma::mat GmMatrix
arma::vec GmVector
Declaration of the GmpHydraulicDualFlow classes.