MechanicalFemPhysics
The GeMA Mechanical FEM Physics Plugin
Loading...
Searching...
No Matches
gmpMechanicalLargeDisplacementSolid.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
24#ifndef _GEMA_PLUGIN_MECHANICAL_PHYSICS_LARGEDISPLACEMENT_SOLID_H_
25#define _GEMA_PLUGIN_MECHANICAL_PHYSICS_LARGEDISPLACEMENT_SOLID_H_
26
27#include "gmpMechanicalSolid.h"
28#include <gmpFemPhysicsCommon.h>
29#include <gmTrace.h>
30
31
32class GmGaussAccessor;
33
36class GMP_MECHANICAL_PHYSICS_API_EXPORT GmpMechanicalLargeDisplacementSolid: public GmpMechanicalSolid
37{
38public:
39
40 // constructor
41 GmpMechanicalLargeDisplacementSolid(const char* pluginType, GmSimulationData* simulation, QString id, QString description,
42 const GmpFemPhysicsCommonMaterialFactory* matFactory, const GmLogCategory& logger);
43
44 // destructor
46
49 {
51
52
53 // ------ NO ADDING BELOW THIS LINE
55 };
56
57 // set physic map
58 virtual const QVariantMap* physicsMetaDataMap();
59 virtual FemResultType fillElementData(const GmElement* e, GmpFemMatrixSet& elemMatrices, GmpFemVectorSet& elemVectors);
60
64 virtual double fillBuMatrix(const GmElement* e, const GmShape* shape, const GmVector& ncoord, const GmMatrix& X, const GmVector& N, const GmMatrix& J, GmMatrix& Bu);
65
68 virtual double fillBuMatrix(const GmElement* e, const GmShape* shape, const GmVector& ncoord, const GmMatrix& X, const GmVector& N, const GmMatrix& J, GmMatrix& Bu, const GmMatrix& F) = 0;
69
72 virtual void fillBnlMatrix(const GmElement* e, const GmShape* shape, const GmVector& ncoord, const GmMatrix& X, const GmVector& N, const GmMatrix& J, GmMatrix& Bnl, const GmMatrix& F) = 0;
73
76 virtual bool DeformationGradient(const GmElement* e, const GmMatrix& X0, const GmMatrix& Xt, const GmVector& N, const GmMatrix& J0, const GmMatrix& Jt, GmMatrix& F) = 0;
77
78protected:
79 // See comments on the base class
80 virtual bool checkAndLoadAttributeAccessors(LuaTable& nodeTable, LuaTable& cellTable, LuaTable& gaussTable);
81
82 // Fills the Green-Lagrange strain vector form
83 void GreenLagrangeStrain(const GmMatrix& F, GmVector& Ev, unsigned sc);
84
85 // Fills the Euler-Almansi strain vector form
86 void EulerAlmansiStrain(const GmMatrix& F, GmVector& ev, unsigned sc) const;
87
88 // Fills the Logarithm strain vector form
89 void LogarithmStrain(const GmMatrix& F, GmVector& elog, unsigned sc) const;
90
93 void NLStressStateMatrix(const GmVector& S, GmMatrix& SvM, const GmMatrix& F, int d) const;
94
95 // Fills the Cauchy stress vector form
96 void CauchyStress(const GmVector& S, GmVector& sv, const GmMatrix& F, int d) const;
97
98 //void FillDofIndexPosition(const GmElement * e, QList<int>& iUe);
99
101};
102
103#endif
Basic class for the mechanical physics plugin object.
Definition gmpMechanicalLargeDisplacementSolid.h:37
virtual double fillBuMatrix(const GmElement *e, const GmShape *shape, const GmVector &ncoord, const GmMatrix &X, const GmVector &N, const GmMatrix &J, GmMatrix &Bu, const GmMatrix &F)=0
Fills the Bu strain- displacement matrix for large displacements.
virtual void fillBnlMatrix(const GmElement *e, const GmShape *shape, const GmVector &ncoord, const GmMatrix &X, const GmVector &N, const GmMatrix &J, GmMatrix &Bnl, const GmMatrix &F)=0
Fills the Bnl strain- displacement matrix for large displacements.
GmTLS< GmMatrix, true > _F
Deformation gradient.
Definition gmpMechanicalLargeDisplacementSolid.h:100
PhysicsAttributeIds
IDs for physics attributes.
Definition gmpMechanicalLargeDisplacementSolid.h:49
@ NUM_ATTRI_IDS
The number of physics attribute ids above.
Definition gmpMechanicalLargeDisplacementSolid.h:54
virtual bool DeformationGradient(const GmElement *e, const GmMatrix &X0, const GmMatrix &Xt, const GmVector &N, const GmMatrix &J0, const GmMatrix &Jt, GmMatrix &F)=0
Fills the F deformation gradient matrix.
@ NUM_ATTRI_IDS
The number of physics attribute ids above.
Definition gmpMechanicalPhysics.h:102
virtual double fillBuMatrix(const GmElement *e, const GmShape *shape, const GmVector &ncoord, const GmMatrix &X, const GmVector &N, const GmMatrix &J, GmMatrix &Bu)=0
Given a point 'ncood', the element coordinate matrix 'X', the point shape functions 'N' and the trans...
Basic class for the mechanical physics plugin object.
Definition gmpMechanicalSolid.h:36
virtual bool checkAndLoadAttributeAccessors(LuaTable &nodeTable, LuaTable &cellTable, LuaTable &gaussTable)
Reimplementation of the common function t o init the _mechanicPoint structure.
Definition gmpMechanicalSolid.cpp:196
virtual FemResultType fillElementData(const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
Fills the element matrices and vectors for a generic elements.
Definition gmpMechanicalSolid.cpp:238
virtual const QVariantMap * physicsMetaDataMap()
Returns a reference for the single mechanical physics attribute map, built when the function is calle...
Definition gmpMechanicalSolid.cpp:62
arma::mat GmMatrix
arma::vec GmVector
Declaration of the GmpMechanicalPhysics class.