MechanicalFemPhysics
The GeMA Mechanical FEM Physics Plugin
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 
34 class GMP_MECHANICAL_PHYSICS_API_EXPORT GmpMaterialBreslerPister : public GmpMaterialElastoplastic
35 {
36 protected:
39  {
43 
44  // --- NO ADDING BELOW THIS LINE
46  };
47 
48 public:
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
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
Id for retrieving the friction angle accessor.
Definition: gmpMaterialBreslerPister.h:41
The number of property ids above.
Definition: gmpMaterialBreslerPister.h:45
The number of property ids above.
Definition: gmpMaterialElastoplastic.h:79
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
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:38
Definition: gmpMaterialBreslerPister.h:34
Declaration of the gmpMaterialElastoplastic classes.
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 bool isIsotropic() const
Returns true if the material is isotropic, false otherwise.
Definition: gmpMaterialBreslerPister.h:68
Declaration of the GmpMechanicPoint class.
GmpMaterialBreslerPister(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition: gmpMaterialBreslerPister.h:51
virtual double frictionAngle(const GmElement *e, const GmVector *coord, int ip) const
Returns the material friction angle.
Definition: gmpMaterialBreslerPister.h:76
arma::vec GmVector
Definition: gmpMaterialElastoplastic.h:35
arma::mat GmMatrix
virtual ~GmpMaterialBreslerPister()
Virtual destructor.
Definition: gmpMaterialBreslerPister.h:55
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