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.
inviscid_force_law.h
Go to the documentation of this file.
1 // Author: Guillermo Casas (gcasas@cimne.upc.edu)
2 // Date: February 2019
3 
4 #if !defined(SDEM_INVISCID_FORCE_LAW_H_INCLUDED)
5 #define SDEM_INVISCID_FORCE_LAW_H_INCLUDED
6 
7 #include <string>
8 #include <iostream>
9 #include "includes/define.h"
10 #include "includes/serializer.h"
11 #include "includes/model_part.h"
12 #include "containers/flags.h"
13 
14 namespace Kratos {
15 
16  class KRATOS_API(SWIMMING_DEM_APPLICATION) InviscidForceLaw : public Flags {
17 
18  public:
19  typedef Node NodeType;
21 
22  InviscidForceLaw(): mLastVirtualMassAddedMass(0.0){}
23 
24  InviscidForceLaw(Parameters r_parameters): mLastVirtualMassAddedMass(0.0){}
25 
27 
28  virtual InviscidForceLaw::Pointer Clone() const;
29 
30  virtual void Initialize(const ProcessInfo& r_process_info);
31 
32  void SetInviscidForceLawInProperties(Properties::Pointer pProp) const;
33 
34  virtual std::string GetTypeOfLaw();
35 
36  virtual void ComputeForce(Geometry<Node >& r_geometry,
37  const double fluid_density,
38  const double displaced_volume,
39  array_1d<double, 3>& virtual_mass_plus_undisturbed_flow_force,
40  const ProcessInfo& r_current_process_info){}
41 
42  virtual double GetAddedMass(Geometry<Node >& r_geometry,
43  double fluid_density,
44  const ProcessInfo& r_current_process_info){return mLastVirtualMassAddedMass;}
45 
46  double ComputeParticleAccelerationNumber(const double particle_radius,
47  const array_1d<double, 3>& minus_slip_velocity,
48  const array_1d<double, 3>& minus_slip_acceleration);
49 
50  protected:
51 
53 
54  virtual double GetVirtualMassCoefficient(Geometry<Node >& r_geometry,
55  const array_1d<double, 3>& minus_slip_acc){return 0.0;}
56 
57  private:
58 
59  friend class Serializer;
60 
61  virtual void save(Serializer& rSerializer) const override {
63  }
64 
65  virtual void load(Serializer& rSerializer) override {
67  }
68 
69  }; //class InviscidForceLaw
70 
71 KRATOS_DEFINE_APPLICATION_VARIABLE(SWIMMING_DEM_APPLICATION, InviscidForceLaw::Pointer, SDEM_INVISCID_FORCE_LAW_POINTER)
72 
73 } // Namespace Kratos
74 
75 #endif /* SDEM_INVISCID_FORCE_LAW_H_INCLUDED defined */
Definition: flags.h:58
Geometry base class.
Definition: geometry.h:71
Definition: inviscid_force_law.h:16
virtual double GetAddedMass(Geometry< Node > &r_geometry, double fluid_density, const ProcessInfo &r_current_process_info)
Definition: inviscid_force_law.h:42
InviscidForceLaw()
Definition: inviscid_force_law.h:22
double mLastVirtualMassAddedMass
Definition: inviscid_force_law.h:52
~InviscidForceLaw()
Definition: inviscid_force_law.h:26
KRATOS_CLASS_POINTER_DEFINITION(InviscidForceLaw)
InviscidForceLaw(Parameters r_parameters)
Definition: inviscid_force_law.h:24
virtual void ComputeForce(Geometry< Node > &r_geometry, const double fluid_density, const double displaced_volume, array_1d< double, 3 > &virtual_mass_plus_undisturbed_flow_force, const ProcessInfo &r_current_process_info)
Definition: inviscid_force_law.h:36
virtual double GetVirtualMassCoefficient(Geometry< Node > &r_geometry, const array_1d< double, 3 > &minus_slip_acc)
Definition: inviscid_force_law.h:54
Node NodeType
Definition: inviscid_force_law.h:19
This class defines the node.
Definition: node.h:65
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KRATOS_DEFINE_APPLICATION_VARIABLE(CHIMERA_APPLICATION, double, CHIMERA_DISTANCE)
def load(f)
Definition: ode_solve.py:307