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.
fem_to_dem_application.h
Go to the documentation of this file.
1 // | / |
2 // ' / __| _` | __| _ \ __|
3 // . \ | ( | | ( |\__ \.
4 // _|\_\_| \__,_|\__|\___/ ____/
5 // Multi-Physics FemDem Application
6 //
7 // License: BSD License
8 // Kratos default license: kratos/license.txt
9 //
10 // Main authors: Alejandro Cornejo Velazquez
11 //
12 
13 
14 #pragma once
15 
16 
17 // System includes
18 #include <string>
19 #include <iostream>
20 
21 
22 // External includes
23 
24 
25 // Project includes
26 #include "includes/define.h"
28 #include "includes/variables.h"
29 
30 //#include "custom_elements/zaratipito_element.hpp"
31 #include "custom_constitutive/elastic_isotropic_3d.h"
32 #include "custom_constitutive/linear_plane_stress.h"
35 #include "custom_constitutive/linear_plane_strain.h"
39 
41 
42 namespace Kratos {
43 
44 class KRATOS_API(FEM_TO_DEM_APPLICATION) KratosFemToDemApplication : public KratosApplication
45 
46 {
47 
48 public:
49 
51 
54 
57 
58  virtual void Register() override;
59 
60 
61 
65 
66 
70 
71 
75 
77  virtual std::string Info() const override {
78  return "KratosFemToDemApplication";
79  }
80 
82  virtual void PrintInfo(std::ostream& rOStream) const override {
83  rOStream << Info();
84  PrintData(rOStream);
85  }
86 
88  virtual void PrintData(std::ostream& rOStream) const override {
89  KRATOS_WATCH("in my application");
91 
92  rOStream << "Variables:" << std::endl;
94  rOStream << std::endl;
95  rOStream << "Elements:" << std::endl;
96  KratosComponents<Element>().PrintData(rOStream);
97  rOStream << std::endl;
98  rOStream << "Conditions:" << std::endl;
99  KratosComponents<Condition>().PrintData(rOStream);
100  }
101 
102 
103 protected:
104 
105 private:
106 
107  // Elements
108  const GenericSmallStrainFemDemElement<2,0> mSmallStrainModifiedMohrCoulombFemDemElement2D;
109  const GenericSmallStrainFemDemElement<3,0> mSmallStrainModifiedMohrCoulombFemDemElement3D;
110  const GenericSmallStrainFemDemElement<2,1> mSmallStrainRankineFemDemElement2D;
111  const GenericSmallStrainFemDemElement<3,1> mSmallStrainRankineFemDemElement3D;
112  const GenericSmallStrainFemDemElement<2,2> mSmallStrainSimoJuFemDemElement2D;
113  const GenericSmallStrainFemDemElement<3,2> mSmallStrainSimoJuFemDemElement3D;
114  const GenericSmallStrainFemDemElement<2,3> mSmallStrainDruckerPragerFemDemElement2D;
115  const GenericSmallStrainFemDemElement<3,3> mSmallStrainDruckerPragerFemDemElement3D;
116  const GenericSmallStrainFemDemElement<2,4> mSmallStrainVonMisesFemDemElement2D;
117  const GenericSmallStrainFemDemElement<3,4> mSmallStrainVonMisesFemDemElement3D;
118  const GenericSmallStrainFemDemElement<2,5> mSmallStrainTrescaFemDemElement2D;
119  const GenericSmallStrainFemDemElement<3,5> mSmallStrainTrescaFemDemElement3D;
120  const GenericSmallStrainFemDemElement<2,6> mSmallStrainMohrCoulombFemDemElement2D;
121  const GenericSmallStrainFemDemElement<3,6> mSmallStrainMohrCoulombFemDemElement3D;
122 
123  const GenericTotalLagrangianFemDemElement<2,0> mTotalLagrangianModifiedMohrCoulombFemDemElement2D;
124  const GenericTotalLagrangianFemDemElement<3,0> mTotalLagrangianModifiedMohrCoulombFemDemElement3D;
125  const GenericTotalLagrangianFemDemElement<2,1> mTotalLagrangianRankineFemDemElement2D;
126  const GenericTotalLagrangianFemDemElement<3,1> mTotalLagrangianRankineFemDemElement3D;
127  const GenericTotalLagrangianFemDemElement<2,2> mTotalLagrangianSimoJuFemDemElement2D;
128  const GenericTotalLagrangianFemDemElement<3,2> mTotalLagrangianSimoJuFemDemElement3D;
129  const GenericTotalLagrangianFemDemElement<2,3> mTotalLagrangianDruckerPragerFemDemElement2D;
130  const GenericTotalLagrangianFemDemElement<3,3> mTotalLagrangianDruckerPragerFemDemElement3D;
131  const GenericTotalLagrangianFemDemElement<2,4> mTotalLagrangianVonMisesFemDemElement2D;
132  const GenericTotalLagrangianFemDemElement<3,4> mTotalLagrangianVonMisesFemDemElement3D;
133  const GenericTotalLagrangianFemDemElement<2,5> mTotalLagrangianTrescaFemDemElement2D;
134  const GenericTotalLagrangianFemDemElement<3,5> mTotalLagrangianTrescaFemDemElement3D;
135  const GenericTotalLagrangianFemDemElement<2,6> mTotalLagrangianMohrCoulombFemDemElement2D;
136  const GenericTotalLagrangianFemDemElement<3,6> mTotalLagrangianMohrCoulombFemDemElement3D;
137 
138  const GenericTotalLagrangianMixturesFemDemElement<2,0> mTotalLagrangianMixturesModifiedMohrCoulombFemDemElement2D;
139  const GenericTotalLagrangianMixturesFemDemElement<3,0> mTotalLagrangianMixturesModifiedMohrCoulombFemDemElement3D;
140  const GenericTotalLagrangianMixturesFemDemElement<2,1> mTotalLagrangianMixturesRankineFemDemElement2D;
141  const GenericTotalLagrangianMixturesFemDemElement<3,1> mTotalLagrangianMixturesRankineFemDemElement3D;
142  const GenericTotalLagrangianMixturesFemDemElement<2,2> mTotalLagrangianMixturesSimoJuFemDemElement2D;
143  const GenericTotalLagrangianMixturesFemDemElement<3,2> mTotalLagrangianMixturesSimoJuFemDemElement3D;
144  const GenericTotalLagrangianMixturesFemDemElement<2,3> mTotalLagrangianMixturesDruckerPragerFemDemElement2D;
145  const GenericTotalLagrangianMixturesFemDemElement<3,3> mTotalLagrangianMixturesDruckerPragerFemDemElement3D;
146  const GenericTotalLagrangianMixturesFemDemElement<2,4> mTotalLagrangianMixturesVonMisesFemDemElement2D;
147  const GenericTotalLagrangianMixturesFemDemElement<3,4> mTotalLagrangianMixturesVonMisesFemDemElement3D;
148  const GenericTotalLagrangianMixturesFemDemElement<2,5> mTotalLagrangianMixturesTrescaFemDemElement2D;
149  const GenericTotalLagrangianMixturesFemDemElement<3,5> mTotalLagrangianMixturesTrescaFemDemElement3D;
150  const GenericTotalLagrangianMixturesFemDemElement<2,6> mTotalLagrangianMixturesMohrCoulombFemDemElement2D;
151  const GenericTotalLagrangianMixturesFemDemElement<3,6> mTotalLagrangianMixturesMohrCoulombFemDemElement3D;
152 
153  //Hiperelastic and elastic laws
154  const LinearPlaneStrainFEMDEM mLinearPlaneStrainFEMDEM;
155  const LinearPlaneStressFEMDEM mLinearPlaneStressFEMDEM;
156  const ElasticIsotropic3DFEMDEM mElasticIsotropic3DFEMDEM;
157  const HyperElasticIsotropicNeoHookeanPlaneStrain2DFEMDEM mHyperElasticIsotropicNeoHookeanPlaneStrain2DFEMDEM;
158  const HyperElasticIsotropicNeoHookean3DFEMDEM mHyperElasticIsotropicNeoHookean3DFEMDEM;
159 
160 
163 
166 
167 }; // Class KratosFemToDemApplication
168 } // namespace Kratos.
169 
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Definition: elastic_isotropic_3d.h:54
This law defines an hyperelastic material according to the NeoHookean formulation for 3D cases.
Definition: hyper_elastic_isotropic_neo_hookean_3d.h:52
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:53
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
Definition: fem_to_dem_application.h:46
virtual void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: fem_to_dem_application.h:82
virtual ~KratosFemToDemApplication()
Destructor.
Definition: fem_to_dem_application.h:56
virtual std::string Info() const override
Turn back information as a string.
Definition: fem_to_dem_application.h:77
KRATOS_CLASS_POINTER_DEFINITION(KratosFemToDemApplication)
virtual void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: fem_to_dem_application.h:88
This class defines a small deformation linear elastic constitutive model for plane strain cases.
Definition: linear_plane_strain.h:53
This class defines a small deformation linear elastic constitutive model for plane stress cases.
Definition: linear_plane_stress.h:51
#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