Xfem
The Xfem Plugin
xfemCohesiveExponentialSoftening.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_XFEM_MATERIAL_COHESIVE_EXPONENTIALSOFTENING_H_
25 #define _GEMA_XFEM_MATERIAL_COHESIVE_EXPONENTIALSOFTENING_H_
26 
27 
28 #include "xfemMaterial.h"
29 #include "gmpFemPhysics.h"
30 #include "gmMathUtils.h"
31 
33 {
34 protected:
37  {
42 
43  // --- NO ADDING BELOW THIS LINE
45  };
46  // Check the damage initiation criteria
47  virtual double damageInitiationcriteria(const GmElement* e, GmVector strain, const GmVector* coord, int ip, int nc) const;
48 
49  // returns the scalar damage value "Sdvg"
50  virtual double scalarDamageVariable(const GmElement* e, const GmVector* coord, int ip, double de, double di, double df) const;
51 
52  // returns the gradient of the damage variable in relation to the equivalente displacement
53  // Hd = d(Sdvg)/d(del_e)
54  virtual double deriveDamage(const GmElement* e, const GmVector* coord, int ip, double de, double di, double df) const;
55 
56 public:
58  XfemCohesiveExponentialSoftening(int typeIndex, QString typeName, const GmLogCategory& logger)
59  :XfemMaterial(typeIndex, typeName, logger){}
60 
63 
65  static GmpFemPhysicsCommonMaterial* instance(int typeIndex, QString typeName, const GmLogCategory& logger)
66  {
67  return new XfemCohesiveExponentialSoftening(typeIndex, typeName, logger);
68  }
69 
70  // Returns a map with material associated properties.
71  virtual const QVariantMap* materialMetaDataMap();
72 
73  // Returns the constitutive tangent matrix
74  virtual void tangentModulus(const GmElement* e, GmMatrix& Dep, const GmpMechanicPoint* mp, const GmVector* coord, unsigned nc) const;
75 
76  // Returns the stresses according to the material behavior adopted
77  virtual void returnMapping(const GmElement* e, GmMatrix& Dep, const GmpMechanicPoint* mp, const GmVector* coord, unsigned nc) const;
78 
80  virtual double normalStrength(const GmElement* e, const GmVector* coord, int ip) const
81  {
82  return propertyAc(Sni_ID)->scalarValueAt(e, coord, ip);
83  }
84 
86  virtual double shearStrength(const GmElement* e, const GmVector* coord, int ip) const
87  {
88  return propertyAc(Tsi_ID)->scalarValueAt(e, coord, ip);
89  }
90 
92  virtual double shearStrengthTwo(const GmElement* e, const GmVector* coord, int ip) const
93  {
94  return propertyAc(Tti_ID)->scalarValueAt(e, coord, ip);
95  }
96 
98  virtual double equivalentSeparation(const GmElement* e, const GmVector* coord, int ip) const
99  {
100  return propertyAc(Ed_ID)->scalarValueAt(e, coord, ip);
101  }
102 
103 };
104 #endif
Definition: xfemCohesiveExponentialSoftening.h:32
Id for retrieving the shear strength.
Definition: xfemCohesiveExponentialSoftening.h:40
virtual double shearStrengthTwo(const GmElement *e, const GmVector *coord, int ip) const
Returns the shear strength at direction 2 of the interface element.
Definition: xfemCohesiveExponentialSoftening.h:92
Id for retrieving the normal strength.
Definition: xfemCohesiveExponentialSoftening.h:39
Declaration of the xfemMaterial classes.
The number of property ids above.
Definition: xfemCohesiveExponentialSoftening.h:44
Id for retrieving the equivalent separation where the softening takes place.
Definition: xfemCohesiveExponentialSoftening.h:38
Basic class for the elastic xfem material plugin object.
Definition: xfemMaterial.h:34
static GmpFemPhysicsCommonMaterial * instance(int typeIndex, QString typeName, const GmLogCategory &logger)
A "factory" function used to register the material with the physics material factory.
Definition: xfemCohesiveExponentialSoftening.h:65
Id for retrieving the tangential strength.
Definition: xfemCohesiveExponentialSoftening.h:41
The number of property ids above.
Definition: xfemMaterial.h:183
virtual double shearStrength(const GmElement *e, const GmVector *coord, int ip) const
Returns the shear strength at direction 1 of the interface element.
Definition: xfemCohesiveExponentialSoftening.h:86
virtual double equivalentSeparation(const GmElement *e, const GmVector *coord, int ip) const
Returns the normal elastic stiffness of the interface element.
Definition: xfemCohesiveExponentialSoftening.h:98
virtual const QVariantMap * materialMetaDataMap()
Returns a pointer to the material attribute map, built when the function is called for the first time...
Definition: xfemCohesiveExponentialSoftening.cpp:35
arma::vec GmVector
virtual double normalStrength(const GmElement *e, const GmVector *coord, int ip) const
Returns the normal strength of the interface element.
Definition: xfemCohesiveExponentialSoftening.h:80
arma::mat GmMatrix
XfemCohesiveExponentialSoftening(int typeIndex, QString typeName, const GmLogCategory &logger)
Constructor. Gets as parameters the material index and its name.
Definition: xfemCohesiveExponentialSoftening.h:58
virtual ~XfemCohesiveExponentialSoftening()
Virtual destructor.
Definition: xfemCohesiveExponentialSoftening.h:62
CohesiveExpPropertyIds
IDs for elastic interface material properties.
Definition: xfemCohesiveExponentialSoftening.h:36