HydroFemPhysics
The GeMA Hydraulic FEM Physics Plugin
Loading...
Searching...
No Matches
GmpHydraulicPipe Class Reference

Basic class for the hydraulic interface element plugin object. More...

#include <gmpHydraulicPipe.h>

Inheritance diagram for GmpHydraulicPipe:
Collaboration diagram for GmpHydraulicPipe:

Public Types

enum  PipeGaussAttributeIds { Dp_GA_ID = GmpHydraulic::NUM_GA_IDS , DpOLD_GA_ID , NUM_GA_IDS }
 
- Public Types inherited from GmpHydraulic
enum  HMaterialPointStates { saturated , unsaturated }
 
enum  PhysicsAttributeIds {
  ISOPARAMETRIC_ID , POROSITY_UPDATE_ID , PERMEABILITY_UPDATE_ID , USE_CONSISTENT_MATRIX_ID ,
  VELOCITY_MODE_ID , FLOW_MODE_ID , DIRECT_ID , CGRAV_ID ,
  VF_MODE_ID , NUM_ATTRI_IDS
}
 IDs for physics attributes. More...
 
enum  StateVarIds { P_ID , NUM_STATEVAR_IDS }
 IDs fo physics state vars. More...
 
enum  NodeAttributeIds { V_NA_ID , Q_NA_ID , VF_NA_ID , NUM_NA_IDS }
 IDs for physics node attributes. More...
 
enum  cellAttributeIds { NUM_CA_IDS }
 IDs for physics Cell attributes. More...
 
enum  GaussAttributeIds {
  V_GA_ID , Q_GA_ID , FT_GA_ID , FTOLD_GA_ID ,
  NUM_GA_IDS
}
 IDs for physics Gauss attributes. More...
 
enum  ElementPropertyIds { THICKNESS_ID , GRAV_ID , SOURTERM_ID , NUM_PROPER_IDS }
 IDs for physics element properties. More...
 
enum  BoundaryConditionIds { FIXED_P_BC_ID , FIXED_Q_BC_ID , FIXED_SPF_BC_ID , NUM_BC_IDS }
 IDs for accepted boundary condition types. More...
 
enum  BoundaryConditionValueIds { BC_P_ID , BC_QW_ID , BC_IF_ID , NUM_BCV_IDS }
 IDs for property values from accepted boundary condition types. More...
 

Public Member Functions

 GmpHydraulicPipe (const char *pluginType, GmSimulationData *simulation, QString id, QString description, const GmpFemPhysicsCommonMaterialFactory *matFactory, const GmLogCategory &logger)
 
virtual ~GmpHydraulicPipe ()
 Destructor.
 
virtual const QVariantMap * physicsMetaDataMap ()
 Returns a reference for the Hydraulic Pipe attribute map, built when the function is called for the first time.
 
virtual bool checkAndLoadAttributeAccessors (LuaTable &nodeTable, LuaTable &cellTable, LuaTable &gaussTable)
 Reimplementation of the common function to set initial gauss attributes.
 
virtual bool beforeElementStiffnessLoop (const GmpFemMatrixSet &elemMatrices, const GmpFemVectorSet &elemVectors)
 
virtual GmpFemPhysics::FemResultType fillElementData (const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
 Fills the element matrices and vectors for a generic Pipe element.
 
virtual bool calcDerivedResults (bool nonLinearSolver)
 Calc velocity and flow on nodes and/or Gauss points.
 
virtual double fillBpMatrix (const GmShape *shape, const GmVector &ncoord, const GmMatrix &X, const GmVector &N, const GmMatrix &J, GmMatrix &Bp)
 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 fillStorageCompMatrix (const GmElement *e, GmMatrix &Sc, double &Mfw, const GmVector &Np, double c) const
 Calculates the compressibility matrix inside the fracture.
 
virtual void fillFlowMatrix (const GmElement *e, GmMatrix &Kc, const GmMatrix &Bp, double kl, const GmVector &N, double c) const
 Calculates the flow stiffness matrix according to the cubic law.
 
virtual bool setInitialGaussAttributes () const
 sets the initial value of hydraulic gauss attributes.
 
virtual void fillElementPorePressure (const GmElement *e, GmVector &pe)
 Given an element, fills the vector pe with nodal pore pressure.
 
- Public Member Functions inherited from GmpHydraulic
 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 bool supportsStateDumping ()
 
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 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 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 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.
 
HMaterialPointAccessorshydraulicMaterialPoint ()
 Returns the hydraulic material point accessor.
 

Protected Member Functions

virtual const GmElementDofdofMapping (GmCellType type) const
 
- Protected Member Functions inherited from GmpHydraulic
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.
 

Additional Inherited Members

- Protected Attributes inherited from GmpHydraulic
HMaterialPointAccessors _hmaterialPointAccessor
 Access to hydraulic material point.
 
bool _setInitialCond
 Sets the initial conditions required by the physics.
 

Detailed Description

Basic class for the hydraulic interface element plugin object.

This physics plugin calculates pore pressure in the pipe

Member Enumeration Documentation

◆ PipeGaussAttributeIds

Enumerator
Dp_GA_ID 

Base Id for Gauss attribute(s) used to store the pipe diameter.

NUM_GA_IDS 

The number of property ids above.

Member Function Documentation

◆ calcDerivedResults()

bool GmpHydraulicPipe::calcDerivedResults ( bool nonLinearSolver)
virtual

Calc velocity and flow on nodes and/or Gauss points.

Reimplemented from GmpHydraulic.

◆ checkAndLoadAttributeAccessors()

bool GmpHydraulicPipe::checkAndLoadAttributeAccessors ( LuaTable & nodeTable,
LuaTable & cellTable,
LuaTable & gaussTable )
virtual

Reimplementation of the common function to set initial gauss attributes.

Reimplemented from GmpHydraulic.

◆ fillBpMatrix()

double GmpHydraulicPipe::fillBpMatrix ( const GmShape * shape,
const GmVector & ncoord,
const GmMatrix & X,
const GmVector & N,
const GmMatrix & J,
GmMatrix & Bp )
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.

Implements GmpHydraulic.

◆ fillElementData()

GmpFemPhysics::FemResultType GmpHydraulicPipe::fillElementData ( const GmElement * e,
GmpFemMatrixSet & elemMatrices,
GmpFemVectorSet & elemVectors )
virtual

Fills the element matrices and vectors for a generic Pipe element.

Reimplemented from GmpHydraulic.

◆ fillElementPorePressure()

void GmpHydraulicPipe::fillElementPorePressure ( const GmElement * e,
GmVector & pe )
virtual

Given an element, fills the vector pe with nodal pore pressure.

Given an element, fills the vector Pe with nodal pore pressure. The vector should have size equal to the number of calculated nodes.

Reimplemented from GmpHydraulic.

◆ fillFlowMatrix()

void GmpHydraulicPipe::fillFlowMatrix ( const GmElement * e,
GmMatrix & Kc,
const GmMatrix & dNp,
double kl,
const GmVector & Np,
double c ) const
virtual

Calculates the flow stiffness matrix according to the cubic law.

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

◆ fillStorageCompMatrix()

void GmpHydraulicPipe::fillStorageCompMatrix ( const GmElement * e,
GmMatrix & Sc,
double & Mfw,
const GmVector & Np,
double c ) const
virtual

Calculates the compressibility matrix inside the fracture.

Calculates the Coupling 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 corner nodes at middle point.

Returns Sc = N * (1/Mfw) * N.t() * c, where c = w * h * detJ

◆ physicsMetaDataMap()

const QVariantMap * GmpHydraulicPipe::physicsMetaDataMap ( )
virtual

Returns a reference for the Hydraulic Pipe attribute map, built when the function is called for the first time.

Reimplemented from GmpHydraulic.

◆ setInitialGaussAttributes()

bool GmpHydraulicPipe::setInitialGaussAttributes ( ) const
virtual

sets the initial value of hydraulic gauss attributes.

Sets the initial value of gauss attributes. Dp = pipe diameter Returns true.


The documentation for this class was generated from the following files: