![]() |
HydroFemPhysics
The GeMA Hydraulic FEM Physics Plugin
|
Dual flow hydraulic 2D & 3D for Quad, Tri, Hex and Tet. More...
#include <gmpHydraulicBrinkmanFlow.h>


Public Member Functions | |
| GmpHydraulicBrinkmanFlow (const char *pluginType, GmSimulationData *simulation, QString id, QString description, const GmpFemPhysicsCommonMaterialFactory *matFactory, const GmLogCategory &logger) | |
| virtual | ~GmpHydraulicBrinkmanFlow () |
| Destructor. | |
| virtual const QVariantMap * | physicsMetaDataMap () |
| Returns a reference for the brinkman attribute map, built when the function is called for the first time. | |
| 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 dual flow 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 bool | fillNeMatrix (GmMatrix &Nec, GmMatrix &Np, const GmVector &Ne, const GmVector &N) const |
| virtual void | fillFluidMomentMatrix (const GmElement *e, const GmVector *coord, int ip, GmMatrix &Ac, const GmMatrix &Bp, const GmMatrix &N, double c) |
| Calculates the flow stiffness matrix of fluid 2 due to permeability contribution or permeability matrix for element 'e' at the given integration point (coord, ip) storing the result at the Kfc matrix. Bp is the strain pore pressure matrix and c a constant equal to w * h * detJ. | |
| virtual void | fillStorageCompMatrix (const GmElement *e, const GmVector *coord, int ip, GmMatrix &Sc, const GmVector &N, double c) |
| Calculates the storage matrix 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 = w * h * detJ. | |
| virtual void | fillFluidConservMatrix (const GmElement *e, const GmVector *coord, int ip, GmMatrix &Cm, const GmMatrix &Bp, const GmMatrix &Np, double c) const |
| Calculates the fluid conserving matrix due to permeability contribution or permeability matrix for element 'e' at the given integration point (coord, ip) storing the result at the Kfc matrix. Bp is the strain pore pressure matrix and c a constant equal to w * h * detJ. | |
| virtual void | fillStiffnessMatrix (const GmElement *e, GmMatrix &K, const GmMatrix &Ac, const GmMatrix &Cm, const QVector< int > &iVe, const QVector< int > &iPe) const |
| Fills the Stiffness matrix with the computed "permeability" Matrizes Returns K = Kc + Kfc, where: Kc is the permeability Matrix of the medium Kfc is the permeability Matrix of the fluid. | |
| virtual bool | calcDerivedResults (bool nonLinearSolver) |
| Calc velocity and flow on nodes and/or Gauss points. | |
| virtual void | fillElementVelocities (const GmElement *e, GmVector &Vfe) |
| Given an element, fills the vector vfe with nodal velocities. The vector should have size equal to dim * number of nodes. | |
| virtual void | fillDampingMatrix (const GmElement *e, GmMatrix &C, const GmMatrix &Sc, const QVector< int > &iVe) const |
| Fills the Damping matrix with the computed "storage/compressibility" Matrizes Returns C = Sc + Sfc, where: Sc is the "storage/compressibility" Matrix of the medium Sfc is the "storage/compressibility" Matrix of the fluid. | |
| virtual void | fillInternalForceVector (const GmElement *e, GmVector &Fi, const GmMatrix &Ac, const GmMatrix &Cm, const GmVector &pe, const GmVector &vfe, const QVector< int > &iVe, const QVector< int > &iPe) const |
| Fills the Internal force vector for both fluids Returns fi = Kc*pe + Kfc*pfe, where: Kc is the permeability Matrix of the medium Kfc is the permeability Matrix of the fluid. | |
| virtual void | FillDofIndexPosition (const GmElement *e, QVector< int > &iPe, QVector< int > &iPfe) |
| Fills the position index of the two hydraulic degrees of freedom. the implementation supports order of the defined state variables i.e {P, Pf} or {Pf, P}. | |
| virtual GmpFemPhysics::FemResultType | fillElementDataForBc (const GmElement *e, const GmBoundaryCondition *bc, int bcIndex, int bcListIndex, int border, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors) |
| Fills the element stiffness matrix elemK and/or the force vector elemF for element 'e', taking into account pressure load and/or point generation boundary conditions, as indicated by the bc parameter. | |
| virtual GmpFemPhysics::FemResultType | fillBcElementData (const GmElement *e, const GmBoundaryCondition *bc, int bcIndex, int bcListIndex, int border, GmMatrix &elemMat, GmVector &elemVec) |
| virtual bool | fillFixedNodalPressureBcLists (int dofId, QVector< int > &nodes, QVector< int > &dof, QVector< double > &values) const |
| Fills fixed pressure boundary conditions. | |
| virtual int | numBCData () const |
| returns number of fixed P bc data | |
| void | addBCData (int id, double value) |
| Adds bc node. | |
| virtual double | bcData (int id) const |
| Returns the bc value or NULL. | |
| virtual QList< int > | nodeIds () const |
| Returns the node indexes. | |
| void | clearBcData () |
| Returns the bc value or NULL. | |
| virtual GmpFemPhysics::FemResultType | fillPressureValues (const GmElement *e, double press, int border) |
| Fills pressure values for fixed pressure boundary conditions. | |
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 FemResultType | fillElementDataBc (const GmElement *e, const GmBoundaryCondition *bc, int bcIndex, int bcListIndex, int border, GmMatrix &elemMat, GmVector &elemVec) |
| 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 Types | |
| enum | BrinkmanStateVarIds { VF_ID = GmpHydraulic::NUM_STATEVAR_IDS , PL_BC_ID , NUM_STATEVAR_IDS } |
| IDs fo physics state vars. More... | |
| enum | BrinkmanBoundaryConditionIds { FIXED_VF_BC_ID = GmpHydraulic::NUM_BC_IDS , NUM_BC_IDS } |
| IDs for accepted boundary condition types. More... | |
| enum | BrinkmanBoundaryConditionValueIds { BC_VX_ID = GmpHydraulic::NUM_BCV_IDS , BC_VY_ID , BC_VZ_ID , BC_PL_ID , NUM_BCV_IDS } |
| IDs for property values from accepted boundary condition types. More... | |
Protected Member Functions | |
| virtual const GmElementDof * | dofMapping (GmCellType type) const |
Protected Member Functions inherited from GmpHydraulic | |
| 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 | |
| QMap< int, double > | _bcData |
| List with bc Data. | |
Protected Attributes inherited from GmpHydraulic | |
| HMaterialPointAccessors | _hmaterialPointAccessor |
| Access to hydraulic material point. | |
| bool | _setInitialCond |
| Sets the initial conditions required by the physics. | |
Dual flow hydraulic 2D & 3D for Quad, Tri, Hex and Tet.
|
protected |
|
protected |
IDs for property values from accepted boundary condition types.
|
protected |
|
virtual |
Calc velocity and flow on nodes and/or Gauss points.
Reimplemented from GmpHydraulic.
|
virtual |
Fills the element matrices and vectors for a generic dual flow element.
Reimplemented from GmpHydraulic.
|
virtual |
Fills the element stiffness matrix elemK and/or the force vector elemF for element 'e', taking into account pressure load and/or point generation boundary conditions, as indicated by the bc parameter.
Reference: "Programing the finite element Mthod", I.M. Smith and D. V. Griffits
Reimplemented from GmpHydraulic.
|
virtual |
Calculates the fluid conserving matrix due to permeability contribution or permeability matrix for element 'e' at the given integration point (coord, ip) storing the result at the Kfc 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 (Kfc = nf x nf) where n is the number of element nodes and nf the number of element corner nodes.
Returns Kfc = Bp.t() * Kaux * Bp * c, where c should be equal to w * h * detJ
|
virtual |
Calculates the flow stiffness matrix of fluid 2 due to permeability contribution or permeability matrix for element 'e' at the given integration point (coord, ip) storing the result at the Kfc 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 (Kfc = nf x nf) where n is the number of element nodes and nf the number of element corner nodes.
Returns Kfc = Bp.t() * Kaux * Bp * c, where c should be equal to w * h * detJ
|
virtual |
Calculates the storage matrix 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 = 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 * (rhow) * N.t() * c, where c = w * h * detJ
Reimplemented from GmpHydraulic.
|
virtual |
See comments on base class. Fills vectors with prescribed node pore pressures.
Reimplemented from GmpHydraulic.
|
virtual |
See comments on base class. Fills vectors with prescribed nodal forces - flow.
Reimplemented from GmpHydraulic.
|
virtual |
Returns a reference for the brinkman attribute map, built when the function is called for the first time.
Reimplemented from GmpHydraulic.