MechanicalFemPhysics
The GeMA Mechanical FEM Physics Plugin
Loading...
Searching...
No Matches
gmpMaterialBreslerPister.h
Go to the documentation of this file.
1/************************************************************************
2**
3** Copyright (C) 2014 by Nilthson NoreƱa
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
26#ifndef _GEMA_PLUGIN_MECHANICALMATERIAL_BRESLER_PISTER_H_
27#define _GEMA_PLUGIN_MECHANICALMATERIAL_BRESLER_PISTER_H_
28
30#include "gmpMechanicPoint.h"
31#include "gmpFemPhysics.h"
32#include "gmMathUtils.h"
33
34class GMP_MECHANICAL_PHYSICS_API_EXPORT GmpMaterialBreslerPister : public GmpMaterialElastoplastic
35{
36protected:
39 {
43
44 // --- NO ADDING BELOW THIS LINE
46 };
47
48public:
49
51 GmpMaterialBreslerPister(int typeIndex, QString typeName, const GmLogCategory& logger)
52 : GmpMaterialElastoplastic(typeIndex, typeName, logger) {}
53
56
58 static GmpFemPhysicsCommonMaterial* instance(GmSimulationData* simulation, int typeIndex, QString typeName, const GmLogCategory& logger)
59 {
60 Q_UNUSED(simulation);
61 return new GmpMaterialBreslerPister(typeIndex, typeName, logger);
62 }
63
64 // Returns a map with material associated properties.
65 virtual const QVariantMap* materialMetaDataMap();
66
68 virtual bool isIsotropic() const { return true; }
69
71 virtual double cohesion(const GmElement* e, const GmVector* coord, int ip) const
72 {
73 return propertyAc(ST_ID)->scalarValueAt(e, coord, ip);
74 }
76 virtual double frictionAngle(const GmElement* e, const GmVector* coord, int ip) const
77 {
78 return propertyAc(SC_ID)->scalarValueAt(e, coord, ip);
79 }
81 virtual double dilationAngle(const GmElement* e, const GmVector* coord, int ip) const
82 {
83 return propertyAc(SB_ID)->scalarValueAt(e, coord, ip);
84 }
85
86 // Yield criterion
87 virtual double yieldCriterion(const GmElement* e, const GmVector& s, const GmVector* coord, int ip, unsigned sc) const;
88 virtual bool yieldStressGradient(const GmElement* e, GmVector& dfs, const GmVector& s, const GmVector* coord, int ip, unsigned sc, bool ips) const;
89 virtual bool yieldHessian(const GmElement* e, GmMatrix& dfss, const GmVector& s, const GmVector* coord, int ip, unsigned sc, bool ips) const;
90
91 // Plastic potential
92 virtual double plasticFPotential(const GmElement* e, const GmVector& s, const GmVector* coord, int ip, unsigned sc) const;
93 virtual bool flowVector(const GmElement* e, GmVector& dgs, const GmVector& s, const GmVector* coord, int ip, unsigned sc, bool ips) const;
94 virtual bool flowVectorStressGradient(const GmElement* e, GmMatrix& dgss, const GmVector& s, const GmVector* coord, int ip, unsigned sc, bool ips) const;
95
96 virtual double yieldStrengthRatio(const GmElement* e, const GmVector& S, const GmVector* coord, int ip, unsigned sc) const;
97
98};
99
100#endif
Definition gmpMaterialBreslerPister.h:35
virtual ~GmpMaterialBreslerPister()
Virtual destructor.
Definition gmpMaterialBreslerPister.h:55
virtual double frictionAngle(const GmElement *e, const GmVector *coord, int ip) const
Returns the material friction angle.
Definition gmpMaterialBreslerPister.h:76
virtual double dilationAngle(const GmElement *e, const GmVector *coord, int ip) const
Returns the material dilation angle.
Definition gmpMaterialBreslerPister.h:81
ElementPropertyIds
IDs for material element properties.
Definition gmpMaterialBreslerPister.h:39
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpMaterialBreslerPister.h:45
@ SC_ID
Id for retrieving the friction angle accessor.
Definition gmpMaterialBreslerPister.h:41
@ SB_ID
Id for retrieving the dilatance angle accessor.
Definition gmpMaterialBreslerPister.h:42
virtual double cohesion(const GmElement *e, const GmVector *coord, int ip) const
Returns the material cohesion.
Definition gmpMaterialBreslerPister.h:71
virtual bool isIsotropic() const
Returns true if the material is isotropic, false otherwise.
Definition gmpMaterialBreslerPister.h:68
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 gmpMaterialBreslerPister.h:58
GmpMaterialBreslerPister(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition gmpMaterialBreslerPister.h:51
Definition gmpMaterialElastoplastic.h:36
@ NUM_PROPERTY_IDS
The number of property ids above.
Definition gmpMaterialElastoplastic.h:79
virtual double yieldStrengthRatio(const GmElement *e, const GmVector &S, const GmVector *coord, int ip, unsigned sc) const =0
Returns the Yield Strength Ratio (Ysr)
virtual const QVariantMap * materialMetaDataMap()
Returns a pointer to the material/Gauus attribute map, built when the function is called for the firs...
Definition gmpMaterialElastoplastic.cpp:45
arma::mat GmMatrix
arma::vec GmVector
Declaration of the gmpMaterialElastoplastic classes.
Declaration of the GmpMechanicPoint class.