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_fluid_dynamics_application.h
Go to the documentation of this file.
1 //-------------------------------------------------------------
2 // ___ __ ___ _ _ _
3 // KRATOS| _ \/ _|___ _ __ | __| |_ _(_)__| |
4 // | _/ _/ -_) ' \| _|| | || | / _` |
5 // |_| |_| \___|_|_|_|_| |_|\_,_|_\__,_|DYNAMICS
6 //
7 // License:(BSD) PfemFluidDynamicsApplication/license.txt
8 //
9 // Main authors: Josep Maria Carbonell
10 // Alessandro Franci
11 // Miquel Angel Celigueta
12 //-------------------------------------------------------------
13 //
14 // Project Name: KratosPfemFluidDynamicsApplication $
15 // Created by: $Author: JMCarbonell $
16 // Last modified by: $Co-Author: $
17 // Date: $Date: February 2016 $
18 // Revision: $Revision: 0.0 $
19 //
20 //
21 
22 #if !defined(KRATOS_PFEM_FLUID_DYNAMICS_APPLICATION_H_INCLUDED)
23 #define KRATOS_PFEM_FLUID_DYNAMICS_APPLICATION_H_INCLUDED
24 
25 // System includes
26 
27 // External includes
28 
29 // Project includes
30 
31 // Core applications
33 
34 //conditions
35 
36 /* //elements */
53 
54 //constitutive laws
55 #include "containers/flags.h"
56 #include "includes/variables.h"
58 
60 
61 // yield Criteria
62 
63 //flow rule
64 
65 //hardening laws
66 
67 // Fluid constitutive laws
86 
87 // Solid constitutive laws
92 
94 
95 namespace Kratos
96 {
99 
102 
106 
110 
114 
118 
120 
122 class KRATOS_API(PFEM_FLUID_DYNAMICS_APPLICATION) KratosPfemFluidDynamicsApplication : public KratosApplication
123 {
124 public:
127 
130 
134 
137 
140 
144 
148 
149  void Register() override;
150 
154 
158 
162 
164  std::string Info() const override
165  {
166  return "KratosPfemFluidDynamicsApplication";
167  }
168 
170  void PrintInfo(std::ostream &rOStream) const override
171  {
172  rOStream << Info();
173  PrintData(rOStream);
174  }
175 
177  void PrintData(std::ostream &rOStream) const override
178  {
179  KRATOS_WATCH("in KratosPfemFluidDynamicsApplication")
181  rOStream << "Variables:" << std::endl;
183  rOStream << std::endl;
184  rOStream << "Elements:" << std::endl;
185  KratosComponents<Element>().PrintData(rOStream);
186  rOStream << std::endl;
187  rOStream << "Conditions:" << std::endl;
188  KratosComponents<Condition>().PrintData(rOStream);
189  }
190 
194 
196 
197 protected:
200 
204 
208 
212 
216 
220 
224 
226 
227 private:
230 
231  /* ///@} */
232  /* ///@name Member Variables */
233  /* ///@{ */
234  /* //updated lagrangian */
235 
237  const TwoStepUpdatedLagrangianVPImplicitElement<2> mTwoStepUpdatedLagrangianVPImplicitElement2D;
238  const TwoStepUpdatedLagrangianVPImplicitElement<2> mTwoStepUpdatedLagrangianVPImplicitElement2Dquadratic;
239 
241  const TwoStepUpdatedLagrangianVPImplicitElement<3> mTwoStepUpdatedLagrangianVPImplicitElement3D;
242  const TwoStepUpdatedLagrangianVPImplicitElement<3> mTwoStepUpdatedLagrangianVPImplicitElement3Dquadratic;
243 
245  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedElement<2> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedElement2D;
246  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedElement<2> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedElement2Dquadratic;
247 
249  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedElement<3> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedElement3D;
250  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedElement<3> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedElement3Dquadratic;
251 
253  const TwoStepUpdatedLagrangianVPImplicitSolidElement<2> mTwoStepUpdatedLagrangianVPImplicitSolidElement2D;
254  const TwoStepUpdatedLagrangianVPImplicitSolidElement<2> mTwoStepUpdatedLagrangianVPImplicitSolidElement2Dquadratic;
255 
257  const TwoStepUpdatedLagrangianVPImplicitSolidElement<3> mTwoStepUpdatedLagrangianVPImplicitSolidElement3D;
258  const TwoStepUpdatedLagrangianVPImplicitSolidElement<3> mTwoStepUpdatedLagrangianVPImplicitSolidElement3Dquadratic;
259 
261  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedSolidElement<2> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedSolidElement2D;
262  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedSolidElement<2> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedSolidElement2Dquadratic;
263 
265  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedSolidElement<3> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedSolidElement3D;
266  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedSolidElement<3> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedSolidElement3Dquadratic;
267 
269  const UpdatedLagrangianVImplicitSolidElement<2> mUpdatedLagrangianVImplicitSolidElement2D;
270  const UpdatedLagrangianVImplicitSolidElement<2> mUpdatedLagrangianVImplicitSolidElement2Dquadratic;
271 
273  const UpdatedLagrangianVImplicitSolidElement<3> mUpdatedLagrangianVImplicitSolidElement3D;
274  const UpdatedLagrangianVImplicitSolidElement<3> mUpdatedLagrangianVImplicitSolidElement3Dquadratic;
275 
277  const TwoStepUpdatedLagrangianVPImplicitFluidFicElement<2> mTwoStepUpdatedLagrangianVPImplicitFluidFicElement2D;
278  const TwoStepUpdatedLagrangianVPImplicitFluidFicElement<2> mTwoStepUpdatedLagrangianVPImplicitFluidFicElement2Dquadratic;
279 
281  const TwoStepUpdatedLagrangianVPImplicitFluidFicElement<3> mTwoStepUpdatedLagrangianVPImplicitFluidFicElement3D;
282  const TwoStepUpdatedLagrangianVPImplicitFluidFicElement<3> mTwoStepUpdatedLagrangianVPImplicitFluidFicElement3Dquadratic;
283 
285  const TwoStepUpdatedLagrangianVPImplicitFluidPspgElement<2> mTwoStepUpdatedLagrangianVPImplicitFluidPspgElement2D;
286  const TwoStepUpdatedLagrangianVPImplicitFluidPspgElement<2> mTwoStepUpdatedLagrangianVPImplicitFluidPspgElement2Dquadratic;
287 
289  const TwoStepUpdatedLagrangianVPImplicitFluidPspgElement<3> mTwoStepUpdatedLagrangianVPImplicitFluidPspgElement3D;
290  const TwoStepUpdatedLagrangianVPImplicitFluidPspgElement<3> mTwoStepUpdatedLagrangianVPImplicitFluidPspgElement3Dquadratic;
291 
293  const TwoStepUpdatedLagrangianVPImplicitFluidDEMcouplingElement<2> mTwoStepUpdatedLagrangianVPImplicitFluidDEMcouplingElement2D;
294  const TwoStepUpdatedLagrangianVPImplicitFluidDEMcouplingElement<2> mTwoStepUpdatedLagrangianVPImplicitFluidDEMcouplingElement2Dquadratic;
295 
297  const TwoStepUpdatedLagrangianVPImplicitFluidDEMcouplingElement<3> mTwoStepUpdatedLagrangianVPImplicitFluidDEMcouplingElement3D;
298  const TwoStepUpdatedLagrangianVPImplicitFluidDEMcouplingElement<3> mTwoStepUpdatedLagrangianVPImplicitFluidDEMcouplingElement3Dquadratic;
299 
301  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedFluidElement<2> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedFluidElement2D;
302  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedFluidElement<2> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedFluidElement2Dquadratic;
303 
305  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedFluidElement<3> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedFluidElement3D;
306  const TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedFluidElement<3> mTwoStepUpdatedLagrangianVPImplicitNodallyIntegratedFluidElement3Dquadratic;
307 
309  const UpdatedLagrangianElement<2> mUpdatedLagrangianElement2D;
310  const UpdatedLagrangianElement<2> mUpdatedLagrangianElement2Dquadratic;
311 
313  const UpdatedLagrangianElement<3> mUpdatedLagrangianElement3D;
314  const UpdatedLagrangianElement<3> mUpdatedLagrangianElement3Dquadratic;
315 
317  const TwoStepUpdatedLagrangianElement<2> mTwoStepUpdatedLagrangianElement2D;
318  const TwoStepUpdatedLagrangianElement<2> mTwoStepUpdatedLagrangianElement2Dquadratic;
319 
321  const TwoStepUpdatedLagrangianElement<3> mTwoStepUpdatedLagrangianElement3D;
322  const TwoStepUpdatedLagrangianElement<3> mTwoStepUpdatedLagrangianElement3Dquadratic;
323 
325  const ThreeStepUpdatedLagrangianElement<2> mThreeStepUpdatedLagrangianElement2D;
326  const ThreeStepUpdatedLagrangianElement<2> mThreeStepUpdatedLagrangianElement2Dquadratic;
327 
329  const ThreeStepUpdatedLagrangianElement<3> mThreeStepUpdatedLagrangianElement3D;
330  const ThreeStepUpdatedLagrangianElement<3> mThreeStepUpdatedLagrangianElement3Dquadratic;
331 
333  const ThreeStepFirstOrderUpdatedLagrangianElement<2> mThreeStepFirstOrderUpdatedLagrangianElement2D;
334  const ThreeStepFirstOrderUpdatedLagrangianElement<2> mThreeStepFirstOrderUpdatedLagrangianElement2Dquadratic;
335 
337  const ThreeStepFirstOrderUpdatedLagrangianElement<3> mThreeStepFirstOrderUpdatedLagrangianElement3D;
338  const ThreeStepFirstOrderUpdatedLagrangianElement<3> mThreeStepFirstOrderUpdatedLagrangianElement3Dquadratic;
339 
341  const ThreeStepSecondOrderUpdatedLagrangianElement<2> mThreeStepSecondOrderUpdatedLagrangianElement2D;
342  const ThreeStepSecondOrderUpdatedLagrangianElement<2> mThreeStepSecondOrderUpdatedLagrangianElement2Dquadratic;
343 
345  const ThreeStepSecondOrderUpdatedLagrangianElement<3> mThreeStepSecondOrderUpdatedLagrangianElement3D;
346  const ThreeStepSecondOrderUpdatedLagrangianElement<3> mThreeStepSecondOrderUpdatedLagrangianElement3Dquadratic;
347 
349  const ThreeStepSecondOrderPspgUpdatedLagrangianElement<2> mThreeStepSecondOrderPspgUpdatedLagrangianElement2D;
350  const ThreeStepSecondOrderPspgUpdatedLagrangianElement<2> mThreeStepSecondOrderPspgUpdatedLagrangianElement2Dquadratic;
351 
353  const ThreeStepSecondOrderPspgUpdatedLagrangianElement<3> mThreeStepSecondOrderPspgUpdatedLagrangianElement3D;
354  const ThreeStepSecondOrderPspgUpdatedLagrangianElement<3> mThreeStepSecondOrderPspgUpdatedLagrangianElement3Dquadratic;
355 
356  // Fluid constitutive laws
357  const Bingham2DLaw mBingham2DLaw;
358  const Bingham3DLaw mBingham3DLaw;
359  const BinghamTemperatureDependent2DLaw mBinghamTemperatureDependent2DLaw;
360  const BinghamTemperatureDependent3DLaw mBinghamTemperatureDependent3DLaw;
361  const HerschelBulkley2DLaw mHerschelBulkley2DLaw;
362  const HerschelBulkley3DLaw mHerschelBulkley3DLaw;
363  const FrictionalViscoplastic2DLaw mFrictionalViscoplastic2DLaw;
364  const FrictionalViscoplastic3DLaw mFrictionalViscoplastic3DLaw;
365  const FrictionalViscoplasticTemperatureDependent2DLaw mFrictionalViscoplasticTemperatureDependent2DLaw;
366  const FrictionalViscoplasticTemperatureDependent3DLaw mFrictionalViscoplasticTemperatureDependent3DLaw;
367  const Newtonian2DLaw mNewtonian2DLaw;
368  const Newtonian3DLaw mNewtonian3DLaw;
369  const NewtonianTemperatureDependent2DLaw mNewtonianTemperatureDependent2DLaw;
370  const NewtonianTemperatureDependent3DLaw mNewtonianTemperatureDependent3DLaw;
371  const MuIRheology2DLaw mMuIRheology2DLaw;
372  const MuIRheology3DLaw mMuIRheology3DLaw;
373  const MuIRheologyTemperatureDependent2DLaw mMuIRheologyTemperatureDependent2DLaw;
374  const MuIRheologyTemperatureDependent3DLaw mMuIRheologyTemperatureDependent3DLaw;
375 
376  // Solid constitutive laws
377  const Hypoelastic3DLaw mHypoelastic3DLaw;
378  const Hypoelastic2DLaw mHypoelastic2DLaw;
379  const HypoelasticTemperatureDependent2DLaw mHypoelasticTemperatureDependent2DLaw;
380  const HypoelasticTemperatureDependent3DLaw mHypoelasticTemperatureDependent3DLaw;
381 
385 
389 
393 
397 
401 
404 
407 
409 
410 }; // Class KratosPfemFluidDynamicsApplication
411 
413 
416 
420 
422 
423 } // namespace Kratos.
424 
425 #endif // KRATOS_PFEM_FLUID_DYNAMICS_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
Definition: bingham_2D_law.h:35
Definition: bingham_3d_law.h:34
Definition: bingham_temperature_dependent_2D_law.h:35
Definition: bingham_temperature_dependent_3D_law.h:35
Definition: frictional_viscoplastic_2D_law.h:35
Definition: frictional_viscoplastic_3D_law.h:35
Definition: frictional_viscoplastic_temperature_dependent_2D_law.h:36
Definition: frictional_viscoplastic_temperature_dependent_3D_law.h:36
Definition: herschel_bulkley_2D_law.h:36
Definition: herschel_bulkley_3d_law.h:35
Definition: hypoelastic_2D_law.h:34
Definition: hypoelastic_3D_law.h:34
Definition: hypoelastic_temperature_dependent_2D_law.h:32
Definition: hypoelastic_temperature_dependent_3D_law.h:32
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_fluid_dynamics_application.h:123
KRATOS_CLASS_POINTER_DEFINITION(KratosPfemFluidDynamicsApplication)
Pointer definition of KratosPfemFluidDynamicsApplication.
std::string Info() const override
Turn back information as a string.
Definition: pfem_fluid_dynamics_application.h:164
virtual ~KratosPfemFluidDynamicsApplication()
Destructor.
Definition: pfem_fluid_dynamics_application.h:139
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: pfem_fluid_dynamics_application.h:170
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: pfem_fluid_dynamics_application.h:177
Definition: mu_I_rheology_2D_law.h:39
Definition: mu_I_rheology_3D_law.h:39
Definition: mu_I_rheology_temperature_dependent_2D_law.h:38
Definition: mu_I_rheology_temperature_dependent_3D_law.h:38
Definition: newtonian_2d_law.h:31
Definition: newtonian_3d_law.h:31
Definition: newtonian_temperature_dependent_2d_law.h:32
Definition: newtonian_temperature_dependent_3d_law.h:33
#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