MechanicalFemPhysics
The GeMA Mechanical FEM Physics Plugin
Loading...
Searching...
No Matches
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
33#include "gmpMechanicPoint.h"
35
36class GMP_MECHANICAL_PHYSICS_API_EXPORT GmpMechanicalMaterialHencky : public GmpMechanicalMaterialHyperelastic
37{
38protected:
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
46public:
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
Definition gmpMechanicPoint.h:33
Definition gmpMaterialHencky.h:37
virtual ~GmpMechanicalMaterialHencky()
Virtual destructor.
Definition gmpMaterialHencky.h:53
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
virtual bool isIsotropic() const
Returns true if the material is isotropic, false otherwise.
Definition gmpMaterialHencky.h:69
GmpMechanicalMaterialHencky(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition gmpMaterialHencky.h:49
Definition gmpMaterialHyperelastic.h:36
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
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
arma::mat GmMatrix
arma::vec GmVector
Declaration of the GmpMechanicalMaterialHyperelastic class.
Declaration of the GmpMechanicPoint class.
Declaration of useful configuration definitions for the plugin library.
Declaration of the GmpMechanicalMaterial class.