HydroFemPhysics
The GeMA Hydraulic FEM Physics Plugin
Loading...
Searching...
No Matches
gmpHydraulicBrinkmanFlow.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_HYDRAULIC_BRINKMANFLOW_H_
26#define _GEMA_PLUGIN_HYDRAULIC_BRINKMANFLOW_H_
27
28#include "gmpHydraulic.h"
29#include <gmpFemPhysicsCommon.h>
30#include <gmTrace.h>
31#include <math.h>
32
33
34class GmGaussAccessor;
35
38{
39public:
40 // constructor
41 GmpHydraulicBrinkmanFlow(const char* pluginType, GmSimulationData* simulation, QString id, QString description,
42 const GmpFemPhysicsCommonMaterialFactory* matFactory, const GmLogCategory& logger);
43
44 // destructor
46
47 // set physic map
48 virtual const QVariantMap* physicsMetaDataMap();
49
50 virtual bool beforeElementStiffnessLoop(const GmpFemMatrixSet& elemMatrices, const GmpFemVectorSet& elemVectors);
51
52 // fill elemental matrix and vectors (K, Fi)
53 virtual GmpFemPhysics::FemResultType fillElementData(const GmElement* e, GmpFemMatrixSet& elemMatrices, GmpFemVectorSet& elemVectors);
54
55 virtual bool fixedNodalForcesBc(QVector<int>& nodes, QVector<int>&dof, QVector<double>& values) const;
56
57 virtual bool fixedNodalDofsBc (QVector<int>& nodes, QVector<int>&dof, QVector<double>& values, bool* constantValues) const;
58
59 virtual bool fillNeMatrix(GmMatrix& Nec, GmMatrix& Np, const GmVector& Ne, const GmVector& N) const;
60
61 virtual void fillFluidMomentMatrix(const GmElement* e, const GmVector* coord, int ip, GmMatrix& Ac, const GmMatrix& Bp, const GmMatrix& N, double c);
62
63 virtual void fillStorageCompMatrix(const GmElement* e, const GmVector* coord, int ip, GmMatrix& Sc, const GmVector& N, double c);
64
65 virtual void fillFluidConservMatrix(const GmElement* e, const GmVector* coord, int ip, GmMatrix& Cm, const GmMatrix& Bp, const GmMatrix& Np, double c)const;
66
67 virtual void fillStiffnessMatrix(const GmElement* e, GmMatrix& K, const GmMatrix& Ac, const GmMatrix& Cm, const QVector<int>& iVe, const QVector<int>& iPe) const;
68
69 virtual bool calcDerivedResults(bool nonLinearSolver);
70
71 virtual void fillElementVelocities(const GmElement* e, GmVector& Vfe);
72
73 virtual void fillDampingMatrix(const GmElement* e, GmMatrix& C, const GmMatrix& Sc, const QVector<int>& iVe) const;
74
75 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;
76
77 virtual void FillDofIndexPosition(const GmElement* e, QVector<int>& iPe, QVector<int>& iPfe);
78
79 virtual GmpFemPhysics::FemResultType fillElementDataForBc(const GmElement* e, const GmBoundaryCondition* bc, int bcIndex, int bcListIndex,
80 int border, GmpFemMatrixSet& elemMatrices, GmpFemVectorSet& elemVectors);
81 virtual GmpFemPhysics::FemResultType fillBcElementData(const GmElement* e, const GmBoundaryCondition* bc, int bcIndex, int bcListIndex,
82 int border, GmMatrix& elemMat, GmVector& elemVec);
83
85 virtual bool fillFixedNodalPressureBcLists(int dofId, QVector<int>& nodes, QVector<int>&dof, QVector<double>& values) const;
86
88 virtual int numBCData() const { return _bcData.size(); };
89
91 void addBCData(int id, double value) { _bcData.insert(id, value); };
92
94 virtual double bcData(int id) const { return _bcData.value(id); };
95
97 virtual QList<int> nodeIds() const { return _bcData.uniqueKeys(); };
98
100 void clearBcData() { _bcData.clear(); };
101
103 //virtual GmpFemPhysics::FemResultType fillPressureValues(const GmElement* e, GmVector& elemVec, int border);
104 virtual GmpFemPhysics::FemResultType fillPressureValues(const GmElement* e, double press, int border);
105protected:
106 // See comments on the base class
107 virtual const GmElementDof* dofMapping(GmCellType type) const;
108
111 {
114
115 // --- NO ADDING BELOW THIS LINE
117 };
118
121 {
123
124 // --- NO ADDING BELOW THIS LINE
126 };
127
139
140//private:
142
143};
144
145#endif
Dual flow hydraulic 2D & 3D for Quad, Tri, Hex and Tet.
Definition gmpHydraulicBrinkmanFlow.h:38
QMap< int, double > _bcData
List with bc Data.
Definition gmpHydraulicBrinkmanFlow.h:141
virtual bool fillFixedNodalPressureBcLists(int dofId, QVector< int > &nodes, QVector< int > &dof, QVector< double > &values) const
Fills fixed pressure boundary conditions.
Definition gmpHydraulicBrinkmanFlow.cpp:392
virtual GmpFemPhysics::FemResultType fillPressureValues(const GmElement *e, double press, int border)
Fills pressure values for fixed pressure boundary conditions.
Definition gmpHydraulicBrinkmanFlow.cpp:320
void clearBcData()
Returns the bc value or NULL.
Definition gmpHydraulicBrinkmanFlow.h:100
void addBCData(int id, double value)
Adds bc node.
Definition gmpHydraulicBrinkmanFlow.h:91
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,...
Definition gmpHydraulicBrinkmanFlow.cpp:878
virtual bool calcDerivedResults(bool nonLinearSolver)
Calc velocity and flow on nodes and/or Gauss points.
Definition gmpHydraulicBrinkmanFlow.cpp:1037
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,...
Definition gmpHydraulicBrinkmanFlow.cpp:725
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 permea...
Definition gmpHydraulicBrinkmanFlow.cpp:952
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 o...
Definition gmpHydraulicBrinkmanFlow.cpp:987
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 el...
Definition gmpHydraulicBrinkmanFlow.cpp:823
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,...
Definition gmpHydraulicBrinkmanFlow.cpp:911
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 matr...
Definition gmpHydraulicBrinkmanFlow.cpp:766
virtual GmpFemPhysics::FemResultType fillElementData(const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
Fills the element matrices and vectors for a generic dual flow element.
Definition gmpHydraulicBrinkmanFlow.cpp:480
BrinkmanBoundaryConditionIds
IDs for accepted boundary condition types.
Definition gmpHydraulicBrinkmanFlow.h:121
@ NUM_BC_IDS
The number of boundary conditions ids above.
Definition gmpHydraulicBrinkmanFlow.h:125
@ FIXED_VF_BC_ID
Id for fixed node velocity boundary condition.
Definition gmpHydraulicBrinkmanFlow.h:122
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.
Definition gmpHydraulicBrinkmanFlow.cpp:109
virtual QList< int > nodeIds() const
Returns the node indexes.
Definition gmpHydraulicBrinkmanFlow.h:97
virtual double bcData(int id) const
Returns the bc value or NULL.
Definition gmpHydraulicBrinkmanFlow.h:94
virtual ~GmpHydraulicBrinkmanFlow()
Destructor.
Definition gmpHydraulicBrinkmanFlow.cpp:49
virtual int numBCData() const
returns number of fixed P bc data
Definition gmpHydraulicBrinkmanFlow.h:88
BrinkmanStateVarIds
IDs fo physics state vars.
Definition gmpHydraulicBrinkmanFlow.h:111
@ PL_BC_ID
Id for pressure load boundary condition.
Definition gmpHydraulicBrinkmanFlow.h:113
@ VF_ID
Id for retrieving the accessor to the fracture pore pressure state var.
Definition gmpHydraulicBrinkmanFlow.h:112
@ NUM_STATEVAR_IDS
The number of property ids above.
Definition gmpHydraulicBrinkmanFlow.h:116
virtual const QVariantMap * physicsMetaDataMap()
Returns a reference for the brinkman attribute map, built when the function is called for the first t...
Definition gmpHydraulicBrinkmanFlow.cpp:56
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 di...
Definition gmpHydraulicBrinkmanFlow.cpp:637
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',...
Definition gmpHydraulicBrinkmanFlow.cpp:156
BrinkmanBoundaryConditionValueIds
IDs for property values from accepted boundary condition types.
Definition gmpHydraulicBrinkmanFlow.h:130
@ NUM_BCV_IDS
The number of boundary conditions value ids above.
Definition gmpHydraulicBrinkmanFlow.h:137
@ BC_VX_ID
Nodal velocity for fixed node velocity boundary condition.
Definition gmpHydraulicBrinkmanFlow.h:131
@ BC_PL_ID
edge pressure load boundary condition
Definition gmpHydraulicBrinkmanFlow.h:134
@ BC_VY_ID
Nodal velocity for fixed node velocity boundary condition.
Definition gmpHydraulicBrinkmanFlow.h:132
@ BC_VZ_ID
Nodal velocity for fixed node velocity boundary condition.
Definition gmpHydraulicBrinkmanFlow.h:133
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.
Definition gmpHydraulicBrinkmanFlow.cpp:646
Basic class for the hydraulic physics plugin object.
Definition gmpHydraulic.h:39
@ NUM_BC_IDS
The number of boundary conditions ids above.
Definition gmpHydraulic.h:200
@ NUM_STATEVAR_IDS
The number of property ids above.
Definition gmpHydraulic.h:147
@ NUM_BCV_IDS
The number of boundary conditions value ids above.
Definition gmpHydraulic.h:211
GmCellType
arma::mat GmMatrix
arma::vec GmVector
Declaration of the gmpHydraulic classes.
QList< Key > uniqueKeys() const const
void clear()
QMap::iterator insert(const Key &key, const T &value)
int size() const const
const T value(const Key &key, const T &defaultValue) const const