MechanicalFemPhysics
The GeMA Mechanical FEM Physics Plugin
gmpMaterialHencky.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_MECHANICALMATERIAL_HENCKY_H_
26 #define _GEMA_PLUGIN_MECHANICALMATERIAL_HENCKY_H_
27 
28 #include "gmpMechanicalConfig.h"
29 #include "gmpFemPhysics.h"
30 #include "gmMathUtils.h"
31 
32 #include "gmpMechanicalMaterial.h"
33 #include "gmpMechanicPoint.h"
35 
36 class GMP_MECHANICAL_PHYSICS_API_EXPORT GmpMechanicalMaterialHencky : public GmpMechanicalMaterialHyperelastic
37 {
38 protected:
39 
40  // TO DO: how to implement an internal variable, free from concurrence?
41  // principal streches and directions in the
42  // reference (Total Lagrangian) or current (Updated Lagrangian) configuration
43  //GmVector* _pStrains;
44  //GmMatrix* _pDirections;
45 
46 public:
47 
49  GmpMechanicalMaterialHencky(int typeIndex, QString typeName, const GmLogCategory& logger)
50  : GmpMechanicalMaterialHyperelastic(typeIndex, typeName, logger) {}
51 
54 
56  static GmpFemPhysicsCommonMaterial* instance(GmSimulationData* simulation, int typeIndex, QString typeName, const GmLogCategory& logger)
57  {
58  Q_UNUSED(simulation);
59  return new GmpMechanicalMaterialHencky(typeIndex, typeName, logger);
60  }
61 
62  // Returns a map with material associated properties.
63  virtual const QVariantMap* materialMetaDataMap();
64 
65  // Returns the stresses according to the material behavior adopted
66  virtual bool mechanicalConstitutiveModel(const GmElement* e, GmMatrix& Dep, const GmpMechanicPoint* mp, const GmVector* coord, const GmVector& Time, unsigned nc, bool ips) const;
67 
69  virtual bool isIsotropic() const { return true; }
70 
71  // Updates deformation gradient F
72  virtual bool updateDeformationGradient(GmMatrix& F, const GmElement* e, const GmVector* coord, int ip, bool ips = false) const;
73 
74  //
75  virtual void potentialdLambda(const GmElement* e, const GmVector* coord, int ip, GmVector& dL, const GmVector& L) const;
76 
77  //
78  virtual void potentialdLambdaSquare(const GmElement* e, const GmVector* coord, int ip, GmVector& dL2, const GmVector& L) const;
79 
80  //
81  virtual void potentiald2LambdaSquare(const GmElement* e, const GmVector* coord, int ip, GmMatrix& d2L2, const GmVector& L) const;
82 
83 
84  virtual void materialC(const GmVector& L, const GmMatrix& N, const GmVector& ss, const GmElement* e, unsigned sc, GmMatrix& D, const GmVector* coord, int ip) const;
85  //virtual void dEGdPK2(const GmElement*, unsigned, GmMatrix&, const GmVector*, unsigned, int) const;
86 
87  //virtual void dsdea(const GmMatrix& C, const GmMatrix& F, GmMatrix& c, int d) const;
88  virtual void spatialC(const GmVector& L, const GmMatrix& N, const GmVector& ss, const GmElement* e, unsigned sc, GmMatrix& D, const GmMatrix& F, const GmVector* coord, int ip) const;
89 
90  //GmVector PrincipalStrains;
91  //GmMatrix PrincipalDirections;
92 };
93 
94 #endif
virtual ~GmpMechanicalMaterialHencky()
Virtual destructor.
Definition: gmpMaterialHencky.h:53
Declaration of the GmpMechanicalMaterial class.
virtual bool isIsotropic() const
Returns true if the material is isotropic, false otherwise.
Definition: gmpMaterialHencky.h:69
Definition: gmpMechanicPoint.h:32
Definition: gmpMaterialHencky.h:36
Definition: gmpMaterialHyperelastic.h:35
static GmpFemPhysicsCommonMaterial * instance(GmSimulationData *simulation, int typeIndex, QString typeName, const GmLogCategory &logger)
A "factory" function used to register the material with the physics material factory.
Definition: gmpMaterialHencky.h:56
Declaration of the GmpMechanicPoint class.
virtual const QVariantMap * materialMetaDataMap()
Returns a pointer to the material attribute map, built when the function is called for the first time...
Definition: gmpMaterialHyperelastic.cpp:40
Declaration of usefull configuration definitions for the plugin library.
GmpMechanicalMaterialHencky(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition: gmpMaterialHencky.h:49
virtual bool mechanicalConstitutiveModel(const GmElement *e, GmMatrix &Dep, const GmpMechanicPoint *mp, const GmVector *coord, const GmVector &Time, unsigned nc, bool ips) const
Evaluates stress and tangent matrix according to the material behavior adopted.
Definition: gmpMaterialHyperelastic.cpp:111
Declaration of the GmpMechanicalMaterialHyperelastic class.
arma::vec GmVector
arma::mat GmMatrix