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.
constitutive_models_application.h
Go to the documentation of this file.
1 //--------------------------------------------------------------------
2 // | / | .
3 // ' / __| _` | __| _ \ __| .
4 // . \ | ( | | ( |\__ \ .
5 // _|\_\_| \__,_|\__|\___/ ____/ .
6 // __ __ _ _ _ .
7 // CONSTITUTIVE| \/ |__ _| |_ ___ _ _(_)__ _| | .
8 // | |\/| / _` | _/ -_) '_| / _` | | .
9 // |_| |_\__,_|\__\___|_| |_\__,_|_|MODELS .
10 // .
11 // License:(BSD) ConstitutiveModelsApplication/license.txt .
12 // Main authors: Josep Maria Carbonell .
13 // .. .
14 //--------------------------------------------------------------------
15 //
16 // Project Name: KratosConstitutiveModelsApplication $
17 // Created by: $Author: JMCarbonell $
18 // Last modified by: $Co-Author: $
19 // Date: $Date: April 2017 $
20 // Revision: $Revision: 0.0 $
21 //
22 //
23 
24 
25 #if !defined(KRATOS_CONSTITUTIVE_MODELS_APPLICATION_H_INCLUDED )
26 #define KRATOS_CONSTITUTIVE_MODELS_APPLICATION_H_INCLUDED
27 
28 
29 // System includes
30 #include <string>
31 #include <iostream>
32 
33 
34 // External includes
35 
36 
37 // Project includes
38 #include "includes/define.h"
40 #include "includes/variables.h"
42 
43 //#include "containers/flags.h"
44 
45 //outfitted python laws
46 //#include "custom_python/python_outfitted_constitutive_law.hpp"
47 
48 //general constitutive laws
49 
50 //small strain laws
55 
56 //large strain laws
59 
60 //strain rate laws
63 
64 //specialized large strain laws
65 
66 //elasticity models
78 //#include "custom_models/elasticity_models/isochoric_ogden_model.hpp"
80 
81 //plasticity models
94 //#include "custom_models/plasticity_models/simo_ju_modified_exponential_damage_model.hpp"
95 
96 //yield criteria
102 
103 //hardening rules
112 
113 
114 //#include "constitutive_models_application_variables.h"
115 
116 namespace Kratos {
117 
120 
124 
128 
132 
136 
138 
140  class KRATOS_API(CONSTITUTIVE_MODELS_APPLICATION) KratosConstitutiveModelsApplication : public KratosApplication
141  {
142  public:
145 
148 
152 
155 
158 
159 
163 
164 
168 
169  void Register() override;
170 
171 
172 
176 
177 
181 
182 
186 
188  std::string Info() const override{
189  return "KratosConstitutiveModelsApplication";
190  }
191 
193  void PrintInfo(std::ostream& rOStream) const override{
194  rOStream << Info();
195  PrintData(rOStream);
196  }
197 
199  void PrintData(std::ostream& rOStream) const override{
200  KRATOS_WATCH("in KratosConstitutiveModelsApplication");
202 
203  rOStream << "Variables:" << std::endl;
205  rOStream << std::endl;
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 
257 
261 
262  //outfitted python laws
263  //const PythonOutfittedConstitutiveLaw mPythonOutfittedConstitutiveLaw;
264 
265  //general constitutive laws
266 
267  //small strain laws
268  const SmallStrain3DLaw mSmallStrain3DLaw;
269  const SmallStrainOrthotropic3DLaw mSmallStrainOrthotropic3DLaw;
270  const SmallStrainPlaneStrain2DLaw mSmallStrainPlaneStrain2DLaw;
271  const SmallStrainPlaneStress2DLaw mSmallStrainPlaneStress2DLaw;
272  const SmallStrainAxisymmetric2DLaw mSmallStrainAxisymmetric2DLaw;
273 
274  //large strain laws
275  const LargeStrain3DLaw mLargeStrain3DLaw;
276  const LargeStrainPlaneStrain2DLaw mLargeStrainPlaneStrain2DLaw;
277  const LargeStrainAxisymmetric2DLaw mLargeStrainAxisymmetric2DLaw;
278 
279  //strain rate laws
280  const StrainRate3DLaw mStrainRate3DLaw;
281  const StrainRatePlaneStrain2DLaw mStrainRatePlaneStrain2DLaw;
282  const NewtonianFluid3DLaw mNewtonianFluid3DLaw;
283  const NewtonianFluidPlaneStrain2DLaw mNewtonianFluidPlaneStrain2DLaw;
284 
285  //general constitutive models
286 
287  //elasticity models
288  const LinearElasticModel mLinearElasticModel;
289  const SaintVenantKirchhoffModel mSaintVenantKirchhoffModel;
290  const NeoHookeanModel mNeoHookeanModel;
291  const NeoHookeanLnJSquaredModel mNeoHookeanLnJSquaredModel;
292  const NeoHookeanJ_1SquaredModel mNeoHookeanJ_1SquaredModel;
293  const IsochoricNeoHookeanModel mIsochoricNeoHookeanModel;
294  const IsochoricNeoHookeanLnJSquaredModel mIsochoricNeoHookeanLnJSquaredModel;
295  const IncompressibleNeoHookeanModel mIncompressibleNeoHookeanModel;
296  const BorjaModel mBorjaModel;
297  const TamagniniModel mTamagniniModel;
298  const OgdenModel mOgdenModel;
299  const OgdenModel mIsochoricOgdenModel;
300  const HypoElasticModel mHypoElasticModel;
301  const IsochoricHypoElasticModel mIsochoricHypoElasticModel;
302  const IncompressibleHypoElasticModel mIncompressibleHypoElasticModel;
303 
304  //plasticity models
305  const VonMisesLinearElasticPlasticityModel mVonMisesLinearElasticPlasticityModel;
306  const VonMisesNeoHookeanPlasticityModel mVonMisesNeoHookeanPlasticityModel;
307  const SimoJ2PlasticityModel mSimoJ2PlasticityModel;
308  const SimoJ2ThermoPlasticityModel mSimoJ2ThermoPlasticityModel;
309  const JohnsonCookJ2ThermoPlasticityModel mJohnsonCookJ2ThermoPlasticityModel;
310  const BakerJohnsonCookJ2ThermoPlasticityModel mBakerJohnsonCookJ2ThermoPlasticityModel;
311  const NonlocalCamClayModel mNonlocalCamClayModel;
312  const CamClayModel mCamClayModel;
313  const GensNovaModel mGensNovaModel;
314  const V2GensNovaModel mV2GensNovaModel;
315  const NonlocalV2GensNovaModel mNonlocalV2GensNovaModel;
316  const SimoJuExponentialDamageModel mSimoJuExponentialDamageModel;
317  const SimoJuExponentialDamageModel mSimoJuModifiedExponentialDamageModel;
318 
319  //yield criteria
320  const MisesHuberYieldSurface<HardeningRule> mMisesHuberYieldSurface;
321  const MisesHuberThermalYieldSurface<HardeningRule> mMisesHuberThermalYieldSurface;
322  const SimoJuYieldSurface<HardeningRule> mSimoJuYieldSurface;
323  const ModifiedMisesYieldSurface<HardeningRule> mModifiedMisesYieldSurface;
324  const ModifiedCamClayYieldSurface<HardeningRule> mModifiedCamClayYieldSurface;
325  const GensNovaYieldSurface<HardeningRule> mGensNovaYieldSurface;
326 
327  //hardening rules
328  const SimoExponentialHardeningRule mSimoExponentialHardeningRule;
329  const SimoLinearHardeningRule mSimoLinearHardeningRule;
330  const SimoExponentialThermalHardeningRule mSimoExponentialThermalHardeningRule;
331  const JohnsonCookThermalHardeningRule mJohnsonCookThermalHardeningRule;
332  const BakerJohnsonCookThermalHardeningRule mBakerJohnsonCookThermalHardeningRule;
333  const ExponentialDamageHardeningRule mExponentialDamageHardeningRule;
334  const ModifiedExponentialDamageHardeningRule mModifiedExponentialDamageHardeningRule;
335  const CamClayHardeningRule mCamClayHardeningRule;
336  const GensNovaHardeningRule mGensNovaHardeningRule;
337 
338 
342 
343 
347 
348 
352 
353 
357 
358 
362 
365 
368 
369 
371 
372  }; // Class KratosConstitutiveModelsApplication
373 
375 
376 
379 
380 
384 
386 
387 
388 } // namespace Kratos.
389 
390 #endif // KRATOS_CONSTITUTIVE_MODELS_APPLICATION_H_INCLUDED defined
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: baker_johnson_cook_J2_thermo_plasticity_model.hpp:51
Short class definition.
Definition: baker_johnson_cook_thermal_hardening_rule.hpp:49
Short class definition.
Definition: borja_model.hpp:48
Short class definition.
Definition: cam_clay_hardening_rule.hpp:48
Short class definition.
Definition: cam_clay_model.hpp:51
Short class definition.
Definition: exponential_damage_hardening_rule.hpp:49
Short class definition.
Definition: gens_nova_hardening_rule.hpp:48
Short class definition.
Definition: gens_nova_model.hpp:69
Short class definition.
Definition: gens_nova_yield_surface.hpp:51
Short class definition.
Definition: hypo_elastic_model.hpp:50
Short class definition.
Definition: incompressible_hypo_elastic_model.hpp:48
Short class definition.
Definition: incompressible_neo_hookean_model.hpp:50
Short class definition.
Definition: isochoric_hypo_elastic_model.hpp:48
Short class definition.
Definition: isochoric_neo_hookean_lnJ_squared_model.hpp:48
Short class definition.
Definition: isochoric_neo_hookean_model.hpp:48
Short class definition.
Definition: johnson_cook_J2_thermo_plasticity_model.hpp:51
Short class definition.
Definition: johnson_cook_thermal_hardening_rule.hpp:49
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: constitutive_models_application.h:141
~KratosConstitutiveModelsApplication() override
Destructor.
Definition: constitutive_models_application.h:157
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: constitutive_models_application.h:193
KRATOS_CLASS_POINTER_DEFINITION(KratosConstitutiveModelsApplication)
Pointer definition of KratosConstitutiveModelsApplication.
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: constitutive_models_application.h:199
std::string Info() const override
Turn back information as a string.
Definition: constitutive_models_application.h:188
Definition: large_strain_3D_law.hpp:28
Short class definition.
Definition: large_strain_axisymmetric_2D_law.hpp:49
Short class definition.
Definition: large_strain_plane_strain_2D_law.hpp:49
Short class definition.
Definition: linear_elastic_model.hpp:50
Short class definition.
Definition: mises_huber_thermal_yield_surface.hpp:50
Short class definition.
Definition: mises_huber_yield_surface.hpp:50
Short class definition.
Definition: modified_cam_clay_yield_surface.hpp:51
Short class definition.
Definition: modified_exponential_damage_hardening_rule.hpp:49
Short class definition.
Definition: modified_mises_yield_surface.hpp:49
Short class definition.
Definition: neo_hookean_J_1_squared_model.hpp:48
Short class definition.
Definition: neo_hookean_lnJ_squared_model.hpp:48
Short class definition.
Definition: neo_hookean_model.hpp:48
Definition: newtonian_3D_law.hpp:30
Short class definition.
Definition: newtonian_plane_strain_2D_law.hpp:48
Short class definition.
Definition: nonlocal_cam_clay_model.hpp:51
Short class definition.
Definition: nonlocal_v2_gens_nova_model.hpp:69
Short class definition.
Definition: ogden_model.hpp:50
Short class definition.
Definition: saint_venant_kirchhoff_model.hpp:48
Short class definition.
Definition: simo_exponential_hardening_rule.hpp:49
Short class definition.
Definition: simo_exponential_thermal_hardening_rule.hpp:49
Short class definition.
Definition: simo_J2_plasticity_model.hpp:51
Short class definition.
Definition: simo_J2_thermo_plasticity_model.hpp:51
Short class definition.
Definition: simo_ju_exponential_damage_model.hpp:51
Short class definition.
Definition: simo_ju_yield_surface.h:56
Short class definition.
Definition: simo_linear_hardening_rule.hpp:49
Definition: small_strain_3D_law.hpp:33
Short class definition.
Definition: small_strain_axisymmetric_2D_law.hpp:48
Short class definition.
Definition: small_strain_orthotropic_3D_law.hpp:48
Short class definition.
Definition: small_strain_plane_strain_2D_law.hpp:48
Short class definition.
Definition: small_strain_plane_stress_2D_law.hpp:48
Definition: strain_rate_3D_law.hpp:28
Short class definition.
Definition: strain_rate_plane_strain_2D_law.hpp:49
Short class definition.
Definition: tamagnini_model.hpp:48
Short class definition.
Definition: v2_gens_nova_model.hpp:69
Short class definition.
Definition: von_mises_linear_elastic_plasticity_model.hpp:51
Short class definition.
Definition: von_mises_neo_hookean_plasticity_model.hpp:51
#define KRATOS_WATCH(variable)
Definition: define.h:806
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21