CoupledHMFemPhysics
The GeMA Coupled Hydro-Mechanical FEM Physics Plugin
Loading...
Searching...
No Matches
gmpDualPorosityDualPermeability.h
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
24#ifndef _GEMA_PLUGIN_DUALPOROSITYDUALPERMEABILITY_H_
25#define _GEMA_PLUGIN_DUALPOROSITYDUALPERMEABILITY_H_
26
27
29#include <gmpFemPhysicsCoupled.h>
30#include <gmTrace.h>
31
32class GmGaussAccessor;
33
34
37{
38public:
39 // constructor
40 GmpDualPorosityDualPermeability(const char* pluginType, GmSimulationData* simulation, QString id, QString description,
41 const GmpFemPhysicsCommonMaterialFactory* matFactory, const GmLogCategory& logger);
42
43 // destructor
45
46 // set physic map
47 virtual const QVariantMap* physicsMetaDataMap();
48 virtual FemResultType fillElementData(const GmElement* e, GmpFemMatrixSet& elemMatrices, GmpFemVectorSet& elemVectors);
49
51 virtual bool fillCoupledMatrix(const GmElement* e, const GmVector* coord, int ip, GmMatrix& R1, const GmVector& Np, const GmMatrix& Dmfr, const GmMatrix& Cm, const GmMatrix& Bu, double c);
52 virtual bool fillCoupledFracture(const GmElement* e, const GmVector* coord, int ip, GmMatrix& R2, const GmVector& Np, const GmMatrix& Dmfr, const GmMatrix& Cm, const GmMatrix& Bu, double c);
53 virtual void fillMechanicalStiffnessMatrix(const GmElement* e, GmMatrix& Ke, const GmMatrix& Dmfr, const GmMatrix& B, double c);
54 virtual void fillInternalForceVector(const GmElement* e, GmVector& Fi, const GmMatrix& Kc, const GmMatrix& Kfc, const GmMatrix& Wfm, const GmMatrix& R1, const GmMatrix& R2, const GmVector& pe, const GmVector& pfe, const GmVector& pfu, const QVector<int>& iUe, const QVector<int>& iPe, const QVector<int>& iPfe);
55 virtual void fillDampingMatrix(const GmElement* e, GmMatrix& C, const GmMatrix& Sc, const GmMatrix& Sfc, const GmMatrix& R1, const GmMatrix& R2, const QVector<int>& iUe, const QVector<int>& iPe, const QVector<int>& iPfe);
56 virtual void assemblyStiffnessMatrix(const GmElement*e, GmMatrix& elemK, const GmMatrix& Ke, const GmMatrix& R1, const GmMatrix& R2, const GmMatrix& Wfm, const GmMatrix& Kc, const GmMatrix& Kfc, const QVector<int>& iUe, const QVector<int>& iPe, const QVector<int>& iPfe);
57 virtual void FillDofIndexPosition(const GmElement* e, QVector<int>& iUe, QVector<int>& iPe, QVector<int>& iPfe);
58 virtual bool calcDerivedResults(bool nonLinearSolver);
59 virtual FemResultType fillElementDataForBc(const GmElement* e, const GmBoundaryCondition* bc, int bcIndex, int bcListIndex, int border, GmpFemMatrixSet& elemMatrices, GmpFemVectorSet& elemVectors);
60
61 // See comments on the base class
62 virtual bool addStateItemsToGroup(GmStateDump* state, bool fixedHint, int groupId);
63
64protected:
65 // See comments on the base class
66 virtual const GmElementDof* dofMapping(GmCellType type) const;
67
70 {
72
73 // ------ NO ADDING BELOW THIS LINE
75 };
76
77};
78
79#endif
Basic class for the coupled hydro-mechanical physics plugin object.
Definition gmpCoupledHMFemPhysics.h:37
@ NUM_STATEVAR_IDS
The number of state var ids above.
Definition gmpCoupledHMFemPhysics.h:83
Dual flow hydraulic 2D & 3D for Quad, Tri, Hex and Tet.
Definition gmpDualPorosityDualPermeability.h:37
virtual void fillInternalForceVector(const GmElement *e, GmVector &Fi, const GmMatrix &Kc, const GmMatrix &Kfc, const GmMatrix &Wfm, const GmMatrix &R1, const GmMatrix &R2, const GmVector &pe, const GmVector &pfe, const GmVector &pfu, const QVector< int > &iUe, const QVector< int > &iPe, const QVector< int > &iPfe)
Fills the Internal force vector for both fluids and mechanical Returns fi = Kc*pe + Kfc*pfe + ke*pfu,...
Definition gmpDualPorosityDualPermeability.cpp:623
HMDPDKVarIds
IDs for HydroMechanical physics state vars.
Definition gmpDualPorosityDualPermeability.h:70
@ NUM_STATEVAR_IDS
The number of state var ids above.
Definition gmpDualPorosityDualPermeability.h:74
@ PF_ID
Id for retrieving the accessor to the pore-pressure state var.
Definition gmpDualPorosityDualPermeability.h:71
virtual FemResultType fillElementData(const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
Fills the element matrices and vectors for a dualPermeability/dualPorosity model.
Definition gmpDualPorosityDualPermeability.cpp:193
virtual bool calcDerivedResults(bool nonLinearSolver)
Calc velocity and flow on nodes and/or Gauss points.
Definition gmpDualPorosityDualPermeability.cpp:745
virtual const QVariantMap * physicsMetaDataMap()
Returns a reference for the Hydraulics dual flow attribute map, built when the function is called for...
Definition gmpDualPorosityDualPermeability.cpp:98
virtual bool fillCoupledMatrix(const GmElement *e, const GmVector *coord, int ip, GmMatrix &R1, const GmVector &Np, const GmMatrix &Dmfr, const GmMatrix &Cm, const GmMatrix &Bu, double c)
Returns the constitutive matrix for an dual porosity element element.
Definition gmpDualPorosityDualPermeability.cpp:443
virtual void fillDampingMatrix(const GmElement *e, GmMatrix &C, const GmMatrix &Sc, const GmMatrix &Sfc, const GmMatrix &R1, const GmMatrix &R2, const QVector< int > &iUe, const QVector< int > &iPe, const QVector< int > &iPfe)
Fills the Damping matrix with the computed "storage/compressibility" Matrizes Returns | 0 0 0 | C = |...
Definition gmpDualPorosityDualPermeability.cpp:582
virtual void assemblyStiffnessMatrix(const GmElement *e, GmMatrix &elemK, const GmMatrix &Ke, const GmMatrix &R1, const GmMatrix &R2, const GmMatrix &Wfm, const GmMatrix &Kc, const GmMatrix &Kfc, const QVector< int > &iUe, const QVector< int > &iPe, const QVector< int > &iPfe)
Definition gmpDualPorosityDualPermeability.cpp:517
virtual ~GmpDualPorosityDualPermeability()
Destructor.
Definition gmpDualPorosityDualPermeability.cpp:91
virtual void fillMechanicalStiffnessMatrix(const GmElement *e, GmMatrix &Ke, const GmMatrix &Dmfr, const GmMatrix &B, double c)
Fills the Mechanical Stiffness matrix Returns K = c* B.t() * Dmfr * B; where: Ke is the elastic equiv...
Definition gmpDualPorosityDualPermeability.cpp:493
virtual void FillDofIndexPosition(const GmElement *e, QVector< int > &iUe, QVector< int > &iPe, QVector< int > &iPfe)
Fills the position index with the degreee of freedo, both the mechanical and hydraulic physics....
Definition gmpDualPorosityDualPermeability.cpp:663
GmCellType
arma::mat GmMatrix
arma::vec GmVector
Declaration of the GmpCoupledHMFemPhysics class.