BUGFIX: Illegal use of uninitialised value (backport)
[foam-extend-3.2.git] / src / dynamicMesh / meshMotion / solidBodyMotion / SDA / SDA.H
blob8f7b35ea9bc015ba971d689f9eace94e7edc5576
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::solidBodyMotionFunctions::SDA
28 Description
29     Ship design analysis (SDA) 3DoF motion function.
31     Comprising sinusoidal roll (rotation about x), heave (z-translation)
32     and sway (y-translation) motions with changing amplitude and phase.
34 See Also
35     SKA (Sea Keeping Analysis) for 6DoF motion.
37 SourceFiles
38     SDA.C
40 \*---------------------------------------------------------------------------*/
42 #ifndef SDA_H
43 #define SDA_H
45 #include "solidBodyMotionFunction.H"
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
49 namespace Foam
51 namespace solidBodyMotionFunctions
54 /*---------------------------------------------------------------------------*\
55                           Class SDA Declaration
56 \*---------------------------------------------------------------------------*/
58 class SDA
60     public solidBodyMotionFunction
62     // Private data
64         //- Center of gravity
65         vector CofG_;
67         //- Model scale ratio
68         scalar lamda_;
70         //- Max roll amplitude [rad]
71         scalar rollAmax_;
73         //- Min roll amplitude [rad]
74         scalar rollAmin_;
76         //- Heave amplitude [m]
77         scalar heaveA_;
79         //- Sway amplitude [m]
80         scalar swayA_;
82         //- Damping Coefficient [-]
83         scalar Q_;
85         //- Time Period for liquid [sec]
86         scalar Tp_;
88         //- Natural Period of Ship [sec]
89         scalar Tpn_;
91         //- Reference time step [sec]
92         scalar dTi_;
94         //- Incr. in Tp/unit 'dTi'[-]
95         scalar dTp_;
98     // Private Member Functions
100         //- Disallow copy construct
101         SDA(const SDA&);
103         //- Disallow default bitwise assignment
104         void operator=(const SDA&);
107         //- Calculate transform given time
108         septernion calcTransformation(const scalar t) const;
111 public:
113     //- Runtime type information
114     TypeName("SDA");
117     // Constructors
119         //- Construct from components
120         SDA
121         (
122             const dictionary& SBMFCoeffs,
123             const Time& runTime
124         );
127     // Destructor
129         virtual ~SDA();
132     // Member Functions
134         //- Return the solid-body motion transformation septernion
135         virtual septernion transformation() const;
137         //- Return the solid-body motion velocity septernion
138         virtual septernion velocity() const;
140         //- Update properties from given dictionary
141         virtual bool read(const dictionary& SBMFCoeffs);
145 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
147 } // End namespace solidBodyMotionFunctions
148 } // End namespace Foam
150 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
152 #endif
154 // ************************************************************************* //