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_mechanics_application.h
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: Ilaria Iaconeta, Bodhinanda Chandra
11 //
12 //
13 
14 
15 #if !defined(KRATOS_PARTICLE_MECHANICS_APPLICATION_H_INCLUDED )
16 #define KRATOS_PARTICLE_MECHANICS_APPLICATION_H_INCLUDED
17 
18 // System includes
19 #include <string>
20 #include <iostream>
21 
22 // External includes
24 
25 // Project includes
26 #include "includes/define.h"
27 #include "includes/serializer.h"
30 
31 #include "includes/condition.h"
33 
34 #include "containers/flags.h"
35 
36 /* CONDITIONS */
47 
48 //---element
52 
53 //---constitutive laws
54 #include "custom_constitutive/linear_elastic_3D_law.hpp"
55 #include "custom_constitutive/linear_elastic_plane_stress_2D_law.hpp"
56 #include "custom_constitutive/linear_elastic_plane_strain_2D_law.hpp"
57 #include "custom_constitutive/linear_elastic_axisym_2D_law.hpp"
61 #include "custom_constitutive/hyperelastic_3D_law.hpp"
62 #include "custom_constitutive/hyperelastic_plane_strain_2D_law.hpp"
63 #include "custom_constitutive/hyperelastic_axisym_2D_law.hpp"
79 
80 //---flow rules
84 
85 //---yield criteria
88 
89 //---hardening laws
92 
93 namespace Kratos
94 {
95 
97 
102 class KRATOS_API(PARTICLE_MECHANICS_APPLICATION) KratosParticleMechanicsApplication : public KratosApplication
103 {
104 public:
107 
110 
114 
117 
120 
121 
125 
126 
130 
131  void Register() override;
132 
136 
137 
141 
142 
146 
148  std::string Info() const override
149  {
150  return "KratosParticleMechanicsApplication";
151  }
152 
154  void PrintInfo(std::ostream& rOStream) const override
155  {
156  rOStream << Info();
157  PrintData(rOStream);
158  }
159 
161  void PrintData(std::ostream& rOStream) const override
162  {
163  KRATOS_WATCH("in my application");
165  rOStream << "Variables:" << std::endl;
167  rOStream << std::endl;
168  rOStream << "Elements:" << std::endl;
169  KratosComponents<Element>().PrintData(rOStream);
170  rOStream << std::endl;
171  rOStream << "Conditions:" << std::endl;
172  KratosComponents<Condition>().PrintData(rOStream);
173  }
174 
175 
179 
180 
182 
183 protected:
186 
187 
191 
192 
196 
197 
201 
202 
206 
207 
211 
212 
216 
217 
219 
220 private:
223 
224 
225 
226  // static const ApplicationCondition msApplicationCondition;
227 
231 
232  // Elements
233  const MPMUpdatedLagrangian mMPMUpdatedLagrangian;
234  const MPMUpdatedLagrangianUP mMPMUpdatedLagrangianUP;
235  const MPMUpdatedLagrangianPQ mMPMUpdatedLagrangianPQ;
236 
237  // Deprecated Elements
238  const MPMUpdatedLagrangian mMPMUpdatedLagrangian2D3N;
239  const MPMUpdatedLagrangian mMPMUpdatedLagrangian3D4N;
240  const MPMUpdatedLagrangian mMPMUpdatedLagrangianUP2D3N;
241  const MPMUpdatedLagrangian mMPMUpdatedLagrangian2D4N;
242  const MPMUpdatedLagrangian mMPMUpdatedLagrangian3D8N;
243  const MPMUpdatedLagrangian mMPMUpdatedLagrangianAxisymmetry2D3N;
244  const MPMUpdatedLagrangian mMPMUpdatedLagrangianAxisymmetry2D4N;
245 
246  // Conditions
247  // Grid Conditions:
248  const MPMGridPointLoadCondition mMPMGridPointLoadCondition2D1N;
249  const MPMGridPointLoadCondition mMPMGridPointLoadCondition3D1N;
250  const MPMGridAxisymPointLoadCondition mMPMGridAxisymPointLoadCondition2D1N;
251  const MPMGridLineLoadCondition2D mMPMGridLineLoadCondition2D2N;
252  const MPMGridAxisymLineLoadCondition2D mMPMGridAxisymLineLoadCondition2D2N;
253  const MPMGridSurfaceLoadCondition3D mMPMGridSurfaceLoadCondition3D3N;
254  const MPMGridSurfaceLoadCondition3D mMPMGridSurfaceLoadCondition3D4N;
255  // Particle Conditions:
256  const MPMParticlePenaltyDirichletCondition mMPMParticlePenaltyDirichletCondition;
257  const MPMParticlePointLoadCondition mMPMParticlePointLoadCondition;
258 
259  // Deprecated Conditions
260  const MPMParticlePenaltyDirichletCondition mMPMParticlePenaltyDirichletCondition2D3N;
261  const MPMParticlePenaltyDirichletCondition mMPMParticlePenaltyDirichletCondition2D4N;
262  const MPMParticlePenaltyDirichletCondition mMPMParticlePenaltyDirichletCondition3D4N;
263  const MPMParticlePenaltyDirichletCondition mMPMParticlePenaltyDirichletCondition3D8N;
264  const MPMParticlePointLoadCondition mMPMParticlePointLoadCondition2D3N;
265  const MPMParticlePointLoadCondition mMPMParticlePointLoadCondition3D4N;
266  const MPMParticlePointLoadCondition mMPMParticlePointLoadCondition2D4N;
267  const MPMParticlePointLoadCondition mMPMParticlePointLoadCondition3D8N;
268 
269 
270  // Constitutive laws
271  // CL: Linear Elastic laws
272  const LinearElastic3DLaw mLinearElastic3DLaw;
273  const LinearElasticPlaneStress2DLaw mLinearElasticPlaneStress2DLaw;
274  const LinearElasticPlaneStrain2DLaw mLinearElasticPlaneStrain2DLaw;
275  const LinearElasticAxisym2DLaw mLinearElasticAxisym2DLaw;
276  // CL: Johnson Cooker Thermal Plastic laws
277  const JohnsonCookThermalPlastic3DLaw mJohnsonCookThermalPlastic3DLaw;
278  const JohnsonCookThermalPlastic2DPlaneStrainLaw mJohnsonCookThermalPlastic2DPlaneStrainLaw;
279  const JohnsonCookThermalPlastic2DAxisymLaw mJohnsonCookThermalPlastic2DAxisymLaw;
280  // CL: Hyperelastic laws
281  const HyperElastic3DLaw mHyperElastic3DLaw;
282  const HyperElasticPlaneStrain2DLaw mHyperElasticPlaneStrain2DLaw;
283  const HyperElasticAxisym2DLaw mHyperElasticAxisym2DLaw;
284  const HyperElasticUP3DLaw mHyperElasticUP3DLaw;
285  const HyperElasticPlaneStrainUP2DLaw mHyperElasticPlaneStrainUP2DLaw;
286  // CL: Mohr Coulomb
287  const HenckyMCPlastic3DLaw mHenckyMCPlastic3DLaw;
288  const HenckyMCPlasticPlaneStrain2DLaw mHenckyMCPlasticPlaneStrain2DLaw;
289  const HenckyMCPlasticAxisym2DLaw mHenckyMCPlasticAxisym2DLaw;
290  const HenckyMCPlasticUP3DLaw mHenckyMCPlasticUP3DLaw;
291  const HenckyMCPlasticPlaneStrainUP2DLaw mHenckyMCPlasticPlaneStrainUP2DLaw;
292  // CL: Mohr Coulomb Strain Softening
293  const HenckyMCStrainSofteningPlastic3DLaw mHenckyMCStrainSofteningPlastic3DLaw;
294  const HenckyMCStrainSofteningPlasticPlaneStrain2DLaw mHenckyMCStrainSofteningPlasticPlaneStrain2DLaw;
295  const HenckyMCStrainSofteningPlasticAxisym2DLaw mHenckyMCStrainSofteningPlasticAxisym2DLaw;
296  // CL: Borja Cam Clay
297  const HenckyBorjaCamClayPlastic3DLaw mHenckyBorjaCamClayPlastic3DLaw;
298  const HenckyBorjaCamClayPlasticPlaneStrain2DLaw mHenckyBorjaCamClayPlasticPlaneStrain2DLaw;
299  const HenckyBorjaCamClayPlasticAxisym2DLaw mHenckyBorjaCamClayPlasticAxisym2DLaw;
300  // CL: Displacement-based Newtonian Fluid
301  const DispNewtonianFluid3DLaw mDispNewtonianFluid3DLaw;
302  const DispNewtonianFluidPlaneStrain2DLaw mDispNewtonianFluidPlaneStrain2DLaw;
303  // Flow Rules
304  const MCPlasticFlowRule mMCPlasticFlowRule;
305  const MCStrainSofteningPlasticFlowRule mMCStrainSofteningPlasticFlowRule;
306  const BorjaCamClayPlasticFlowRule mBorjaCamClayPlasticFlowRule;
307 
308  // Yield Criteria
309  const MCYieldCriterion mMCYieldCriterion;
310  const ModifiedCamClayYieldCriterion mModifiedCamClayYieldCriterion;
311 
312  // Hardening Laws
313  const ExponentialStrainSofteningLaw mExponentialStrainSofteningLaw;
314  const CamClayHardeningLaw mCamClayHardeningLaw;
315 
319 
320 
324 
325 
329 
330 
334 
335 
339 
342 
345 
346 
348 
349 }; // Class KratosParticleMechanicsApplication
350 
352 
353 
356 
357 
361 
363 
364 
365 } // namespace Kratos.
366 
367 #endif // KRATOS_PARTICLE_MECHANICS_APPLICATION_H_INCLUDED defined
368 
369 
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Short class definition.
Definition: borja_cam_clay_plastic_flow_rule.hpp:69
Short class definition.
Definition: cam_clay_hardening_law.hpp:53
Definition: displacement_newtonian_fluid_3D_law.hpp:41
Definition: displacement_newtonian_fluid_plane_strain_2D_law.hpp:41
Short class definition.
Definition: exponential_strain_softening_law.hpp:53
Definition: hencky_borja_cam_clay_3D_law.hpp:44
Definition: hencky_borja_cam_clay_axisym_2D_law.hpp:44
Definition: hencky_borja_cam_clay_plane_strain_2D_law.hpp:45
Definition: hencky_mc_3D_law.hpp:42
Definition: hencky_mc_axisym_2D_law.hpp:41
Definition: hencky_mc_plane_strain_2D_law.hpp:42
Definition: hencky_mc_plane_strain_UP_2D_law.hpp:42
Definition: hencky_mc_UP_3D_law.hpp:42
Definition: hencky_mc_strain_softening_3D_law.hpp:44
Definition: hencky_mc_strain_softening_axisym_2D_law.hpp:42
Definition: hencky_mc_strain_softening_plane_strain_2D_law.hpp:43
Definition: hyperelastic_3D_law.hpp:38
Definition: hyperelastic_axisym_2D_law.hpp:38
Definition: hyperelastic_plane_strain_2D_law.hpp:39
Definition: hyperelastic_plane_strain_UP_2D_law.hpp:39
Definition: hyperelastic_UP_3D_law.hpp:39
Definition: johnson_cook_thermal_plastic_axisym_2D_law.hpp:35
Definition: johnson_cook_thermal_plastic_plane_strain_2D_law.hpp:35
Definition: johnson_cook_thermal_plastic_3D_law.hpp:41
This class defines the interface with kernel for all applications in Kratos.
Definition: kratos_application.h:91
Definition: kratos_components.h:253
virtual void PrintData(std::ostream &rOStream) const
Print object's data.
Definition: kratos_components.h:403
KratosComponents class encapsulates a lookup table for a family of classes in a generic way.
Definition: kratos_components.h:49
Short class definition.
Definition: particle_mechanics_application.h:103
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: particle_mechanics_application.h:154
KRATOS_CLASS_POINTER_DEFINITION(KratosParticleMechanicsApplication)
Pointer definition of KratosParticleMechanicsApplication.
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: particle_mechanics_application.h:161
~KratosParticleMechanicsApplication() override
Destructor.
Definition: particle_mechanics_application.h:119
std::string Info() const override
Turn back information as a string.
Definition: particle_mechanics_application.h:148
Definition: linear_elastic_3D_law.hpp:37
Definition: linear_elastic_axisym_2D_law.hpp:37
Definition: linear_elastic_plane_strain_2D_law.hpp:37
Definition: linear_elastic_plane_stress_2D_law.hpp:37
Short class definition.
Definition: mc_plastic_flow_rule.hpp:69
Short class definition.
Definition: mc_strain_softening_plastic_flow_rule.hpp:56
Short class definition.
Definition: mc_yield_criterion.hpp:52
Axisymmetric line load condition.
Definition: mpm_grid_axisym_line_load_condition_2d.h:51
Axisymmetric point load condition.
Definition: mpm_grid_axisym_point_load_condition.h:51
Short class definition.
Definition: mpm_grid_line_load_condition_2d.h:55
Short class definition.
Definition: mpm_grid_point_load_condition.h:55
Definition: mpm_grid_surface_load_condition_3d.h:49
Short class definition.
Definition: mpm_particle_penalty_dirichlet_condition.h:55
Short class definition.
Definition: mpm_particle_point_load_condition.h:55
Large Displacement Lagrangian Element for 3D and 2D geometries. (base class)
Definition: mpm_updated_lagrangian.hpp:55
Partitioned Quadrature Large Displacement Lagrangian Element for 3D and 2D geometries....
Definition: mpm_updated_lagrangian_PQ.hpp:36
Large Displacement Lagrangian Element for 3D and 2D geometries. (base class)
Definition: mpm_updated_lagrangian_UP.hpp:50
Short class definition.
Definition: modified_cam_clay_yield_criterion.hpp:54
#define KRATOS_WATCH(variable)
Definition: define.h:806
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KRATOS_API_EXTERN template class KratosComponents< Condition >
Definition: condition.h:1191
KRATOS_API_EXTERN template class KratosComponents< Element >
Definition: element.h:1240