fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / engine / engineTopoChangerMesh / pistonLayer / pistonLayer.H
blobc4a2bd0eb474f3b0dd3500ae0c74b12a6ae24881
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2005-2010 Tommaso Lucchini
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 Class
27 Description
28     Engine mesh class with dynamic layering on the piston patch.
30 Author
31     Tommaso Lucchini, Politecnico di Milano.
33 SourceFiles
34     addpistonLayerModifiers.C
35     pistonLayer.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef pistonLayer_H
40 #define pistonLayer_H
42 #include "engineTopoChangerMesh.H"
43 #include "enginePiston.H"
44 #include "motionSolver.H"
45 #include "polyPatchID.H"
46 #include "polyMesh.H"
47 #include "volPointInterpolation.H"
49 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
51 namespace Foam
54 // Class forward declarations
56 /*---------------------------------------------------------------------------*\
57                            Class pistonLayer Declaration
58 \*---------------------------------------------------------------------------*/
60 class pistonLayer
62     public engineTopoChangerMesh
64     // Private data
66         //- Piston patch
67         enginePiston piston_;
68         
69         //- Layering-to-deformation switch in crank-angle degrees
70         scalar deformSwitch_;
71         
72         //- name of the head pointSet
73         word headPointsSetName_;
74         
75         //- Piston Position
76         scalar pistonPosition_;
78         //- Virtual piston position (pistonPosition + offSet)
79         scalar virtualPistonPosition_;
81         //- deckHeight
82         scalar deckHeight_;
83                
84         //- deckHeight
85         Switch scalePoints_;
87         //- deckHeight
88         Switch movePointsBelowPiston_;
89         
90     // Private Member Functions
92         //- Disallow default bitwise copy construct
93         pistonLayer(const pistonLayer&);
95         //- Disallow default bitwise assignment
96         void operator=(const pistonLayer&);
98         //- Make layering modifiers live
99         void makeLayersLive();
100         
101         //- Check if all patches exist, then calculate virtualPistonPosition, 
102         //- pistonPosition and deckHeight for the first time
103         void checkAndCalculate();
104         
105         //- Calculate the virtualPistonPosition, 
106         void setVirtualPistonPosition();
108         //- Add valve and piston zones and modifiers
109         void addZonesAndModifiers();
111 public:
113     //- Runtime type information
114     TypeName("pistonLayer");
117     // Constructors
119         //- Construct from database
120         explicit pistonLayer(const IOobject& io);
123     // Destructor 
125         virtual ~pistonLayer();
127     // Member Functions
129         
130         const scalar& pistonPosition() const
131         {
132             return pistonPosition_;
133         }
135         scalar& pistonPosition() 
136         {
137             return pistonPosition_;
138         }
139         
140         const scalar& virtualPistonPosition() const
141         {
142             return virtualPistonPosition_;
143         }
145         scalar& virtualPistonPosition() 
146         {
147             return virtualPistonPosition_;
148         }
149         
150         const scalar& deckHeight() const
151         {
152             return deckHeight_;
153         }
155         scalar& deckHeight() 
156         {
157             return deckHeight_;
158         }
159         
161         const enginePiston& piston() const
162         {
163             return piston_;
164         }
166         //- Return true for mesh deformation mode
167         bool deformation() const
168         {
169             return
170                 engTime().thetaRevolution() > -deformSwitch_
171              && engTime().thetaRevolution() < deformSwitch_;
172         }
175         //- Move and morph
176         virtual bool update();
177         
178         //- Set boundary velocities
179         void setBoundaryVelocity(volVectorField& U);
184 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
186 } // End namespace Foam
188 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
190 #endif
192 // ************************************************************************* //