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.
pfem_solid_mechanics_application.h
Go to the documentation of this file.
1 //-------------------------------------------------------------
2 // ___ __ ___ _ _ _
3 // KRATOS| _ \/ _|___ _ __ / __| ___| (_)__| |
4 // | _/ _/ -_) ' \\__ \/ _ \ | / _` |
5 // |_| |_| \___|_|_|_|___/\___/_|_\__,_|MECHANICS
6 //
7 // License:(BSD) PfemSolidMechanicsApplication/license.txt
8 //
9 // Main authors: Josep Maria Carbonell
10 // Lluis Monforte
11 //
12 //-------------------------------------------------------------
13 //
14 // Project Name: KratosPfemSolidMechanicsApplication $
15 // Created by: $Author: JMCarbonell $
16 // Last modified by: $Co-Author: $
17 // Date: $Date: July 2013 $
18 // Revision: $Revision: 0.0 $
19 //
20 //
21 
22 #if !defined(KRATOS_PFEM_SOLID_MECHANICS_APPLICATION_H_INCLUDED )
23 #define KRATOS_PFEM_SOLID_MECHANICS_APPLICATION_H_INCLUDED
24 
25 // System includes
26 
27 // External includes
28 
29 // Project includes
30 
31 
32 //elements
35 
38 
39 
42 
50 
51 
55 
58 
63 
66 
67 //constitutive laws
68 #include "containers/flags.h"
69 #include "includes/variables.h"
71 
72 // yield Criteria
77 
78 //flow rule
83 
84 //hardening laws
86 
87 //constitutive laws
103 
104 namespace Kratos
105 {
108 
111 
115 
119 
123 
127 
129 
131  class KRATOS_API(PFEM_SOLID_MECHANICS_APPLICATION) KratosPfemSolidMechanicsApplication : public KratosApplication
132  {
133  public:
134 
135 
138 
139 
142 
143 
147 
150 
153 
154 
158 
159 
163 
164  void Register() override;
165 
169 
170 
174 
175 
179 
181  std::string Info() const override
182  {
183  return "KratosPfemSolidMechanicsApplication";
184  }
185 
187  void PrintInfo(std::ostream& rOStream) const override
188  {
189  rOStream << Info();
190  PrintData(rOStream);
191  }
192 
194  void PrintData(std::ostream& rOStream) const override
195  {
196  KRATOS_WATCH( "in KratosPfemSolidMechanicsApplication" )
198  rOStream << "Variables:" << std::endl;
200  rOStream << std::endl;
201  rOStream << "Elements:" << std::endl;
202  KratosComponents<Element>().PrintData(rOStream);
203  rOStream << std::endl;
204  rOStream << "Conditions:" << std::endl;
205  KratosComponents<Condition>().PrintData(rOStream);
206  }
207 
208 
212 
213 
215 
216  protected:
219 
220 
224 
225 
229 
230 
234 
235 
239 
240 
244 
245 
249 
250 
252 
253  private:
256 
260 
261  //total updated lagrangian
262  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement2D3N;
263  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement2D4N;
264  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement2D6N;
265  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement2D8N;
266 
267  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement3D4N;
268  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement3D6N;
269  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement3D8N;
270  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement3D10N;
271  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement3D15N;
272  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement3D20N;
273  const TotalUpdatedLagrangianElement mTotalUpdatedLagrangianElement3D27N;
274 
275  const TotalUpdatedLagrangianUPElement mTotalUpdatedLagrangianUPElement2D3N;
276 
277  //updated lagrangian
278  const UpdatedLagrangianUwPElement mUpdatedLagrangianUwPElement2D3N;
279  const UpdatedLagrangianUwPElement mUpdatedLagrangianUwPElement3D4N;
280  const UpdatedLagrangianUwPStabElement mUpdatedLagrangianUwPStabElement2D3N;
281  const UpdatedLagrangianUwPStabElement mUpdatedLagrangianUwPStabElement3D4N;
282 
283  const UpdatedLagrangianUWElement mUpdatedLagrangianUWElement2D3N;
284  const UpdatedLagrangianUWwPElement mUpdatedLagrangianUWwPElement2D3N;
285  const UpdatedLagrangianUWwPDMEElement mUpdatedLagrangianUWwPDMEElement2D3N;
286  const UpdatedLagrangianUJWwPElement mUpdatedLagrangianUJWwPElement2D3N;
287  const UpdatedLagrangianUJWwPHOElement mUpdatedLagrangianUJWwPHOElement2D3N;
288  const UpdatedLagrangianUJWwPDMEElement mUpdatedLagrangianUJWwPDMEElement2D3N;
289  const UpdatedLagrangianUJWwPElement mUpdatedLagrangianUJWwPElement3D4N;
290  const UpdatedLagrangianUJWwPDMEElement mUpdatedLagrangianUJWwPDMEElement3D4N;
291  const SmallDisplacementUWwPElement mSmallDisplacementUWwPElement2D3N;
292 
293  const AxisymUpdatedLagrangianUwPElement mAxisymUpdatedLagrangianUwPElement2D3N;
294  const AxisymUpdatedLagrangianUwPStabElement mAxisymUpdatedLagrangianUwPStabElement2D3N;
295 
296  const UpdatedLagrangianUJElement mUpdatedLagrangianUJElement2D3N;
297  const UpdatedLagrangianUJElement mUpdatedLagrangianUJElement3D4N;
298  const UpdatedLagrangianUJPElement mUpdatedLagrangianUJPElement2D3N;
299  const UpdatedLagrangianUPressureElement mUpdatedLagrangianUPressureElement2D3N;
300 
301 
302  const UpdatedLagrangianUJwPElement mUpdatedLagrangianUJwPElement2D3N;
303  const UpdatedLagrangianUJwPElement mUpdatedLagrangianUJwPElement3D4N;
304  const UpdatedLagrangianUPwPElement mUpdatedLagrangianUPwPElement2D3N;
305 
306  const AxisymUpdatedLagrangianUJElement mAxisymUpdatedLagrangianUJElement2D3N;
307  const AxisymUpdatedLagrangianUJwPElement mAxisymUpdatedLagrangianUJwPElement2D3N;
308  const AxisymUpdatedLagrangianUJWwPElement mAxisymUpdatedLagrangianUJWwPElement2D3N;
309  const AxisymUpdatedLagrangianUJWwPDMEElement mAxisymUpdatedLagrangianUJWwPDMEElement2D3N;
310 
311  const AxisymUpdatedLagrangianUPressureElement mAxisymUpdatedLagrangianUPressureElement2D3N;
312  const AxisymUpdatedLagrangianUPwPElement mAxisymUpdatedLagrangianUPwPElement2D3N;
313 
314 
315  const BorjaHenckyCamClayPlastic3DLaw mBorjaHenckyCamClayPlastic3DLaw;
316  const BorjaHenckyCamClayPlasticAxisym2DLaw mBorjaHenckyCamClayPlasticAxisym2DLaw;
317  const BorjaHenckyCamClayPlasticPlaneStrain2DLaw mBorjaHenckyCamClayPlasticPlaneStrain2DLaw;
318  const HenckyJ2PlasticPlaneStrain2DLaw mHenckyJ2PlasticPlaneStrain2DLaw;
319  const HenckyJ2PlasticAxisym2DLaw mHenckyJ2PlasticAxisym2DLaw;
320  const HenckyTrescaPlasticAxisym2DLaw mHenckyTrescaPlasticAxisym2DLaw;
321  const NewHenckyTrescaPlasticAxisym2DLaw mNewHenckyTrescaPlasticAxisym2DLaw;
322  const HenckyTrescaPlasticPlaneStrain2DLaw mHenckyTrescaPlasticPlaneStrain2DLaw;
323  const NewHenckyTrescaPlasticPlaneStrain2DLaw mNewHenckyTrescaPlasticPlaneStrain2DLaw;
324  const HenckyTresca3DLaw mHenckyTresca3DLaw;
325 
326  const HenckyPlasticUPJ2Axisym2DLaw mHenckyPlasticUPJ2Axisym2DLaw;
327  const HenckyPlasticUPJ2PlaneStrain2DLaw mHenckyPlasticUPJ2PlaneStrain2DLaw;
328  const HenckyPlasticUPTrescaAxisym2DLaw mHenckyPlasticUPTrescaAxisym2DLaw;
329  const HenckyPlasticUPTrescaPlaneStrain2DLaw mHenckyPlasticUPTrescaPlaneStrain2DLaw;
330 
331 
332  const J2ExplicitFlowRule mJ2ExplicitFlowRule;
333  const TrescaExplicitFlowRule mTrescaExplicitFlowRule;
334  const BorjaCamClayExplicitFlowRule mBorjaCamClayExplicitFlowRule;
335 
336 
337 
338  const J2YieldCriterion mJ2YieldCriterion;
339  const TrescaYieldCriterion mTrescaYieldCriterion;
340  const NewTrescaYieldCriterion mNewTrescaYieldCriterion;
341  const CamClayYieldCriterion mCamClayYieldCriterion;
342 
343  const CamClayHardeningLaw mCamClayHardeningLaw;
344 
345 
349 
350 
354 
355 
359 
360 
364 
365 
369 
372 
375 
376 
378 
379  }; // Class KratosPfemSolidMechanicsApplication
380 
382 
383 
386 
387 
391 
393 
394 
395 } // namespace Kratos.
396 
397 #endif // KRATOS_PFEM_SOLID_MECHANICS_APPLICATION_H_INCLUDED defined
398 
399 
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Definition: axisym_updated_lagrangian_U_J_element.hpp:40
Updated Lagrangian Large Displacement Lagrangian U-W Element for 3D and 2D geometries....
Definition: axisym_updated_lagrangian_U_J_W_wP_DME_element.hpp:42
Updated Lagrangian Large Displacement Lagrangian U-W Element for 3D and 2D geometries....
Definition: axisym_updated_lagrangian_U_J_W_wP_element.hpp:42
Updated Lagrangian Large Displacement Lagrangian U-wP Element for 3D and 2D geometries....
Definition: axisym_updated_lagrangian_U_J_wP_element.hpp:42
Definition: axisym_updated_lagrangian_U_Pressure_element.hpp:43
Updated Lagrangian Large Displacement Lagrangian U-wP Element for 3D and 2D geometries....
Definition: axisym_updated_lagrangian_U_P_wP_element.hpp:42
Axisymmetric Updated Lagrangian Large Displacement Lagrangian U-Pw Element.
Definition: axisym_updated_lagrangian_U_wP_element.hpp:43
Stabilization of the Axisim Updated Lagrangian Large Displacement Lagrangian U-wP Element for 3D and ...
Definition: axisym_updated_lagrangian_U_wP_Stab_element.hpp:46
Short class definition.
Definition: borja_cam_clay_explicit_plastic_flow_rule.hpp:51
Definition: borja_hencky_cam_clay_3D_law.hpp:38
Definition: borja_hencky_cam_clay_axisym_2D_law.hpp:39
Definition: borja_hencky_cam_clay_plane_strain_2D_law.hpp:39
Short class definition.
Definition: cam_clay_hardening_law.hpp:53
Short class definition.
Definition: cam_clay_yield_criterion.hpp:51
Definition: hencky_J2_axisym_2D_law.hpp:39
Definition: hencky_J2_plane_strain_2D_law.hpp:39
Definition: hencky_U_P_J2_axisym_2D_law.hpp:38
Definition: hencky_U_P_J2_plane_strain_2D_law.hpp:38
Definition: hencky_U_P_Tresca_axisym_2D_law.hpp:38
Definition: hencky_U_P_Tresca_plane_strain_2D_law.hpp:38
Definition: hencky_tresca_3D_law.hpp:35
Definition: hencky_tresca_axisym_2D_law.hpp:39
Definition: hencky_tresca_plane_strain_2D_law.hpp:38
Short class definition.
Definition: J2_explicit_plastic_flow_rule.hpp:51
Short class definition.
Definition: J2_yield_criterion.hpp:51
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: pfem_solid_mechanics_application.h:132
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: pfem_solid_mechanics_application.h:187
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: pfem_solid_mechanics_application.h:194
std::string Info() const override
Turn back information as a string.
Definition: pfem_solid_mechanics_application.h:181
KRATOS_CLASS_POINTER_DEFINITION(KratosPfemSolidMechanicsApplication)
Pointer definition of KratosPfemSolidMechanicsApplication.
virtual ~KratosPfemSolidMechanicsApplication()
Destructor.
Definition: pfem_solid_mechanics_application.h:152
Definition: new_hencky_tresca_axisym_2D_law.hpp:39
Definition: new_hencky_tresca_plane_strain_2D_law.hpp:38
Short class definition.
Definition: new_tresca_yield_criterion.hpp:56
Updated Lagrangian Large Displacement Lagrangian U-W Element for 3D and 2D geometries....
Definition: small_displacement_U_W_wP_element.hpp:42
Total Updated Lagrangian Element for 3D and 2D geometries.
Definition: total_updated_lagrangian_element.hpp:47
Total Updated Lagrangian U-P Element for 3D and 2D geometries. Linear Triangles and Tetrahedra.
Definition: total_updated_lagrangian_U_P_element.hpp:47
Short class definition.
Definition: tresca_explicit_plastic_flow_rule.hpp:50
Short class definition.
Definition: tresca_yield_criterion.hpp:65
Updated Lagrangian Large Displacement Lagrangian U-wP Element for 3D and 2D geometries....
Definition: updated_lagrangian_U_J_element.hpp:44
Definition: updated_lagrangian_U_J_P_element.hpp:45
Updated Lagrangian Large Displacement Lagrangian U-W Element for 3D and 2D geometries....
Definition: updated_lagrangian_U_J_W_wP_DME_element.hpp:42
Updated Lagrangian Large Displacement Lagrangian U-W Element for 3D and 2D geometries....
Definition: updated_lagrangian_U_J_W_wP_element.hpp:42
Updated Lagrangian Large Displacement Lagrangian U-W Element for 3D and 2D geometries....
Definition: updated_lagrangian_U_J_W_wP_HO_element.hpp:42
Updated Lagrangian Large Displacement Lagrangian U-wP Element for 3D and 2D geometries....
Definition: updated_lagrangian_U_J_wP_element.hpp:42
Large Displacement Lagrangian U-P Element for 3D and 2D geometries. Linear Triangles and Tetrahedra (...
Definition: updated_lagrangian_U_Pressure_element.hpp:46
Updated Lagrangian Large Displacement Lagrangian U-wP Element for 3D and 2D geometries....
Definition: updated_lagrangian_U_P_wP_element.hpp:42
Updated Lagrangian Large Displacement Lagrangian U-W Element for 3D and 2D geometries....
Definition: updated_lagrangian_U_W_element.hpp:42
Updated Lagrangian Large Displacement Lagrangian U-W Element for 3D and 2D geometries....
Definition: updated_lagrangian_U_W_wP_DME_element.hpp:42
Updated Lagrangian Large Displacement Lagrangian U-W Element for 3D and 2D geometries....
Definition: updated_lagrangian_U_W_wP_element.hpp:42
Updated Lagrangian Large Displacement Lagrangian U-wP Element for 3D and 2D geometries....
Definition: updated_lagrangian_U_wP_element.hpp:42
Updated Lagrangian Large Displacement U-Pw Element for 3D and 2D geometries. Linear Triangles and Tet...
Definition: updated_lagrangian_U_wP_Stab_element.hpp:42
#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