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.
Particle_Contact_Element.h
Go to the documentation of this file.
1 //
2 // Author: Miquel Santasusana msantasusana@cimne.upc.edu
3 //
4 
5 #if !defined(KRATOS_PARTICLE_CONTACT_ELEMENT_H_INCLUDED )
6 #define KRATOS_PARTICLE_CONTACT_ELEMENT_H_INCLUDED
7 
8 
9 
10 // System includes
11 
12 
13 // External includes
14 
15 
16 // Project includes
17 #include "includes/define.h"
18 #include "includes/serializer.h"
19 #include "includes/element.h"
21 #include "includes/variables.h"
22 //#include "includes/constitutive_law.h"
23 
24 namespace Kratos
25 {
26 
27 class KRATOS_API(DEM_APPLICATION) ParticleContactElement: public Element
28 {
29 
30 public:
31 
35  typedef ConstitutiveLawType::Pointer ConstitutiveLawPointerType;
38 
41 
43  ParticleContactElement(IndexType NewId, GeometryType::Pointer pGeometry);
44  ParticleContactElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
45 
47  virtual ~ParticleContactElement();
48 
49  Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override;
50 
51  void Initialize(const ProcessInfo& r_process_info) override;
52 
53  void InitializeSolutionStep(const ProcessInfo& r_process_info) override;
54 
55  void FinalizeSolutionStep(const ProcessInfo& r_process_info) override;
56 
57  void CalculateOnIntegrationPoints(const Variable<array_1d<double,3> >& rVariable, std::vector<array_1d<double,3> >& rOutput, const ProcessInfo& r_process_info) override;
58 
59  void CalculateOnIntegrationPoints(const Variable<double>& rVariable, std::vector<double>& Output, const ProcessInfo& r_process_info) override;
60 
61  void Calculate(const Variable<double>& rVariable, double& Output, const ProcessInfo& r_process_info) override;
62 
63  void PrepareForPrinting();
64 
65  void CalculateMeanContactArea(const bool has_mpi);
66 
71  double mContactSigma;
72  double mContactTau;
77 
78 protected:
79 
80 
81 private:
82 
83 
84  std::string Info() const override;
85 
86  friend class Serializer;
87 
88  // A private default constructor necessary for serialization
90 
91  virtual void save(Serializer& rSerializer) const override
92  {
94  }
95 
96  virtual void load(Serializer& rSerializer) override
97  {
98  KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, Element );
99  }
100 
101 }; // Class ParticleContactElement
102 
103 } // namespace Kratos.
104 #endif // KRATOS_PARTICLE_CONTACT_ELEMENT_H_INCLUDED defined
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Definition: constitutive_law.h:47
Base class for all Elements.
Definition: element.h:60
std::size_t IndexType
Definition: flags.h:74
IntegrationMethod
Definition: geometry_data.h:76
Definition: Particle_Contact_Element.h:28
double mContactTau
Definition: Particle_Contact_Element.h:72
ConstitutiveLaw ConstitutiveLawType
Reference type definition for constitutive laws.
Definition: Particle_Contact_Element.h:33
array_1d< double, 3 > mLocalContactForce
Definition: Particle_Contact_Element.h:69
array_1d< double, 3 > mElasticLocalRotationalMoment
Definition: Particle_Contact_Element.h:70
double mContactRadius
Definition: Particle_Contact_Element.h:76
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: Particle_Contact_Element.h:35
double mContactFailure
Definition: Particle_Contact_Element.h:73
void CalculateMeanContactArea(const bool has_mpi)
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: Particle_Contact_Element.h:37
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(ParticleContactElement)
Counted pointer of ParticleContactElement.
double mUnidimendionalDamage
Definition: Particle_Contact_Element.h:75
double mFailureCriterionState
Definition: Particle_Contact_Element.h:74
double mContactSigma
Definition: Particle_Contact_Element.h:71
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
pybind11::list CalculateOnIntegrationPoints(TObject &dummy, const Variable< TDataType > &rVariable, const ProcessInfo &rProcessInfo)
Definition: add_mesh_to_python.cpp:142
void InitializeSolutionStep(ConstructionUtility &rThisUtil, std::string ThermalSubModelPartName, std::string MechanicalSubModelPartName, std::string HeatFluxSubModelPartName, std::string HydraulicPressureSubModelPartName, bool thermal_conditions, bool mechanical_conditions, int phase)
Definition: add_custom_utilities_to_python.cpp:45
TDataType Calculate(GeometryType &dummy, const Variable< TDataType > &rVariable)
Definition: add_geometries_to_python.cpp:103
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307