CoupledHMFemPhysics
The GeMA Coupled Hydro-Mechanical FEM Physics Plugin
Loading...
Searching...
No Matches
gmpHydroMechanical.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_HYDROMECHANICAL_H_
26#define _GEMA_PLUGIN_HYDROMECHANICAL_H_
27
28
30#include <gmpFemPhysicsCoupled.h>
31#include <gmTrace.h>
32
33class GmGaussAccessor;
34
35
38{
39public:
40 // constructor
41 GmpHydroMechanical(const char* pluginType, GmSimulationData* simulation, QString id, QString description,
42 const GmpFemPhysicsCommonMaterialFactory* matFactory, const GmLogCategory& logger);
43
44 // destructor
45 virtual ~GmpHydroMechanical();
46
47 // set physic map
48 virtual const QVariantMap* physicsMetaDataMap();
49 virtual FemResultType fillElementData(const GmElement* e, GmpFemMatrixSet& elemMatrices, GmpFemVectorSet& elemVectors);
50 virtual FemResultType getElementData(const GmElement* e, GmMatrix& elemK, GmMatrix& elemC, GmVector& elemFi, GmVector& elemFe);
51 virtual bool calcDerivedResults(bool nonLinearSolver);
52 virtual void gravityForce(const GmElement* e, const GmVector* coord, int ip, GmVector& GFc, const GmVector& N, double c);
53 virtual bool beforeElementStiffnessLoop(const GmpFemMatrixSet& elemMatrices, const GmpFemVectorSet& elemVectors);
54
55 // See comments on the base class
56 virtual bool addStateItemsToGroup(GmStateDump* state, bool fixedHint, int groupId);
57
58protected:
59 // See comments on the base class
60 virtual const GmElementDof* dofMapping(GmCellType type) const;
61 virtual bool fillCoupledMatrix(const GmElement* e, GmMatrix& Le, const GmVector& Np, const GmMatrix& B, double c, int ip);
62 virtual void fillStorageCompMatrix(const GmElement* e, const GmVector* coord, int ip, GmMatrix& Sc, const GmVector& Np, double c);
63 virtual void fillCouplingMecHydMatrix(const GmElement* e, const GmVector* coord, int ip, GmMatrix& Lup, const GmVector& Np, const GmMatrix& Bu, double c);
64 virtual void fillCouplingHydMecMatrix(const GmElement* e, const GmVector* coord, int ip, GmMatrix& Lup, const GmVector& Np, const GmMatrix& Bu, double c);
65 virtual bool assemblyElemDampingMatrix(const GmElement* e, GmMatrix& elemC, const GmMatrix& Lpu, const GmMatrix& Sc, const QVector<int>& iUe, const QVector<int>& iPe);
66 virtual void FillDofIndexPosition(const GmElement* e, QVector<int>& iUe, QVector<int>& iPe);
67 virtual bool assemblyElemStiffnessMatrix(const GmElement* e, GmMatrix& elemK, const GmMatrix& Kep, const GmMatrix& Lup, const GmMatrix& Kc, const QVector<int>& iUe, const QVector<int>& iPe);
68 virtual bool getPorePressureGaussPoint(const GmElement* e, const GmVector* coord, int ip, GmVector& Pg, const GmVector& Np, const GmVector& pe);
69 virtual void assemblyInternalForceVector(const GmElement* e, GmMatrix& elemFi, const GmVector& Fint_St, const GmMatrix& Kc, const GmVector& pe, const QVector<int>& iUe, const QVector<int>& iPe);
71 virtual void fillFlowMatrix(const GmElement* e, const GmVector* coord, int ip, GmMatrix& Kc, const GmMatrix& Bp, double c);
72
73};
74
75#endif
Basic class for the coupled hydro-mechanical physics plugin object.
Definition gmpCoupledHMFemPhysics.h:37
Dual flow hydraulic 2D & 3D for Quad, Tri, Hex and Tet.
Definition gmpHydroMechanical.h:38
virtual void fillCouplingMecHydMatrix(const GmElement *e, const GmVector *coord, int ip, GmMatrix &Lup, const GmVector &Np, const GmMatrix &Bu, double c)
Calculates the stiffness matrix of the mechanical- hydraulic coupling.
Definition gmpHydroMechanical.cpp:679
virtual FemResultType fillElementData(const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
Fills the element matrices and vectors for a generic element. Applying the Galerking method (Zienkiew...
Definition gmpHydroMechanical.cpp:276
virtual void fillStorageCompMatrix(const GmElement *e, const GmVector *coord, int ip, GmMatrix &Sc, const GmVector &Np, double c)
Calculates the compressibility matrix of "storage / compressibility" for element 'e' at the given int...
Definition gmpHydroMechanical.cpp:626
virtual void fillFlowMatrix(const GmElement *e, const GmVector *coord, int ip, GmMatrix &Kc, const GmMatrix &Bp, double c)
Fills fluid flow matrix considering permeability updates.
Definition gmpHydroMechanical.cpp:742
virtual const QVariantMap * physicsMetaDataMap()
Returns a reference for the Hydraulics dual flow attribute map, built when the function is called for...
Definition gmpHydroMechanical.cpp:107
virtual bool calcDerivedResults(bool nonLinearSolver)
Calc velocity and flow on nodes and/or Gauss points.
Definition gmpHydroMechanical.cpp:910
virtual void FillDofIndexPosition(const GmElement *e, QVector< int > &iUe, QVector< int > &iPe)
Fills the position index with the degreee of freedo, both the mechanical and hydraulic physics....
Definition gmpHydroMechanical.cpp:203
virtual void fillCouplingHydMecMatrix(const GmElement *e, const GmVector *coord, int ip, GmMatrix &Lup, const GmVector &Np, const GmMatrix &Bu, double c)
Calculates the stiffness matrix of the hydraulic - mechanical coupling.
Definition gmpHydroMechanical.cpp:711
virtual ~GmpHydroMechanical()
Destructor.
Definition gmpHydroMechanical.cpp:100
GmCellType
arma::mat GmMatrix
arma::vec GmVector
Declaration of the GmpCoupledHMFemPhysics class.