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_laws_application.h
Go to the documentation of this file.
1 // KRATOS ___ _ _ _ _ _ __ _
2 // / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __
3 // / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ |
4 // / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) |
5 // \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/
6 // |_| |_|
7 //
8 // License: BSD License
9 // Kratos default license: kratos/license.txt
10 //
11 // Main authors: Alejandro Cornejo Velazquez
12 // Riccardo Rossi
13 //
14 
15 #pragma once
16 
17 
18 // System includes
19 
20 
21 // External includes
22 
23 
24 // Project includes
26 
27 // Constitutive laws
73 
74 // Integrators
81 
82 // Yield surfaces
91 
92 // Thermal yield surfaces
100 
101 
102 // Plastic potentials
110 
111 // Rules of mixtures
114 
116 
117 // Thermal CL
121 
124 
125 namespace Kratos {
126 
129 
133 
137 
141 
145 
147 
149 class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) KratosConstitutiveLawsApplication : public KratosApplication {
150 public:
153 
156 
160 
163 
166 
170 
171 
175 
176  void Register() override;
177 
181 
182 
186 
187 
191 
193  std::string Info() const override
194  {
195  return "KratosConstitutiveLawsApplication";
196  }
197 
199  void PrintInfo(std::ostream& rOStream) const override
200  {
201  rOStream << Info();
202  PrintData(rOStream);
203  }
204 
206  void PrintData(std::ostream& rOStream) const override
207  {
208  KRATOS_WATCH("in my application");
210 
211  rOStream << "Variables:" << std::endl;
213  rOStream << std::endl;
214  rOStream << "Elements:" << std::endl;
215  KratosComponents<Element>().PrintData(rOStream);
216  rOStream << std::endl;
217  rOStream << "Conditions:" << std::endl;
218  KratosComponents<Condition>().PrintData(rOStream);
219  }
220 
224 
225 
227 
228 protected:
231 
232 
236 
237 
241 
242 
246 
247 
251 
252 
256 
257 
261 
262 
264 
265 private:
268 
269  // static const ApplicationCondition msApplicationCondition;
270 
274 
275 
276  // Damage and plasticity laws
277  const ElasticIsotropicPlaneStressUncoupledShear mElasticIsotropicPlaneStressUncoupledShear;
278  const HyperElasticIsotropicKirchhoff3D mHyperElasticIsotropicKirchhoff3D;
279  const HyperElasticIsotropicKirchhoffPlaneStress2D mHyperElasticIsotropicKirchhoffPlaneStress2D;
280  const HyperElasticIsotropicKirchhoffPlaneStrain2D mHyperElasticIsotropicKirchhoffPlaneStrain2D;
281  const HyperElasticIsotropicNeoHookean3D mHyperElasticIsotropicNeoHookean3D;
282  const HyperElasticIsotropicQuasiIncompressibleIshochoricNeoHookean3D mHyperElasticIsotropicQuasiIncompressibleIshochoricNeoHookean3D;
283  const HyperElasticIsotropicNeoHookeanPlaneStrain2D mHyperElasticIsotropicNeoHookeanPlaneStrain2D;
284  const HyperElasticSimoTaylorNeoHookean3D mHyperElasticSimoTaylorNeoHookean3D;
285  const HyperElasticSimoTaylorNeoHookeanPlaneStrain2D mHyperElasticSimoTaylorNeoHookeanPlaneStrain2D;
286  const LinearElasticOrthotropic2DLaw mLinearElasticOrthotropic2DLaw;
287 
288  const SmallStrainJ2Plasticity3D mSmallStrainJ2Plasticity3D;
289  const SmallStrainJ2PlasticityPlaneStrain2D mSmallStrainJ2PlasticityPlaneStrain2D;
290  const SmallStrainIsotropicDamage3D mSmallStrainIsotropicDamage3D;
291  const SmallStrainIsotropicDamageImplex3D mSmallStrainIsotropicDamageImplex3D;
292  const SmallStrainIsotropicDamagePlaneStrain2D mSmallStrainIsotropicDamagePlaneStrain2D;
293  const SmallStrainIsotropicDamageTractionOnly3D mSmallStrainIsotropicDamageTractionOnly3D;
294  const SmallStrainIsotropicDamageTractionOnlyImplex3D mSmallStrainIsotropicDamageTractionOnlyImplex3D;
295  const TrussPlasticityConstitutiveLaw mTrussPlasticityConstitutiveLaw;
296  const HyperElasticIsotropicOgden1D mHyperElasticIsotropicOgden1D;
297  const HyperElasticIsotropicHenky1D mHyperElasticIsotropicHenky1D;
298  const WrinklingLinear2DLaw mWrinklingLinear2DLaw;
299  const MultiLinearElastic1DLaw mMultiLinearElastic1DLaw;
300  const MultiLinearIsotropicPlaneStress2D mMultiLinearIsotropicPlaneStress2D;
301 
302  // Damage and plasticity laws
303  const SerialParallelRuleOfMixturesLaw mSerialParallelRuleOfMixturesLaw;
304  const SmallStrainIsotropicPlasticityFactory mSmallStrainIsotropicPlasticityFactory;
305  const SmallStrainKinematicPlasticityFactory mSmallStrainKinematicPlasticityFactory;
306  const FiniteStrainIsotropicPlasticityFactory mFiniteStrainIsotropicPlasticityFactory;
307  const SmallStrainIsotropicDamageFactory mSmallStrainIsotropicDamageFactory;
308  const ViscousGeneralizedKelvin<ElasticIsotropic3D> mViscousGeneralizedKelvin3D;
309  const ViscousGeneralizedMaxwell<ElasticIsotropic3D> mViscousGeneralizedMaxwell3D;
310  const GenericSmallStrainViscoplasticity3D mGenericSmallStrainViscoplasticity3D;
311  const PlasticityIsotropicKinematicJ2 mPlasticityIsotropicKinematicJ2;
312 
314  /* Small strain */
338 
362 
386 
410 
411  // Plastic Damage Model
414 
415 
416  /* Finite strain Isotropic plasticity*/
440 
441  /* Finite strain Kinematic plasticity*/
465 
467  /* Small strain 3D */
475 
476  /* Small strain 2D */
484 
485  /* Small strain plane stress 2D */
493 
494  // HCF (High Cycle Fatigue)
502 
503 
504  // d+d- laws (3D)
552 
553  // d+d- laws (2D)
601  const DamageDPlusDMinusMasonry2DLaw mDamageDPlusDMinusPlaneStressMasonry2DLaw;
602  const DamageDPlusDMinusMasonry3DLaw mDamageDPlusDMinusMasonry3DLaw;
603 
604  // Orthotropic Damage
619 
620  // Rules of mixtures
621  const ParallelRuleOfMixturesLaw<3> mParallelRuleOfMixturesLaw3D;
622  const TractionSeparationLaw3D<3> mTractionSeparationLaw3D;
623  const ParallelRuleOfMixturesLaw<2> mParallelRuleOfMixturesLaw2D;
624 
625  // Anisotropic law
626  const GenericAnisotropic3DLaw mGenericAnisotropic3DLaw;
627 
628  const AssociativePlasticDamageModel <VonMisesYieldSurface<VonMisesPlasticPotential<6>>> mAssociativePlasticDamageModel3DVonMises;
629  const AssociativePlasticDamageModel <DruckerPragerYieldSurface<DruckerPragerPlasticPotential<6>>> mAssociativePlasticDamageModel3DDruckerPrager;
630  const AssociativePlasticDamageModel <ModifiedMohrCoulombYieldSurface<ModifiedMohrCoulombPlasticPotential<6>>> mAssociativePlasticDamageModel3DModifiedMohrCoulomb;
631  const AssociativePlasticDamageModel <RankineYieldSurface<RankinePlasticPotential<6>>> mAssociativePlasticDamageModel3DRankine;
632 
633  // Thermal CL
634  const ThermalElasticIsotropic3D mThermalElasticIsotropic3D;
635  const ThermalLinearPlaneStrain mThermalLinearPlaneStrain;
636  const ThermalLinearPlaneStress mThermalLinearPlaneStress;
637 
639  /* Small strain 3D */
647 
648  /* Small strain 2D */
656 
657  // Thermal plane stress damage
665 
669 
670 
674 
675 
679 
680 
684 
685 
689 
692 
695 
696 
698 
699 }; // Class KratosConstitutiveLawsApplication
700 
702 
703 
706 
707 
711 
713 
714 
715 } // namespace Kratos.
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
This law defines a parallel rule of mixture (classic law of mixture)
Definition: associative_plastic_damage_model.h:63
Definition: plane_stress_d_plus_d_minus_damage_masonry_2d.h:33
Definition: d_plus_d_minus_damage_masonry_3d.h:54
Defines a elastic constitutive law in 2D under plane stress in addition the shear modulus is independ...
Definition: elastic_isotropic_plane_stress_uncoupled_shear.h:59
Dummy class to register, only implements create()
Definition: finite_strain_isotropic_plasticity_factory.h:52
This CL takes into account the material anisotropy in terms of young modulus, poisson ratio,...
Definition: generic_anisotropic_3d_law.h:55
: This object integrates the predictive stress using the isotropic the d+d- damage theory
Definition: generic_compression_cl_integrator.h:63
: This object integrates the predictive stress using the isotropic damage theory by means of linear/e...
Definition: generic_cl_integrator_damage.h:64
This class is the base class which define all the constitutive laws for plasticity in strain framewor...
Definition: generic_finite_strain_isotropic_plasticity.h:61
This class is the base class which define all the constitutive laws for plasticity in strain framewor...
Definition: generic_finite_strain_kinematic_plasticity.h:61
This class is the base class which define all the constitutive laws for damage in small deformation.
Definition: generic_small_strain_d_plus_d_minus_damage.h:59
This class is the base class which defines the constitutive law used for high cycle fatigue (HCF) in ...
Definition: generic_small_strain_high_cycle_fatigue_law.h:58
This class is the base class which define all the constitutive laws for damage in small deformation.
Definition: generic_small_strain_isotropic_damage.h:58
This class is the base class which define all the constitutive laws for damage in plane stress small ...
Definition: generic_small_strain_isotropic_damage_plane_stress.h:58
This class is the base class which define all the constitutive laws for plasticity in small deformati...
Definition: generic_small_strain_isotropic_plasticity.h:60
This class is the base class which define all the constitutive laws for kinematic plasticity in small...
Definition: generic_small_strain_kinematic_plasticity.h:60
This class defines an small strain orthotropic damage model developed by Cervera et....
Definition: generic_small_strain_orthotropic_damage.h:59
This class is the base class which define the Plastic Damage model developed by Luccioni B....
Definition: generic_small_strain_plastic_damage_model.h:60
This class derives from the Isotropic damage CL and adds thermal effects (material properties affecta...
Definition: generic_small_strain_thermal_isotropic_damage.h:58
Definition: generic_small_strain_thermal_isotropic_damage_plane_stress.h:53
Definition: generic_small_strain_viscoplasticity_3d.h:53
This law defines an hyperelastic material according to the Saint-Venant–Kirchhoff formulation for 3D ...
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:55
This law defines an hyperelastic material according to the Saint-Venant–Kirchhoff formulation for 2D-...
Definition: hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h:55
This law defines an hyperelastic material according to the Saint-Venant–Kirchhoff formulation for 2D-...
Definition: hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h:55
This law defines an hyperelastic material according to the NeoHookean formulation for 3D cases.
Definition: hyper_elastic_isotropic_neo_hookean_3d.h:53
This law defines an hyperelastic material according to the NeoHookean formulation for 2D-plane strain...
Definition: hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h:54
This law defines an hyperelastic material according to the NeoHookean formulation for 3D cases assumi...
Definition: hyper_elastic_isotropic_q_incomp_isoch_neo_hook_3d.h:53
This law defines a Neo-Hookean hyperelastic material with monotonic behavior for 3D problems.
Definition: hyper_elastic_simo_taylor_neo_hookean_3d.h:60
This law defines a Neo-Hookean hyperelastic material with monotonic behavior for plane strain problem...
Definition: hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h:60
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_laws_application.h:149
std::string Info() const override
Turn back information as a string.
Definition: constitutive_laws_application.h:193
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: constitutive_laws_application.h:206
~KratosConstitutiveLawsApplication() override
Destructor.
Definition: constitutive_laws_application.h:165
KRATOS_CLASS_POINTER_DEFINITION(KratosConstitutiveLawsApplication)
Pointer definition of KratosConstitutiveLawsApplication.
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: constitutive_laws_application.h:199
Definition: linear_elastic_orthotropic_2D_law.h:35
Defines a Simo J2 plasticity CL with Isotropic & Kinematic Hardening in 3D.
Definition: plasticity_isotropic_kinematic_j2.h:61
This CL implements the serial-parallel rule of mixtures developed by F.Rastellini.
Definition: serial_parallel_rule_of_mixtures_law.h:56
Defines a damage with hardening constitutive law in 3D.
Definition: small_strain_isotropic_damage_3d.h:61
Dummy class to register, only implements create()
Definition: small_strain_isotropic_damage_factory.h:52
Damage with hardening constitutive law in 3D, using Implex integration scheme (see J Oliver et al,...
Definition: small_strain_isotropic_damage_implex_3d.h:62
Definition: small_strain_isotropic_damage_plane_strain_2d.h:60
Definition: small_strain_isotropic_damage_traction_only_3d.h:61
Traction-only damage with hardening constitutive law in 3D, using Implex integration scheme (see J Ol...
Definition: small_strain_isotropic_damage_traction_only_implex_3d.h:62
Dummy class to register, only implements create()
Definition: small_strain_isotropic_plasticity_factory.h:52
Definition: small_strain_j2_plasticity_3d.h:65
Definition: small_strain_j2_plasticity_plane_strain_2d.h:66
Dummy class to register, only implements create()
Definition: small_strain_kinematic_plasticity_factory.h:52
This class defines a Thermo dependant CL, including the addition of thermal expansion strains.
Definition: thermal_elastic_isotropic_3d.h:53
This class defines a Thermo dependant CL, including the addition of thermal expansion strains.
Definition: thermal_linear_plane_strain.h:53
This class defines a Thermo dependant CL, including the addition of thermal expansion strains.
Definition: thermal_linear_plane_stress.h:53
This is a constitutive law that reproduces the behaviour of viscous Kelvin material.
Definition: viscous_generalized_kelvin.h:63
This is a viscous law using Maxwell formulation.
Definition: viscous_generalized_maxwell.h:62
This law defines a wrinkling modification for any linear 2D claw.
Definition: wrinkling_linear_2d_law.h:51
#define KRATOS_WATCH(variable)
Definition: define.h:806
This constitutive law represents the hyper-elastic henky 1D law.
This constitutive law represents the hyper-elastic OGDEN 1D law.
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
This constitutive law represents a multi linear elastic 1d claw.
This constitutive law represents a multi linear elastic 2d claw for plane stress.
This constitutive law represents a linear hardening plasticity 1D law.