Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / dynamicMesh / meshMotion / solidBodyMotion / graphVelocity / graphVelocity.H
blobb05e331c6c73aed5ebf9baa3d3f02a525b9d6311
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software; you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation; either version 2 of the License, or (at your
14     option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::solidBodyMotionFunction::graphVelocity
28 Description
29     Prescribed translational and rotational velocity given graphs for surge,
30     sway, heave, roll, pitch and yaw. Hence, the velocity is given in graphs,
31     not the motion (trajectory).
33 SourceFiles
34     graphVelocity.C
36 Author
37     Vuko Vukcevic, FMENA Zagreb.  All rights reserved.
39 \*---------------------------------------------------------------------------*/
41 #ifndef graphVelocity_H
42 #define graphVelocity_H
44 #include "solidBodyMotionFunction.H"
45 #include "graph.H"
46 #include "primitiveFields.H"
47 #include "point.H"
50 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52 namespace Foam
54 namespace solidBodyMotionFunctions
57 /*---------------------------------------------------------------------------*\
58                          Class graphVelocity Declaration
59 \*---------------------------------------------------------------------------*/
61 class graphVelocity
63     public solidBodyMotionFunction
65     // Private data
67         //- Centre of gravity
68         point origin_;
70         //- Integrated translation
71         mutable vector translation_;
73         //- Integrated rotation
74         mutable vector rotation_;
76         //- Integrated old translation
77         mutable vector translationOld_;
79         //- Integrated old rotation
80         mutable vector rotationOld_;
82         //- Time index, avoid integrating more than once per time step
83         mutable label localTimeIndex_;
86         // Prescribed translation members
88             // - Graph for surge translational velocity (x-translation)
89             graph surge_;
91             // - Graph for sway translational velocity (y-translation)
92             graph sway_;
94             // - Graph for heave translational motion (z-translation)
95             graph heave_;
98         // Prescribed rotation members
100             // - Graph for roll rotational velocity (x-rotation)
101             graph roll_;
103             // - Graph for pitch rotational velocity (y-rotation)
104             graph pitch_;
106             // - Graph for yaw rotational velocity (z-rotation)
107             graph yaw_;
109             //- Is the rotational velocity given in degrees/sec
110             Switch inDegrees_;
113         //- Member functions
115             //- Return translational velocity vector
116             vector translationalVelocity() const;
118             // -Return rotational velocity vector
119             vector rotationalVelocity() const;
121             //- Calculate transformation septernion
122             septernion calcTransformation() const;
125 public:
127     //- Runtime type information
128     TypeName("graphVelocity");
131     // Constructors
133         //- Construct from components
134         graphVelocity
135         (
136             const dictionary& SBMFCoeffs,
137             const Time& runTime
138         );
141     //- Destructor
142     virtual ~graphVelocity()
143     {}
146     // Member Functions
148         //- Return the solid-body motion transformation septernion
149         virtual septernion transformation() const;
151             //- Return the solid-body motion velocity
152         virtual septernion velocity() const;
154         //- Update properties from given dictionary
155         virtual bool read(const dictionary& SBMFCoeffs);
159 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
161 } // End namespace solidBodyMotionFunctions
162 } // End namespace Foam
164 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
166 #endif
168 // ************************************************************************* //