MechanicalFemPhysics
The GeMA Mechanical FEM Physics Plugin
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 
32 class GmGaussAccessor;
33 
36 class GMP_MECHANICAL_PHYSICS_API_EXPORT GmpMechanicalLargeDisplacementSolid: public GmpMechanicalSolid
37 {
38 public:
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 
78 protected:
79  // See comments on the base class
80  virtual bool checkAndLoadAttributeAccessors(LuaTable& nodeTable, 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);
87 
88  // Fills the Logarithm strain vector form
89  void LogarithmStrain(const GmMatrix& F, GmVector& elog, unsigned sc);
90 
93  void NLStressStateMatrix(const GmVector& S, GmMatrix& SvM, const GmMatrix& F, int d);
94 
95  // Fills the Cauchy stress vector form
96  void CauchyStress(const GmVector& S, GmVector& sv, const GmMatrix& F, int d);
97 
98  //void FillDofIndexPosition(const GmElement * e, QList<int>& iUe);
99 
101 };
102 
103 #endif
The number of physics attribute ids above.
Definition: gmpMechanicalPhysics.h:101
virtual FemResultType fillElementData(const GmElement *e, GmpFemMatrixSet &elemMatrices, GmpFemVectorSet &elemVectors)
Fills the element matrices and vectors for a generic elements.
Definition: gmpMechanicalSolid.cpp:234
The number of physics attribute ids above.
Definition: gmpMechanicalLargeDisplacementSolid.h:54
virtual bool checkAndLoadAttributeAccessors(LuaTable &nodeTable, LuaTable &gaussTable)
Reimplementation of the common function t o init the _mechanicPoint structure.
Definition: gmpMechanicalSolid.cpp:192
virtual const QVariantMap * physicsMetaDataMap()
Returns a reference for the single mechanical physics attribute map, built when the function is calle...
Definition: gmpMechanicalSolid.cpp:61
Basic class for the mechanical physics plugin object.
Definition: gmpMechanicalSolid.h:35
Declaration of the GmpMechanicalPhysics class.
GmMatrix _F
Deformation gradient.
Definition: gmpMechanicalLargeDisplacementSolid.h:100
PhysicsAttributeIds
IDs for physics attributes.
Definition: gmpMechanicalLargeDisplacementSolid.h:48
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...
arma::vec GmVector
Basic class for the mechanical physics plugin object.
Definition: gmpMechanicalLargeDisplacementSolid.h:36
arma::mat GmMatrix