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.
sintering_spheric_continuum_particle.h
Go to the documentation of this file.
1 // Kratos Multi-Physics - ThermalDEM Application
2 //
3 // License: BSD License
4 // Kratos default license: kratos/license.txt
5 //
6 // Main authors: Szymon Nosewicz (IPPT PAN, Warsaw, Poland)
7 // Miguel Angel Celigueta (CIMNE, maceli@cimne.upc.edu)
8 //
9 
10 /*
11  By Rafael Rangel (2022):
12  This class was brought from the DEMApp.
13  It was derived from a template thermal_spheric_particle that in turn was derived from spheric_continuum_particle.
14  Now, it is derived from thermal_spheric_continuum_particle, which has the same implementation of the old
15  template thermal_spheric_particle.
16 */
17 
18 #if !defined(KRATOS_SINTERING_SPHERIC_CONTINUUM_PARTICLE_H_INCLUDED)
19 #define KRATOS_SINTERING_SPHERIC_CONTINUUM_PARTICLE_H_INCLUDED
20 
21 // System includes
22 #include <string>
23 #include <iostream>
24 
25 // External includes
26 #include "includes/define.h"
28 #include "custom_utilities/AuxiliaryFunctions.h"
29 #include "utilities/openmp_utils.h"
34 
35 // Project includes
38 
39 namespace Kratos
40 {
41  class KRATOS_API(THERMAL_DEM_APPLICATION) SinteringSphericContinuumParticle : public ThermalSphericContinuumParticle
42  {
43  public:
44 
45  // Pointer definition
47 
51 
52  typedef Node NodeType;
54  typedef std::size_t IndexType;
57 
58  // Constructor
60  SinteringSphericContinuumParticle(IndexType NewId, GeometryType::Pointer pGeometry) : ThermalSphericContinuumParticle(NewId, pGeometry) {};
62  SinteringSphericContinuumParticle(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties) : ThermalSphericContinuumParticle(NewId, pGeometry, pProperties) {};
63 
64  Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override {
65  return Element::Pointer(new SinteringSphericContinuumParticle(NewId, GetGeometry().Create(ThisNodes), pProperties));
66  }
67 
68  // Destructor
70 
71  // Public methods
72  void Initialize (const ProcessInfo& r_process_info) override;
73  void InitializeSolutionStep (const ProcessInfo& r_process_info) override;
74  void UpdateContinuumNeighboursVector (const ProcessInfo& r_process_info) override;
75  void SetInitialSinteringSphereContacts (const ProcessInfo& r_process_info);
76  void InitializeForceComputation (const ProcessInfo& r_process_info) override;
77  void ComputeOtherBallToBallForces (array_1d<double, 3>& other_ball_to_ball_forces) override;
78  //double GetInitialDelta (int index) override;
79  void ComputeContactArea (const double rmin, double indentation, double& calculation_area) override;
80 
83  std::vector<double> mOldNeighbourSinteringDisplacement; // initialization of a container of sintering displ - old
84  std::vector<double> mActualNeighbourSinteringDisplacement; // initialization of a container of sintering displ - actual
85 
86  }; // Class SinteringSphericContinuumParticle
87 } // namespace Kratos
88 
89 #endif // KRATOS_SINTERING_SPHERIC_CONTINUUM_PARTICLE_H_INCLUDED defined
std::size_t IndexType
Definition: flags.h:74
Geometry base class.
Definition: geometry.h:71
typename TContainerType::iterator ptr_iterator
Definition: global_pointers_vector.h:85
This class defines the node.
Definition: node.h:65
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
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
Definition: sintering_spheric_continuum_particle.h:42
SinteringSphericContinuumParticle()
Definition: sintering_spheric_continuum_particle.h:59
SinteringSphericContinuumParticle(IndexType NewId, NodesArrayType const &ThisNodes)
Definition: sintering_spheric_continuum_particle.h:61
std::vector< double > mActualNeighbourSinteringDisplacement
Definition: sintering_spheric_continuum_particle.h:84
double mSinteringDisplacement
Definition: sintering_spheric_continuum_particle.h:81
SinteringSphericContinuumParticle(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Definition: sintering_spheric_continuum_particle.h:62
ParticleWeakVectorType::ptr_iterator ParticleWeakIteratorType_ptr
Definition: sintering_spheric_continuum_particle.h:49
std::size_t IndexType
Definition: sintering_spheric_continuum_particle.h:54
Node NodeType
Definition: sintering_spheric_continuum_particle.h:52
std::vector< double > mOldNeighbourSinteringDisplacement
Definition: sintering_spheric_continuum_particle.h:83
Properties PropertiesType
Definition: sintering_spheric_continuum_particle.h:56
GlobalPointersVector< Element >::iterator ParticleWeakIteratorType
Definition: sintering_spheric_continuum_particle.h:50
GlobalPointersVector< Element > ParticleWeakVectorType
Definition: sintering_spheric_continuum_particle.h:48
Element::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override
It creates a new element pointer.
Definition: sintering_spheric_continuum_particle.h:64
double mSinteringDrivingForce
Definition: sintering_spheric_continuum_particle.h:82
SinteringSphericContinuumParticle(IndexType NewId, GeometryType::Pointer pGeometry)
Definition: sintering_spheric_continuum_particle.h:60
Geometry< Node > GeometryType
Definition: sintering_spheric_continuum_particle.h:55
virtual ~SinteringSphericContinuumParticle()
Definition: sintering_spheric_continuum_particle.h:69
Geometry< NodeType >::PointsArrayType NodesArrayType
Definition: sintering_spheric_continuum_particle.h:53
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(SinteringSphericContinuumParticle)
Definition: thermal_spheric_continuum_particle.h:41
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
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
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21