Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / lagrangian / intermediate / submodels / Kinematic / ParticleForces / NonInertialFrame / NonInertialFrameForce.H
blobf5c1a98de94821005c3ccf3e51fa57ca6f0a8d32
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011-2011 OpenCFD Ltd.
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
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
19     for more details.
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/>.
24 Class
25     Foam::NonInertialFrameForce
27 Description
28     Calculates particle non-inertial reference frame force.  Variable names as
29     from Landau and Lifshitz, Mechanics, 3rd Ed, p126-129.
31 SourceFiles
32     NonInertialFrameForce.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef NonInertialFrameForce_H
37 #define NonInertialFrameForce_H
39 #include "ParticleForce.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 class fvMesh;
48 /*---------------------------------------------------------------------------*\
49                   Class NonInertialFrameForce Declaration
50 \*---------------------------------------------------------------------------*/
52 template<class CloudType>
53 class NonInertialFrameForce
55     public ParticleForce<CloudType>
57     // Private data
59         //- Name of the linear acceleration field
60         word WName_;
62         //- The linear acceleration of the reference frame
63         vector W_;
65         //- Name of the angular velocity field
66         word omegaName_;
68         //- The angular velocity of the reference frame
69         vector omega_;
71         //- Name of the angular acceleration field
72         word omegaDotName_;
74         //- The angular acceleration of the reference frame
75         vector omegaDot_;
77         //- Name of the centre of rotation field
78         word centreOfRotationName_;
80         //- The centre of rotation of the reference frame
81         vector centreOfRotation_;
84 public:
86     //- Runtime type information
87     TypeName("nonInertialFrame");
90     // Constructors
92         //- Construct from mesh
93         NonInertialFrameForce
94         (
95             CloudType& owner,
96             const fvMesh& mesh,
97             const dictionary& dict
98         );
100         //- Construct copy
101         NonInertialFrameForce(const NonInertialFrameForce& niff);
103         //- Construct and return a clone
104         virtual autoPtr<ParticleForce<CloudType> > clone() const
105         {
106             return autoPtr<ParticleForce<CloudType> >
107             (
108                 new ParticleForce<CloudType>(*this)
109             );
110         }
113     //- Destructor
114     virtual ~NonInertialFrameForce();
117     // Member Functions
119         // Access
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;
134         // Evaluation
136             //- Cache fields
137             virtual void cacheFields(const bool store);
139             //- Calculate the non-coupled force
140             virtual forceSuSp calcNonCoupled
141             (
142                 const typename CloudType::parcelType& p,
143                 const scalar dt,
144                 const scalar mass,
145                 const scalar Re,
146                 const scalar muc
147             ) const;
151 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
153 } // End namespace Foam
155 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
157 #include "NonInertialFrameForceI.H"
159 #ifdef NoRepository
160     #include "NonInertialFrameForce.C"
161 #endif
163 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
165 #endif
167 // ************************************************************************* //