sixDoFRigidBodyMotionLineConstraint.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-2014 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 Class
27  Foam::sixDoFRigidBodyMotionConstraints::line
28 
29 Description
30  Translation constraint on the centre of rotation:
31  may only move along a line.
32 
33  If 'centreOfRotation' is not provided in the dictionary the centre of mass
34  is used.
35 
36 SourceFiles
37  sixDoFRigidBodyMotionLineConstraint.C
38 
39 \*---------------------------------------------------------------------------*/
40 
41 #ifndef sixDoFRigidBodyMotionLineConstraint_H
42 #define sixDoFRigidBodyMotionLineConstraint_H
43 
45 
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 
48 namespace Foam
49 {
50 
51 namespace sixDoFRigidBodyMotionConstraints
52 {
53 
54 /*---------------------------------------------------------------------------*\
55  Class line Declaration
56 \*---------------------------------------------------------------------------*/
57 
58 class line
59 :
61 {
62  // Private data
63 
64  //- Centre of rotation on line
65  point centreOfRotation_;
66 
67  //- Direction of the constraining line
68  vector direction_;
69 
70 
71 public:
72 
73  //- Runtime type information
74  TypeName("line");
75 
76 
77  // Constructors
78 
79  //- Construct from components
80  line
81  (
82  const word& name,
83  const dictionary& sDoFRBMCDict,
85  );
86 
87  //- Construct and return a clone
89  {
91  (
92  new line(*this)
93  );
94  }
95 
96 
97  //- Destructor
98  virtual ~line();
99 
100 
101  // Member Functions
102 
103  //- Set the centre of rotation to the projection of the
104  // centre of mass onto the line
105  virtual void setCentreOfRotation(point&) const;
106 
107  //- Apply and accumulate translational constraints
108  virtual void constrainTranslation(pointConstraint&) const;
109 
110  //- Apply and accumulate rotational constraints
111  virtual void constrainRotation(pointConstraint&) const;
112 
113  //- Update properties from given dictionary
114  virtual bool read(const dictionary& sDoFRBMCCoeff);
115 
116  //- Write
117  virtual void write(Ostream&) const;
118 };
119 
120 
121 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
122 
123 } // End namespace solidBodyMotionFunctions
124 } // End namespace Foam
125 
126 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
127 
128 #endif
129 
130 // ************************************************************************* //
Six degree of freedom motion for a rigid body.
const sixDoFRigidBodyMotion & motion() const noexcept
Return const access to motion.
const word & name() const
Return the name.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
virtual bool read(const dictionary &sDoFRBMCCoeff)
Update properties from given dictionary.
Base class for defining constraints for sixDoF motions.
virtual autoPtr< sixDoFRigidBodyMotionConstraint > clone() const
Construct and return a clone.
A class for handling words, derived from Foam::string.
Definition: word.H:63
virtual void constrainTranslation(pointConstraint &) const
Apply and accumulate translational constraints.
Accumulates point constraints through successive applications of the applyConstraint function...
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Definition: Ostream.H:56
virtual void setCentreOfRotation(point &) const
Set the centre of rotation to the projection of the.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
virtual void constrainRotation(pointConstraint &) const
Apply and accumulate rotational constraints.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
Definition: HashPtrTable.H:48
Translation constraint on the centre of rotation: fixed in space.
Translation constraint on the centre of rotation: may only move along a line.
line(const word &name, const dictionary &sDoFRBMCDict, const sixDoFRigidBodyMotion &motion)
Construct from components.
TypeName("line")
Runtime type information.
Namespace for OpenFOAM.