KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
exponential_cohesive_3D_law.hpp
Go to the documentation of this file.
1 // | / |
2 // ' / __| _` | __| _ \ __|
3 // . \ | ( | | ( |\__ `
4 // _|\_\_| \__,_|\__|\___/ ____/
5 // Multi-Physics
6 //
7 // License: BSD License
8 // Kratos default license: kratos/license.txt
9 //
10 // Main authors: Ignasi de Pouplana
11 //
12 
13 #if !defined (KRATOS_EXPONENTIAL_COHESIVE_3D_LAW_H_INCLUDED)
14 #define KRATOS_EXPONENTIAL_COHESIVE_3D_LAW_H_INCLUDED
15 
16 // System includes
17 
18 // Project includes
19 #include "includes/serializer.h"
20 
21 // Application includes
22 #include "custom_constitutive/bilinear_cohesive_3D_law.hpp"
24 
25 namespace Kratos
26 {
27 
28 class KRATOS_API(POROMECHANICS_APPLICATION) ExponentialCohesive3DLaw : public BilinearCohesive3DLaw
29 {
30 
31 public:
32 
35 
37 
38 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
39 
40  // Default Constructor
42  {
43  }
44 
45  ConstitutiveLaw::Pointer Clone() const override
46  {
47  return Kratos::make_shared<ExponentialCohesive3DLaw>(ExponentialCohesive3DLaw(*this));
48  }
49 
50  // Copy Constructor
52  {
53  }
54 
55  // Destructor
57  {
58  }
59 
60 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
61 
62  int Check(const Properties& rMaterialProperties, const GeometryType& rElementGeometry, const ProcessInfo& rCurrentProcessInfo) const override;
63 
64  void InitializeMaterial( const Properties& rMaterialProperties,const GeometryType& rElementGeometry,const Vector& rShapeFunctionsValues ) override;
65 
66 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
67 
68  void FinalizeMaterialResponseCauchy (Parameters & rValues) override;
69 
70 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
71 
72  double& GetValue( const Variable<double>& rThisVariable, double& rValue ) override;
73 
74 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
75 
76 protected:
77 
78  // Member Variables
80 
81 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
82 
83  void InitializeConstitutiveLawVariables(ConstitutiveLawVariables& rVariables, Parameters& rValues) override;
84 
85  void ComputeEquivalentStrain(ConstitutiveLawVariables& rVariables, Parameters& rValues) override;
86 
87  void ComputeDamageVariable(ConstitutiveLawVariables& rVariables, Parameters& rValues);
88 
89  virtual void ComputeCriticalDisplacement(ConstitutiveLawVariables& rVariables, Parameters& rValues);
90 
91  void ComputeConstitutiveMatrix(Matrix& rConstitutiveMatrix,
92  ConstitutiveLawVariables& rVariables,
93  Parameters& rValues) override;
94 
95  void ComputeStressVector(Vector& rStressVector,
96  ConstitutiveLawVariables& rVariables,
97  Parameters& rValues) override;
98 
99  double MacaulayBrackets(const double& Value);
100 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
101 
102 private:
103 
104  // Serialization
105 
106  friend class Serializer;
107 
108  void save(Serializer& rSerializer) const override
109  {
111  }
112 
113  void load(Serializer& rSerializer) override
114  {
116  }
117 
118 }; // Class ExponentialCohesive3DLaw
119 } // namespace Kratos.
120 #endif // KRATOS_EXPONENTIAL_COHESIVE_3D_LAW_H_INCLUDED defined
Definition: bilinear_cohesive_3D_law.hpp:31
Definition: constitutive_law.h:47
Definition: exponential_cohesive_3D_law.hpp:29
BilinearCohesive3DLaw BaseType
Definition of the base class.
Definition: exponential_cohesive_3D_law.hpp:34
double mDamageVariable
Definition: exponential_cohesive_3D_law.hpp:79
~ExponentialCohesive3DLaw() override
Definition: exponential_cohesive_3D_law.hpp:56
ExponentialCohesive3DLaw(const ExponentialCohesive3DLaw &rOther)
Definition: exponential_cohesive_3D_law.hpp:51
KRATOS_CLASS_POINTER_DEFINITION(ExponentialCohesive3DLaw)
ConstitutiveLaw::Pointer Clone() const override
Clone function (has to be implemented by any derived class)
Definition: exponential_cohesive_3D_law.hpp:45
ExponentialCohesive3DLaw()
Definition: exponential_cohesive_3D_law.hpp:41
Geometry base class.
Definition: geometry.h:71
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
Parameters GetValue(Parameters &rParameters, const std::string &rEntry)
Definition: add_kratos_parameters_to_python.cpp:53
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307
Definition: bilinear_cohesive_3D_law.hpp:84
Definition: constitutive_law.h:189