linearSpring.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-2013 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::sixDoFRigidBodyMotionRestraints::linearSpring
28 
29 Description
30  sixDoFRigidBodyMotionRestraints model. Linear spring.
31 
32 SourceFiles
33  linearSpring.C
34 
35 \*---------------------------------------------------------------------------*/
36 
37 #ifndef linearSpring_H
38 #define linearSpring_H
39 
41 #include "point.H"
42 
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 
45 namespace Foam
46 {
47 
48 namespace sixDoFRigidBodyMotionRestraints
49 {
50 
51 /*---------------------------------------------------------------------------*\
52  Class linearSpring Declaration
53 \*---------------------------------------------------------------------------*/
54 
55 class linearSpring
56 :
58 {
59  // Private data
60 
61  //- Anchor point, where the spring is attached to an immovable
62  // object
63  point anchor_;
64 
65  //- Reference point of attachment to the solid body
66  point refAttachmentPt_;
67 
68  //- Spring stiffness coefficient (N/m)
69  scalar stiffness_;
70 
71  //- Damping coefficient (Ns/m)
72  scalar damping_;
73 
74  //- Rest length - length of spring when no forces are applied to it
75  scalar restLength_;
76 
77 
78 public:
79 
80  //- Runtime type information
81  TypeName("linearSpring");
82 
83 
84  // Constructors
85 
86  //- Construct from components
88  (
89  const word& name,
90  const dictionary& sDoFRBMRDict
91  );
92 
93  //- Construct and return a clone
95  {
97  (
98  new linearSpring(*this)
99  );
100  }
101 
102 
103  //- Destructor
104  virtual ~linearSpring();
105 
106 
107  // Member Functions
108 
109  //- Calculate the restraint position, force and moment.
110  // Global reference frame vectors.
111  virtual void restrain
112  (
113  const sixDoFRigidBodyMotion& motion,
114  vector& restraintPosition,
115  vector& restraintForce,
116  vector& restraintMoment
117  ) const;
118 
119  //- Update properties from given dictionary
120  virtual bool read(const dictionary& sDoFRBMRCoeff);
121 
122  //- Write
123  virtual void write(Ostream&) const;
124 };
125 
126 
127 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
128 
129 } // End namespace solidBodyMotionFunctions
130 } // End namespace Foam
131 
132 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
133 
134 #endif
135 
136 // ************************************************************************* //
Foam::sixDoFRigidBodyMotionRestraint::name
const word & name() const
Return the name.
Definition: sixDoFRigidBodyMotionRestraint.H:128
Foam::sixDoFRigidBodyMotionRestraints::linearSpring::clone
virtual autoPtr< sixDoFRigidBodyMotionRestraint > clone() const
Construct and return a clone.
Definition: linearSpring.H:93
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:65
Foam::sixDoFRigidBodyMotionRestraints::linearSpring::write
virtual void write(Ostream &) const
Write.
Definition: linearSpring.C:126
point.H
Foam::sixDoFRigidBodyMotionRestraints::linearSpring::linearSpring
linearSpring(const word &name, const dictionary &sDoFRBMRDict)
Construct from components.
Definition: linearSpring.C:53
Foam::sixDoFRigidBodyMotionRestraints::linearSpring::TypeName
TypeName("linearSpring")
Runtime type information.
Foam::sixDoFRigidBodyMotionRestraint
Base class for defining restraints for sixDoF motions.
Definition: sixDoFRigidBodyMotionRestraint.H:66
Foam::sixDoFRigidBodyMotionRestraints::linearSpring::read
virtual bool read(const dictionary &sDoFRBMRCoeff)
Update properties from given dictionary.
Definition: linearSpring.C:109
Foam::sixDoFRigidBodyMotionRestraints::linearSpring
sixDoFRigidBodyMotionRestraints model. Linear spring.
Definition: linearSpring.H:54
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::sixDoFRigidBodyMotionRestraints::linearSpring::restrain
virtual void restrain(const sixDoFRigidBodyMotion &motion, vector &restraintPosition, vector &restraintForce, vector &restraintMoment) const
Calculate the restraint position, force and moment.
Definition: linearSpring.C:78
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::sixDoFRigidBodyMotion
Six degree of freedom motion for a rigid body.
Definition: sixDoFRigidBodyMotion.H:69
Foam::Vector< scalar >
Foam::sixDoFRigidBodyMotionRestraints::linearSpring::~linearSpring
virtual ~linearSpring()
Destructor.
Definition: linearSpring.C:71
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:56
sixDoFRigidBodyMotionRestraint.H