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.
apply_forces_and_moments_process.hpp
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 author: Joaquín Irazábal González
11 //
12 
13 #if !defined(KRATOS_APPLY_FORCES_AND_MOMENTS_PROCESS )
14 #define KRATOS_APPLY_FORCES_AND_MOMENTS_PROCESS
15 
16 
17 
18 // System includes
19 #include <string>
20 #include <iostream>
21 
22 
23 // External includes
24 
25 
26 // Project includes
27 #include "includes/table.h"
29 #include "processes/process.h"
33 
34 namespace Kratos
35 {
38 
41 
45 
49 
53 
57 
59 
62  class KRATOS_API(DEM_APPLICATION) ApplyForcesAndMomentsProcess: public Process
63  {
64  public:
67 
70 
73 
77 
79  ApplyForcesAndMomentsProcess(ModelPart& rModelPart, Parameters rParameters);
80 
82  ~ApplyForcesAndMomentsProcess() override;
83 
84 
88 
89 
93 
94  void Execute() override;
95 
96  void ExecuteInitializeSolutionStep() override;
97 
98  void ExecuteFinalizeSolutionStep() override;
99 
103 
104 
108 
109 
113 
115  std::string Info() const override;
116 
118  void PrintInfo(std::ostream& rOStream) const override;
119 
121  void PrintData(std::ostream& rOStream) const override;
122 
123 
127 
128 
130 
131  protected:
134 
135 
139 
140 
144 
145 
149 
153 
154 
158 
159 
163 
164 
166 
167  private:
170 
171 
175 
176  ModelPart& mrModelPart;
177  Parameters mParameters;
178  IntervalUtility mInterval;
179  array_1d<bool, 3> mForceValueIsNumeric;
180  array_1d<bool, 3> mMomentValueIsNumeric;
181  array_1d<double, 3> mForceValues;
182  array_1d<double, 3> mMomentValues;
183  std::vector<GenericFunctionUtility> mForceFunctions;
184  std::vector<GenericFunctionUtility> mMomentFunctions;
185  array_1d<int, 3> mForceTableId;
186  array_1d<int, 3> mMomentTableId;
187  std::vector<TableType::Pointer> mpForceTable;
188  std::vector<TableType::Pointer> mpMomentTable;
189 
193 
194 
198 
199 
203 
204 
208 
209 
213 
216 
219 
220 
222 
223  }; // Class ApplyForcesAndMomentsProcess
224 
226 
229 
230 
234 
235 
237  inline std::ostream& operator << (
238  std::ostream& rOStream,
239  const ApplyForcesAndMomentsProcess& rThis);
240 
242 
244 
245 } // namespace Kratos.
246 
247 #endif // KRATOS_APPLY_FORCES_AND_MOMENTS_PROCESS defined
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
void ExecuteFinalizeSolutionStep() override
this function will be executed at every time step AFTER performing the solve phase
Definition: periodic_interface_process.hpp:55
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Auxiliary process to apply forces and moments to particles.
Definition: apply_forces_and_moments_process.hpp:63
KRATOS_CLASS_POINTER_DEFINITION(ApplyForcesAndMomentsProcess)
Pointer definition of ApplyForcesAndMomentsProcess.
Table< double, double > TableType
Defining a table with double argument and result type as table type.
Definition: apply_forces_and_moments_process.hpp:72
Definition: interval_utility.h:27
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
The base class for all processes in Kratos.
Definition: process.h:49
Definition: table.h:435
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432