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.
fluid_dynamics_application.h
Go to the documentation of this file.
1 // | / |
2 // ' / __| _` | __| _ \ __|
3 // . \ | ( | | ( |\__ `
4 // _|\_\_| \__,_|\__|\___/ ____/
5 // Multi-Physics
6 //
7 // License: BSD License
8 // Kratos default license: kratos/license.txt
9 //
10 // Main authors: Jordi Cotela
11 //
12 
13 #pragma once
14 
21 
22 
23 // System includes
24 #include <string>
25 #include <iostream>
26 
27 
28 // External includes
29 
30 
31 // Project includes
32 #include "includes/define.h"
34 
35 
36 // Application includes
37 //#include "custom_conditions/fluid_periodic_condition_2d.h"
39 #include "custom_elements/vms.h"
40 #include "custom_elements/qs_vms.h"
43 #include "custom_elements/d_vms.h"
46 #include "custom_elements/fic.h"
51 //#include "custom_elements/dynamic_vms.h"
68 
80 
91 
102 
103 // Wall laws
106 
107 // Adjoint fluid elements
111 
112 // Adjoint fluid conditions
114 
115 namespace Kratos
116 {
119 
122 
126 
130 
134 
138 
140 class KRATOS_API(FLUID_DYNAMICS_APPLICATION) KratosFluidDynamicsApplication : public KratosApplication
141 {
142 public:
145 
146 
149 
153 
156 
159 
160 
164 
165 
169 
170  void Register() override;
171 
172 
173 
177 
178 
182 
183 
187 
189  std::string Info() const override
190  {
191  return "KratosFluidDynamicsApplication";
192  }
193 
195  void PrintInfo(std::ostream& rOStream) const override
196  {
197  rOStream << Info();
198  PrintData(rOStream);
199  }
200 
202  void PrintData(std::ostream& rOStream) const override
203  {
204  KRATOS_WATCH("in Fluid Dynamics application");
206  rOStream << "Variables:" << std::endl;
208  rOStream << std::endl;
209  rOStream << "Elements:" << std::endl;
210  KratosComponents<Element>().PrintData(rOStream);
211  rOStream << std::endl;
212  rOStream << "Conditions:" << std::endl;
213  KratosComponents<Condition>().PrintData(rOStream);
214  }
215 
216 
220 
221 
223 
224 protected:
227 
228 
232 
233 
237 
238 
242 
243 
247 
248 
252 
253 
257 
258 
260 
261 private:
264 
265 
266 
267  // static const ApplicationCondition msApplicationCondition;
268 
272 
274  const VMS<2> mVMS2D;
276  const VMS<3> mVMS3D;
278  const QSVMS< QSVMSData<2,3> > mQSVMS2D3N;
279  const QSVMS< QSVMSData<3,4> > mQSVMS3D4N;
280  const QSVMS< QSVMSData<2,4> > mQSVMS2D4N;
281  const QSVMS< QSVMSData<3,8> > mQSVMS3D8N;
282  const QSVMSDEMCoupled< QSVMSDEMCoupledData<2,3> > mQSVMSDEMCoupled2D3N;
283  const QSVMSDEMCoupled< QSVMSDEMCoupledData<2,6> > mQSVMSDEMCoupled2D6N;
284  const QSVMSDEMCoupled< QSVMSDEMCoupledData<3,4> > mQSVMSDEMCoupled3D4N;
285  const QSVMSDEMCoupled< QSVMSDEMCoupledData<2,4> > mQSVMSDEMCoupled2D4N;
286  const QSVMSDEMCoupled< QSVMSDEMCoupledData<2,9> > mQSVMSDEMCoupled2D9N;
287  const QSVMSDEMCoupled< QSVMSDEMCoupledData<3,8> > mQSVMSDEMCoupled3D8N;
288  const QSVMSDEMCoupled< QSVMSDEMCoupledData<3,27> > mQSVMSDEMCoupled3D27N;
289  const AlternativeQSVMSDEMCoupled< QSVMSDEMCoupledData<2,3> > mAlternativeQSVMSDEMCoupled2D3N;
290  const AlternativeQSVMSDEMCoupled< QSVMSDEMCoupledData<2,6> > mAlternativeQSVMSDEMCoupled2D6N;
291  const AlternativeQSVMSDEMCoupled< QSVMSDEMCoupledData<3,4> > mAlternativeQSVMSDEMCoupled3D4N;
292  const AlternativeQSVMSDEMCoupled< QSVMSDEMCoupledData<2,4> > mAlternativeQSVMSDEMCoupled2D4N;
293  const AlternativeQSVMSDEMCoupled< QSVMSDEMCoupledData<2,9> > mAlternativeQSVMSDEMCoupled2D9N;
294  const AlternativeQSVMSDEMCoupled< QSVMSDEMCoupledData<3,8> > mAlternativeQSVMSDEMCoupled3D8N;
295  const AlternativeQSVMSDEMCoupled< QSVMSDEMCoupledData<3,27> > mAlternativeQSVMSDEMCoupled3D27N;
296  const QSVMS< TimeIntegratedQSVMSData<2,3> > mTimeIntegratedQSVMS2D3N;
297  const QSVMS< TimeIntegratedQSVMSData<3,4> > mTimeIntegratedQSVMS3D4N;
298  const AxisymmetricNavierStokes< AxisymmetricNavierStokesData<2,3> > mAxisymmetricNavierStokes2D3N;
299  const AxisymmetricNavierStokes< AxisymmetricNavierStokesData<2,4> > mAxisymmetricNavierStokes2D4N;
300  const DVMS< QSVMSData<2,3> > mDVMS2D3N;
301  const DVMS< QSVMSData<3,4> > mDVMS3D4N;
302  const DVMSDEMCoupled< QSVMSDEMCoupledData<2,3> > mDVMSDEMCoupled2D3N;
303  const DVMSDEMCoupled< QSVMSDEMCoupledData<2,6> > mDVMSDEMCoupled2D6N;
304  const DVMSDEMCoupled< QSVMSDEMCoupledData<3,4> > mDVMSDEMCoupled3D4N;
305  const DVMSDEMCoupled< QSVMSDEMCoupledData<2,4> > mDVMSDEMCoupled2D4N;
306  const DVMSDEMCoupled< QSVMSDEMCoupledData<2,9> > mDVMSDEMCoupled2D9N;
307  const DVMSDEMCoupled< QSVMSDEMCoupledData<3,8> > mDVMSDEMCoupled3D8N;
308  const DVMSDEMCoupled< QSVMSDEMCoupledData<3,27> > mDVMSDEMCoupled3D27N;
309  const AlternativeDVMSDEMCoupled< QSVMSDEMCoupledData<2,3> > mAlternativeDVMSDEMCoupled2D3N;
310  const AlternativeDVMSDEMCoupled< QSVMSDEMCoupledData<2,6> > mAlternativeDVMSDEMCoupled2D6N;
311  const AlternativeDVMSDEMCoupled< QSVMSDEMCoupledData<3,4> > mAlternativeDVMSDEMCoupled3D4N;
312  const AlternativeDVMSDEMCoupled< QSVMSDEMCoupledData<2,4> > mAlternativeDVMSDEMCoupled2D4N;
313  const AlternativeDVMSDEMCoupled< QSVMSDEMCoupledData<2,9> > mAlternativeDVMSDEMCoupled2D9N;
314  const AlternativeDVMSDEMCoupled< QSVMSDEMCoupledData<3,8> > mAlternativeDVMSDEMCoupled3D8N;
315  const AlternativeDVMSDEMCoupled< QSVMSDEMCoupledData<3,27> > mAlternativeDVMSDEMCoupled3D27N;
316  const FIC< FICData<2,3> > mFIC2D3N;
317  const FIC< FICData<2,4> > mFIC2D4N;
318  const FIC< FICData<3,4> > mFIC3D4N;
319  const FIC< FICData<3,8> > mFIC3D8N;
320  const FIC< TimeIntegratedFICData<2,3> > mTimeIntegratedFIC2D3N;
321  const FIC< TimeIntegratedFICData<3,4> > mTimeIntegratedFIC3D4N;
322  const SymbolicStokes< SymbolicStokesData<2,3> > mSymbolicStokes2D3N;
323  const SymbolicStokes< SymbolicStokesData<2,4> > mSymbolicStokes2D4N;
324  const SymbolicStokes< SymbolicStokesData<3,4> > mSymbolicStokes3D4N;
325  const SymbolicStokes< SymbolicStokesData<3,6> > mSymbolicStokes3D6N;
326  const SymbolicStokes< SymbolicStokesData<3,8> > mSymbolicStokes3D8N;
327  const WeaklyCompressibleNavierStokes< WeaklyCompressibleNavierStokesData<2,3> > mWeaklyCompressibleNavierStokes2D3N;
328  const WeaklyCompressibleNavierStokes< WeaklyCompressibleNavierStokesData<3,4> > mWeaklyCompressibleNavierStokes3D4N;
329  const EmbeddedFluidElement< WeaklyCompressibleNavierStokes< WeaklyCompressibleNavierStokesData<2,3> > > mEmbeddedWeaklyCompressibleNavierStokes2D3N;
330  const EmbeddedFluidElement< WeaklyCompressibleNavierStokes< WeaklyCompressibleNavierStokesData<3,4> > > mEmbeddedWeaklyCompressibleNavierStokes3D4N;
331  const EmbeddedFluidElementDiscontinuous< WeaklyCompressibleNavierStokes< WeaklyCompressibleNavierStokesData<2,3> > > mEmbeddedWeaklyCompressibleNavierStokesDiscontinuous2D3N;
332  const EmbeddedFluidElementDiscontinuous< WeaklyCompressibleNavierStokes< WeaklyCompressibleNavierStokesData<3,4> > > mEmbeddedWeaklyCompressibleNavierStokesDiscontinuous3D4N;
335  const EmbeddedFluidElementDiscontinuous< QSVMS< TimeIntegratedQSVMSData<2,3> > > mEmbeddedQSVMSDiscontinuous2D3N;
336  const EmbeddedFluidElementDiscontinuous< QSVMS< TimeIntegratedQSVMSData<3,4> > > mEmbeddedQSVMSDiscontinuous3D4N;
337 
339  const TwoFluidVMS<3,4> mTwoFluidVMS3D;
340  const TwoFluidVMSLinearizedDarcy<3,4> mTwoFluidVMSLinearizedDarcy3D;
341 
342  const StationaryStokes<2> mStationaryStokes2D;
343  const StationaryStokes<3> mStationaryStokes3D;
344 
346  const FractionalStep<2> mFractionalStep2D;
348  const FractionalStep<3> mFractionalStep3D;
349  const FractionalStepDiscontinuous<2> mFractionalStepDiscontinuous2D;
350  const FractionalStepDiscontinuous<3> mFractionalStepDiscontinuous3D;
351 
353  const SpalartAllmaras mSpalartAllmaras2D;
355  const SpalartAllmaras mSpalartAllmaras3D;
356 
358  const WallCondition<2,2> mWallCondition2D;
360  const WallCondition<3,3> mWallCondition3D;
361 
363  const FSWernerWengleWallCondition<2,2> mFSWernerWengleWallCondition2D;
364  const FSWernerWengleWallCondition<3,3> mFSWernerWengleWallCondition3D;
365 
367  const FSGeneralizedWallCondition<2,2> mFSGeneralizedWallCondition2D;
368  const FSGeneralizedWallCondition<3,3> mFSGeneralizedWallCondition3D;
369 
371  const WallConditionDiscontinuous<2,2> mWallConditionDiscontinuous2D;
373  const WallConditionDiscontinuous<3,3> mWallConditionDiscontinuous3D;
374 
376  const MonolithicWallCondition<2,2> mMonolithicWallCondition2D;
378  const MonolithicWallCondition<3,3> mMonolithicWallCondition3D;
380  const StokesWallCondition<3,3> mStokesWallCondition3D;
381  const StokesWallCondition<3,4> mStokesWallCondition3D4N;
382 
384  const FSPeriodicCondition<2> mFSPeriodicCondition2D;
385  const FSPeriodicCondition<3> mFSPeriodicCondition3D;
386  const FSPeriodicCondition<2> mFSPeriodicConditionEdge2D;
387  const FSPeriodicCondition<3> mFSPeriodicConditionEdge3D;
388 
389 
391  const DPGVMS<2> mDPGVMS2D;
393  const DPGVMS<3> mDPGVMS3D;
394 
395 
396  // Non-Newtonian variants
397 
399  const BinghamFluid< VMS<2> > mBinghamVMS2D;
401  const BinghamFluid< VMS<3> > mBinghamVMS3D;
402 
404  const BinghamFluid< FractionalStep<2> > mBinghamFractionalStep2D;
406  const BinghamFluid< FractionalStep<3> > mBinghamFractionalStep3D;
407 
408  const BinghamFluid< FractionalStepDiscontinuous<2> > mBinghamFractionalStepDiscontinuous2D;
409  const BinghamFluid< FractionalStepDiscontinuous<3> > mBinghamFractionalStepDiscontinuous3D;
410 
411  const HerschelBulkleyFluid< VMS<2> > mHerschelBulkleyVMS2D;
412  const HerschelBulkleyFluid< VMS<3> > mHerschelBulkleyVMS3D;
413 
414  const Stokes3D mStokes3D;
415  const Stokes3DTwoFluid mStokes3DTwoFluid;
416 
418  const NavierStokes<2> mNavierStokes2D;
419  const NavierStokes<3> mNavierStokes3D;
420  const NavierStokesWallCondition<2,2> mNavierStokesWallCondition2D;
421  const NavierStokesWallCondition<3,3> mNavierStokesWallCondition3D;
422  const NavierStokesWallCondition<2,2,LinearLogWallLaw<2,2>> mNavierStokesLinearLogWallCondition2D;
423  const NavierStokesWallCondition<3,3,LinearLogWallLaw<3,3>> mNavierStokesLinearLogWallCondition3D;
424  const NavierStokesWallCondition<2,2,NavierSlipWallLaw<2,2>> mNavierStokesNavierSlipWallCondition2D;
425  const NavierStokesWallCondition<3,3,NavierSlipWallLaw<3,3>> mNavierStokesNavierSlipWallCondition3D;
426 
428  const EmbeddedNavierStokes<2> mEmbeddedNavierStokes2D;
429  const EmbeddedNavierStokes<3> mEmbeddedNavierStokes3D;
430 
432  const EmbeddedAusasNavierStokes<2> mEmbeddedAusasNavierStokes2D;
433  const EmbeddedAusasNavierStokes<3> mEmbeddedAusasNavierStokes3D;
434  const EmbeddedAusasNavierStokesWallCondition<2> mEmbeddedAusasNavierStokesWallCondition2D;
435  const EmbeddedAusasNavierStokesWallCondition<3> mEmbeddedAusasNavierStokesWallCondition3D;
436 
438  const CompressibleNavierStokesExplicit<2, 3> mCompressibleNavierStokesExplicit2D3N;
439  const CompressibleNavierStokesExplicit<2, 4> mCompressibleNavierStokesExplicit2D4N;
440  const CompressibleNavierStokesExplicit<3, 4> mCompressibleNavierStokesExplicit3D4N;
441 
443  const TwoFluidNavierStokes< TwoFluidNavierStokesData<2, 3> > mTwoFluidNavierStokes2D3N;
444  const TwoFluidNavierStokes< TwoFluidNavierStokesData<3, 4> > mTwoFluidNavierStokes3D4N;
445  const TwoFluidNavierStokesAlphaMethod< TwoFluidNavierStokesAlphaMethodData<2, 3> > mTwoFluidNavierStokesAlphaMethod2D3N;
446  const TwoFluidNavierStokesAlphaMethod< TwoFluidNavierStokesAlphaMethodData<3, 4> > mTwoFluidNavierStokesAlphaMethod3D4N;
447  const TwoFluidNavierStokesWallCondition<2,2> mTwoFluidNavierStokesWallCondition2D;
448  const TwoFluidNavierStokesWallCondition<3,3> mTwoFluidNavierStokesWallCondition3D;
449 
451  const Bingham3DLaw mBingham3DLaw;
452  const Euler2DLaw mEuler2DLaw;
453  const Euler3DLaw mEuler3DLaw;
454  const HerschelBulkley3DLaw mHerschelBulkley3DLaw;
455  const Newtonian2DLaw mNewtonian2DLaw;
456  const Newtonian3DLaw mNewtonian3DLaw;
457  const NewtonianTwoFluid2DLaw mNewtonianTwoFluid2DLaw;
458  const NewtonianTwoFluid3DLaw mNewtonianTwoFluid3DLaw;
459  const NewtonianTemperatureDependent2DLaw mNewtonianTemperatureDependent2DLaw;
460  const NewtonianTemperatureDependent3DLaw mNewtonianTemperatureDependent3DLaw;
461 
463  const VMSAdjointElement<2> mVMSAdjointElement2D;
464  const VMSAdjointElement<3> mVMSAdjointElement3D;
465 
470 
472  const AdjointMonolithicWallCondition<2, 2> mAdjointMonolithicWallCondition2D2N;
473  const AdjointMonolithicWallCondition<3, 3> mAdjointMonolithicWallCondition3D3N;
474 
478 
479 
483 
484 
488 
489 
493 
494 
498 
501 
504 
505 
507 
508 }; // Class KratosFluidDynamicsApplication
509 
511 
512 
515 
516 
520 
522 
524 
525 } // namespace Kratos.
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Definition: alternative_d_vms_dem_coupled.h:53
Definition: alternative_qs_vms_dem_coupled.h:61
Definition: axisymmetric_navier_stokes.h:60
Definition: bingham_3d_law.h:34
Definition: bingham_fluid.h:36
Definition: d_vms_dem_coupled.h:53
Definition: d_vms.h:54
Definition: embedded_fluid_element_discontinuous.h:55
Definition: embedded_fluid_element.h:55
Definition: euler_2d_law.h:31
Definition: euler_3d_law.h:31
Definition: fic.h:57
Definition: fluid_adjoint_element.h:35
Definition: herschel_bulkley_3d_law.h:35
Definition: herschel_bulkley_fluid.h:37
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
Main class of the Fluid Dynamics Application.
Definition: fluid_dynamics_application.h:141
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: fluid_dynamics_application.h:202
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: fluid_dynamics_application.h:195
KRATOS_CLASS_POINTER_DEFINITION(KratosFluidDynamicsApplication)
Pointer definition of KratosFluidMechanicsApplication.
std::string Info() const override
Turn back information as a string.
Definition: fluid_dynamics_application.h:189
~KratosFluidDynamicsApplication() override
Destructor.
Definition: fluid_dynamics_application.h:158
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
Definition: newtonian_two_fluid_2d_law.h:35
Definition: newtonian_two_fluid_3d_law.h:34
Definition: qs_vms_dem_coupled.h:61
Definition: qs_vms.h:52
Short class definition.
Definition: spalart_allmaras.h:59
Definition: stokes_3D.h:62
Definition: stokes_3D_twofluid.h:69
Definition: symbolic_stokes.h:57
Definition: two_fluid_navier_stokes_alpha_method.h:67
Definition: two_fluid_navier_stokes.h:67
Definition: weakly_compressible_navier_stokes.h:62
#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