1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
7 -------------------------------------------------------------------------------
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
13 the Free Software Foundation, either version 3 of the License, or
14 (at your 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
21 You should have received a copy of the GNU General Public License
22 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 Foam::NonInertialFrameForce
28 Calculates particle non-inertial reference frame force. Variable names as
29 from Landau and Lifshitz, Mechanics, 3rd Ed, p126-129.
32 NonInertialFrameForce.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef NonInertialFrameForce_H
37 #define NonInertialFrameForce_H
39 #include "ParticleForce.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 /*---------------------------------------------------------------------------*\
49 Class NonInertialFrameForce Declaration
50 \*---------------------------------------------------------------------------*/
52 template<class CloudType>
53 class NonInertialFrameForce
55 public ParticleForce<CloudType>
59 //- Name of the linear acceleration field
62 //- The linear acceleration of the reference frame
65 //- Name of the angular velocity field
68 //- The angular velocity of the reference frame
71 //- Name of the angular acceleration field
74 //- The angular acceleration of the reference frame
77 //- Name of the centre of rotation field
78 word centreOfRotationName_;
80 //- The centre of rotation of the reference frame
81 vector centreOfRotation_;
86 //- Runtime type information
87 TypeName("nonInertialFrame");
92 //- Construct from mesh
97 const dictionary& dict
101 NonInertialFrameForce(const NonInertialFrameForce& niff);
103 //- Construct and return a clone
104 virtual autoPtr<ParticleForce<CloudType> > clone() const
106 return autoPtr<ParticleForce<CloudType> >
108 new ParticleForce<CloudType>(*this)
114 virtual ~NonInertialFrameForce();
121 //- Return the linear acceleration of the reference frame
122 inline const vector& W() const;
124 //- Return the angular velocity of the reference frame
125 inline const vector& omega() const;
127 //- Return the angular acceleration of the reference frame
128 inline const vector& omegaDot() const;
130 //- Return the centre of rotation of the reference frame
131 inline const vector& centreOfRotation() const;
137 virtual void cacheFields(const bool store);
139 //- Calculate the non-coupled force
140 virtual forceSuSp calcNonCoupled
142 const typename CloudType::parcelType& p,
151 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
153 } // End namespace Foam
155 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
157 #include "NonInertialFrameForceI.H"
160 #include "NonInertialFrameForce.C"
163 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
167 // ************************************************************************* //