![]() |
HydroFemPhysics
The GeMA Hydraulic FEM Physics Plugin
|
Basic class for the hydraulic physics plugin object. More...
#include <gmpHydraulic.h>


Classes | |
| struct | HMaterialPointAccessors |
Public Member Functions | |
| GmpHydraulic (const char *pluginType, GmSimulationData *simulation, QString id, QString description, const GmpFemPhysicsCommonMaterialFactory *matFactory, const GmLogCategory &logger) | |
| Constructor. Will be called by the plugin loading code. | |
| virtual | ~GmpHydraulic () |
| Destructor. | |
| virtual const char * | pluginName () const |
| virtual const char * | pluginType () const |
| virtual const QVariantMap * | physicsMetaDataMap () |
| Returns a reference for the single Hydraulics attribute map, built when the function is called for the first time. | |
| virtual bool | supportsStateDumping () |
| virtual FemResultType | fillElementData (const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors) |
| Fills the element matrices and vectors for a generic element. | |
| virtual bool | fixedNodalForcesBc (QVector< int > &nodes, QVector< int > &dof, QVector< double > &values) const |
| See comments on base class. Fills vectors with prescribed nodal forces - flow. | |
| virtual bool | fixedNodalDofsBc (QVector< int > &nodes, QVector< int > &dof, QVector< double > &values, bool *constantValues) const |
| See comments on base class. Fills vectors with prescribed node pore pressures. | |
| virtual FemResultType | fillElementDataForBc (const GmElement *e, const GmBoundaryCondition *bc, int bcIndex, int bcListIndex, int border, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors) |
| virtual FemResultType | fillElementDataBc (const GmElement *e, const GmBoundaryCondition *bc, int bcIndex, int bcListIndex, int border, GmMatrix &elemMat, GmVector &elemVec) |
| virtual bool | calcDerivedResults (bool nonLinearSolver) |
| Calc velocity and flow on nodes and/or Gauss points. | |
| virtual void | fillStorageCompMatrix (const GmElement *e, const GmVector *coord, int ip, GmMatrix &Sc, const GmVector &N, double c) |
| Calculates the stiffness matrix of "storage / compressibility" for element 'e' at the given integration point (coord, ip) storing the result at the Sc matrix. N is the shape function vector and c a constant equal to w * h * detJ. | |
| virtual void | fillFlowMatrix (const GmElement *e, const GmVector *coord, int ip, GmMatrix &Kc, const GmMatrix &Bp, double c) const |
| Calculates the flow stiffness matrix due to permeability contribution or permeability matrix for element 'e' at the given integration point (coord, ip) storing the result at the Kc matrix. Bp is the strain pore pressure matrix and c a constant equal to w * h * detJ. | |
| virtual void | fillFluidVelocity (const GmElement *e, const GmVector *coord, int ip, GmVector &Vip, const GmVector &Pe, const GmMatrix &Bp) const |
| Evaluates velocity at integration points (it should be improved to consider gravity effect) | |
| virtual void | fillElementPorePressure (const GmElement *e, GmVector &pe) |
| Given an element, fills the vector pe with nodal pore pressure. The vector should have size equal to the number of calculated nodes. | |
| virtual void | gravitySupplyFluid (const GmElement *e, const GmVector *coord, int ip, GmVector &qext_gsf, GmMatrix &Bp, double c) |
| virtual void | fillSourceTermVector (const GmElement *e, const GmVector *coord, int ip, GmVector &St, const GmVector &N, double c) |
| Calculates the source term due the porosity rate of porous eskeleton for element 'e' at the given integration point (coord, ip) storing the result at external vector. N is the shape function vector and c a constant equal to w * h * detJ. | |
| virtual double | fillBpMatrix (const GmShape *shape, const GmVector &ncoord, const GmMatrix &X, const GmVector &N, const GmMatrix &J, GmMatrix &Bp)=0 |
| Given a point 'ncoord', the element coordinate matrix 'X', the point shape functions 'N' and the transformation Jacobian 'J', fills the matrix with cartesian partial derivatives Bp using the provided shape function and returns the scaled jacobian determinant. | |
| virtual void | gravityVector (const GmElement *e, const GmVector *coord, int ip, GmVector &grav) const |
| Returns the gravity accelaration vector. | |
| virtual bool | isAxisymmetric () |
| Returns TRUE only for axisymmetric models. | |
| virtual double | axisymmetricFactor (const GmElement *e, const GmMatrix &X, const GmVector &N) const |
| Returns the factor that should be applied when using axis symetric elements. 1.0 for other etypes. | |
| HMaterialPointAccessors & | hydraulicMaterialPoint () |
| Returns the hydraulic material point accessor. | |
Protected Member Functions | |
| virtual bool | checkAndLoadAttributeAccessors (LuaTable &nodeTable, LuaTable &cellTable, LuaTable &gaussTable) |
| Checks the loaded data. | |
| virtual void | calcElementDerivedResultAtPoints (const GmElement *e, int resultId, const GmMatrix &evalPoints, bool evalAtIp, GmMatrix &result) |
| The virtual function used by calcDerivedResults() to effectivelly calculate the velocity (resultId = 0) or the flow (resultId = 1) at the given evaluation points. | |
| void | calcElementVelocityAtPoints (const GmElement *e, const GmMatrix &evalPoints, GmMatrix &v) |
| The function responsible for effectivelly calculating the velocity at the given evaluation points, filling v. | |
| void | calcElementFlowAtPoints (const GmElement *e, const GmMatrix &evalPoints, bool evalAtIp, GmMatrix &q) |
| The function responsible for effectivelly calculating the flow at the given evaluation points, filling q. | |
Protected Attributes | |
| HMaterialPointAccessors | _hmaterialPointAccessor |
| Access to hydraulic material point. | |
| bool | _setInitialCond |
| Sets the initial conditions required by the physics. | |
Private Attributes | |
| const char * | _pluginType |
| The plugin type name. | |
Basic class for the hydraulic physics plugin object.
IDs for property values from accepted boundary condition types.
IDs for physics Gauss attributes.
IDs for physics node attributes.
IDs for physics attributes.
|
virtual |
Calc velocity and flow on nodes and/or Gauss points.
Reimplemented in GmpHydraulicBrinkmanFlow, GmpHydraulicDualFlow, GmpHydraulicEmbeddedFractureConductive, GmpHydraulicInterface, GmpHydraulicMultiPhaseFlow, GmpHydraulicPipe, GmpHydraulicTwoPhaseFlow, GmpHydraulicTwoPhaseFlowPgPc, and GmpHydraulicTwoPhaseFlowPwPc.
|
protectedvirtual |
The virtual function used by calcDerivedResults() to effectivelly calculate the velocity (resultId = 0) or the flow (resultId = 1) at the given evaluation points.
See the base class for a parameter description.
Reimplemented in GmpHydraulicDualFlow.
|
protected |
The function responsible for effectivelly calculating the flow at the given evaluation points, filling q.
This function result is a matrix with size d x m where 'm' is the number of evaluation points and 'd' the result dimension (2 or 3 for representing qxx, qyy and qzz)
| e | The element where we are calculating the result matrix |
| evalPoints | Matrix filled with natural coordinates for the 'm' points where results will be evaluated. Size = natural_coord_dimension x m. |
| evalAtIp | Flag that when set to true means that column 'i' in evalPoints is the coordinate of the 'i'th integration point. |
| q | Calculated results for each of the evaluation points. For each point of the 'm' points, a matrix column should be filled with the given point result. Size = d x m, where 'd' is the result dimension. |
|
protected |
The function responsible for effectivelly calculating the velocity at the given evaluation points, filling v.
This function result is a matrix with size d x m where 'm' is the number of evaluation points and 'd' the result dimension (2 or 3 for representing vxx, vyy and vzz)
IMPORTANT: This function currently requires that evalPoints are equal to the elements integration points, and in the same order.
| e | The element where we are calculating the result matrix |
| evalPoints | Matrix filled with natural coordinates for the 'm' points where results will be evaluated. Size = natural_coord_dimension x m. |
| v | Calculated results for each of the evaluation points. For each point of the 'm' points, a matrix column should be filled with the given point result. Size = d x m, where 'd' is the result dimension. |
|
protectedvirtual |
Checks the loaded data.
Reimplementation of the common function to init the _hmaterialPointAccessor structure
Reimplemented in GmpHydraulicEmbeddedFracture, GmpHydraulicEmbeddedFractureConductive, GmpHydraulicInterface, GmpHydraulicInterfaceTwoPhaseFlow, GmpHydraulicPipe, and GmpHydraulicTwoPhaseFlow.
|
pure virtual |
Given a point 'ncoord', the element coordinate matrix 'X', the point shape functions 'N' and the transformation Jacobian 'J', fills the matrix with cartesian partial derivatives Bp using the provided shape function and returns the scaled jacobian determinant.
The shape function given as parameter is the shape function that should be used to calculate the partial derivatives. It will be a linear function in case of iso-parametric elements and the element shape function otherwise.
Matrices J, X and N should have been calculated using the element shape function even in an iso-parametric setting.
Implemented in GmpHydraulicPipe.
|
virtual |
Fills the element matrices and vectors for a generic element.
Reimplemented in GmpHydraulicBrinkmanFlow, GmpHydraulicDualFlow, GmpHydraulicEmbeddedFracture, GmpHydraulicEmbeddedFractureConductive, GmpHydraulicEnhancedDualFlow, GmpHydraulicInterface, GmpHydraulicInterfaceTwoPhaseFlow, GmpHydraulicMultiPhaseFlow, GmpHydraulicNeuralNetwork, GmpHydraulicPipe, GmpHydraulicTwoPhaseFlow, GmpHydraulicTwoPhaseFlowPgPc, and GmpHydraulicTwoPhaseFlowPwPc.
|
virtual |
Reimplemented in GmpHydraulicBrinkmanFlow.
Given an element, fills the vector pe with nodal pore pressure. The vector should have size equal to the number of calculated nodes.
Reimplemented in GmpHydraulicInterface, and GmpHydraulicPipe.
|
virtual |
Calculates the flow stiffness matrix due to permeability contribution or permeability matrix for element 'e' at the given integration point (coord, ip) storing the result at the Kc matrix. Bp is the strain pore pressure matrix and c a constant equal to w * h * detJ.
This function can operate either in an iso parametric setting (Kc = n x n) or in a super parametric setting (Kc = nf x nf) where n is the number of element nodes and nf the number of element corner nodes.
Returns Kc = Bp.t() * Kaux * Bp * c, where c should be equal to w * h * detJ
|
virtual |
Calculates the source term due the porosity rate of porous eskeleton for element 'e' at the given integration point (coord, ip) storing the result at external vector. N is the shape function vector and c a constant equal to w * h * detJ.
This function can operate either in an iso parametric setting (St = n) or in a super parametric setting (St = nf x nf) where n is the number of element nodes and nf the number of element corner nodes.
Returns Sc = N * (Bp + porosity/Kw) * N.t() * c, where c should be equal to w * h * detJ
|
virtual |
Calculates the stiffness matrix of "storage / compressibility" for element 'e' at the given integration point (coord, ip) storing the result at the Sc matrix. N is the shape function vector and c a constant equal to w * h * detJ.
This function can operate either in an iso parametric setting (Sc = n x n) or in a super parametric setting (Sc = nf x nf) where n is the number of element nodes and nf the number of element corner nodes.
Returns Sc = N * (Bp + porosity/Kw) * N.t() * c, where c should be equal to w * h * detJ
Reimplemented in GmpHydraulicBrinkmanFlow, and GmpHydraulicInterface.
|
virtual |
See comments on base class. Fills vectors with prescribed node pore pressures.
Reimplemented in GmpHydraulicBrinkmanFlow, GmpHydraulicDualFlow, GmpHydraulicInterfaceTwoPhaseFlow, GmpHydraulicMultiPhaseFlow, GmpHydraulicTwoPhaseFlow, and GmpHydraulicTwoPhaseFlowPgPc.
|
virtual |
See comments on base class. Fills vectors with prescribed nodal forces - flow.
Reimplemented in GmpHydraulicBrinkmanFlow, GmpHydraulicDualFlow, GmpHydraulicInterfaceTwoPhaseFlow, GmpHydraulicMultiPhaseFlow, GmpHydraulicTwoPhaseFlow, and GmpHydraulicTwoPhaseFlowPgPc.
|
virtual |
Returns the gravity accelaration vector.
Reimplemented in GmpHydraulicTwoPhaseFlow.
|
virtual |
Returns a reference for the single Hydraulics attribute map, built when the function is called for the first time.
Reimplemented in GmpHydraulicBrinkmanFlow, GmpHydraulicDualFlow, GmpHydraulicEmbeddedFracture, GmpHydraulicEmbeddedFractureConductive, GmpHydraulicEnhancedDualFlow, GmpHydraulicInterface, GmpHydraulicInterfaceTwoPhaseFlow, GmpHydraulicMultiPhaseFlow, GmpHydraulicNeuralNetwork, GmpHydraulicPipe, GmpHydraulicTwoPhaseFlow, GmpHydraulicTwoPhaseFlowPgPc, and GmpHydraulicTwoPhaseFlowPwPc.