rotatingMotion.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2016 OpenFOAM Foundation
9  Copyright (C) 2020 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::solidBodyMotionFunctions::rotatingMotion
29 
30 Description
31  SolidBodyMotionFvMesh 6DoF motion function.
32 
33  The rotation is defined by an origin and axis of rotation and an angular
34  speed.
35 
36 SourceFiles
37  rotatingMotion.C
38 
39 \*---------------------------------------------------------------------------*/
40 
41 #ifndef rotatingMotion_H
42 #define rotatingMotion_H
43 
45 #include "primitiveFields.H"
46 #include "point.H"
47 #include "Function1.H"
48 #include "autoPtr.H"
49 
50 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
51 
52 namespace Foam
53 {
54 namespace solidBodyMotionFunctions
55 {
56 
57 /*---------------------------------------------------------------------------*\
58  Class rotatingMotion Declaration
59 \*---------------------------------------------------------------------------*/
60 
61 class rotatingMotion
62 :
64 {
65  // Private Data
66 
67  //- Origin of the axis
68  const vector origin_;
69 
70  //- Axis vector
71  const vector axis_;
72 
73  //- Angular velocity (rad/sec)
75 
76 
77  // Private Member Functions
78 
79  //- No copy construct
80  rotatingMotion(const rotatingMotion&) = delete;
81 
82  //- No copy assignment
83  void operator=(const rotatingMotion&) = delete;
84 
85 
86 public:
87 
88  //- Runtime type information
89  TypeName("rotatingMotion");
90 
91 
92  // Constructors
93 
94  //- Construct from components
96  (
97  const dictionary& SBMFCoeffs,
98  const Time& runTime
99  );
100 
101  //- Construct and return a clone
103  {
105  (
106  new rotatingMotion
107  (
108  SBMFCoeffs_,
109  time_
110  )
111  );
112  }
113 
114 
115  //- Destructor
116  virtual ~rotatingMotion() = default;
117 
118 
119  // Member Functions
120 
121  //- Return the solid-body motion transformation septernion
122  virtual septernion transformation() const;
123 
124  //- Update properties from given dictionary
125  virtual bool read(const dictionary& SBMFCoeffs);
126 };
127 
128 
129 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
130 
131 } // End namespace solidBodyMotionFunctions
132 } // End namespace Foam
133 
134 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
135 
136 #endif
137 
138 // ************************************************************************* //
runTime
engineTime & runTime
Definition: createEngineTime.H:13
Foam::Time
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
Definition: Time.H:73
solidBodyMotionFunction.H
Foam::septernion
Septernion class used to perform translations and rotations in 3D space.
Definition: septernion.H:66
Foam::solidBodyMotionFunctions::rotatingMotion::transformation
virtual septernion transformation() const
Return the solid-body motion transformation septernion.
Definition: rotatingMotion.C:67
Foam::solidBodyMotionFunctions::rotatingMotion::~rotatingMotion
virtual ~rotatingMotion()=default
Destructor.
point.H
Function1.H
primitiveFields.H
Specialisations of Field<T> for scalar, vector and tensor.
Foam::solidBodyMotionFunctions::rotatingMotion::clone
virtual autoPtr< solidBodyMotionFunction > clone() const
Construct and return a clone.
Definition: rotatingMotion.H:101
Foam::solidBodyMotionFunctions::rotatingMotion::TypeName
TypeName("rotatingMotion")
Runtime type information.
Foam::solidBodyMotionFunction::SBMFCoeffs_
dictionary SBMFCoeffs_
Definition: solidBodyMotionFunction.H:69
Foam::solidBodyMotionFunction
Base class for defining solid-body motions.
Definition: solidBodyMotionFunction.H:63
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::solidBodyMotionFunctions::rotatingMotion
SolidBodyMotionFvMesh 6DoF motion function.
Definition: rotatingMotion.H:60
Foam::solidBodyMotionFunctions::rotatingMotion::read
virtual bool read(const dictionary &SBMFCoeffs)
Update properties from given dictionary.
Definition: rotatingMotion.C:84
Foam::Vector< scalar >
Foam::solidBodyMotionFunction::time_
const Time & time_
Definition: solidBodyMotionFunction.H:71
autoPtr.H