fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / engine / engineTopoChangerMesh / layerAR / layerAR.H
blob04d834028a3ec1d6d2f160636b9a4f5f07fbf525
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 \*---------------------------------------------------------------------------*/
27 #ifndef layerAR_H
28 #define layerAR_H
30 #include "engineTopoChangerMesh.H"
31 #include "simpleEnginePiston.H"
32 #include "motionSolver.H"
33 #include "polyPatchID.H"
34 #include "polyMesh.H"
35 #include "volPointInterpolation.H"
37 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
39 namespace Foam
42 // Class forward declarations
44 /*---------------------------------------------------------------------------*\
45                            Class layerAR Declaration
46 \*---------------------------------------------------------------------------*/
48 class layerAR
50     public engineTopoChangerMesh
52     // Private data
54         //- Piston patch
55         simpleEnginePiston piston_;
56         
57         //- Layering-to-deformation switch in crank-angle degrees
58         scalar deformSwitch_;
59         
60         //- Tolerance used when the piston faceZone is created
61         scalar delta_;
63         //- Distance from the piston patch
64         scalar offSet_;
66         //- Piston Position
67         scalar pistonPosition_;
69         //- Virtual piston position (pistonPosition + offSet)
70         scalar virtualPistonPosition_;
72         //- deckHeight
73         scalar deckHeight_;
76     // Private Member Functions
78         //- Disallow default bitwise copy construct
79         layerAR(const layerAR&);
81         //- Disallow default bitwise assignment
82         void operator=(const layerAR&);
84         //- Make layering modifiers live
85         void makeLayersLive();
87         //- Check if all patches exist, then calculate virtualPistonPosition,
88         //- pistonPosition and deckHeight for the first time
89         void checkAndCalculate();
91         //- Calculate the virtualPistonPosition,
92         void setVirtualPistonPosition();
94         //- Add valve and piston zones and modifiers
95         void addZonesAndModifiers();
97 public:
99     //- Runtime type information
100     TypeName("layerAR");
103     // Constructors
105         //- Construct from database
106         explicit layerAR(const IOobject& io);
109     // Destructor
111         virtual ~layerAR();
114     // Member Functions
116         const scalar& delta() const
117         {
118             return delta_;
119         }
121         scalar& delta()
122         {
123             return delta_;
124         }
126         const scalar& offSet() const
127         {
128             return offSet_;
129         }
131         scalar& offSet()
132         {
133             return offSet_;
134         }
136         const scalar& pistonPosition() const
137         {
138             return pistonPosition_;
139         }
141         scalar& pistonPosition()
142         {
143             return pistonPosition_;
144         }
146         const scalar& virtualPistonPosition() const
147         {
148             return virtualPistonPosition_;
149         }
151         scalar& virtualPistonPosition()
152         {
153             return virtualPistonPosition_;
154         }
156         const scalar& deckHeight() const
157         {
158             return deckHeight_;
159         }
161         scalar& deckHeight()
162         {
163             return deckHeight_;
164         }
165         
167         const simpleEnginePiston& piston() const
168         {
169             return piston_;
170         }
172         //- Return true for mesh deformation mode
173         bool deformation() const
174         {
175             return
176                 engTime().thetaRevolution() > -deformSwitch_
177              && engTime().thetaRevolution() < deformSwitch_;
178         }
181         //- Move and morph
182         virtual bool update();
183         
184         //- Set boundary velocities
185         void setBoundaryVelocity(volVectorField& U);
190 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
192 } // End namespace Foam
194 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
196 #endif
198 // ************************************************************************* //