Fix tutorials: typo in tutorials/viscoelastic/viscoelasticFluidFoam/S-MDCPP/constant...
[OpenFOAM-1.6-ext.git] / src / engine / engineTopoChangerMesh / accordionEngineMesh / accordionEngineMesh.H
blobf98c9109245048f100ff8d2e76405f3843f5064e
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 CLASS
26     accordionEngineMesh
28 DESCRIPTION
29     Engine mesh class for canted valves engine. Layers are added/removed on the
30     piston, while mesh is deformed close to the valves. Attach/detach boundary
31     is used. There are no sliding interfaces.
34 // ------------------------------------------------------------------------- //
36 #ifndef accordionEngineMesh_H
37 #define accordionEngineMesh_H
39 #include "engineTopoChangerMesh.H"
40 #include "enginePiston.H"
41 #include "motionSolver.H"
42 #include "polyPatchID.H"
43 #include "thoboisValveBank.H"
44 #include "twoDPointCorrector.H"
46 #include "faceSet.H"
47 #include "pointSet.H"
48 #include "cellSet.H"
50 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
52 namespace Foam
55 // Class forward declarations
57 /*---------------------------------------------------------------------------*\
58                            Class lateralValves Declaration
59 \*---------------------------------------------------------------------------*/
60 class twoDPointCorrector;
62 class accordionEngineMesh
64     public engineTopoChangerMesh
66     // Private data
68         //- Piston patch
69         enginePiston piston_;
70         
71         //- Lateral valves
72         thoboisValveBank valves_;
73                          
74         //- Layering-to-deformation switch in crank-angle degrees
75         scalar deformSwitch_;
76         
77         //- Tolerance used when the piston faceZone is created
78         scalar delta_;
80         //- Distance from the piston patch
81         scalar offSet_;
82         
83         //- Piston Position
84         scalar pistonPosition_;
86         //- Virtual piston position (pistonPosition + offSet)
87         scalar virtualPistonPosition_;
89         //- deckHeight
90         scalar deckHeight_;
91                                
92         //- Motion solver
93         autoPtr<motionSolver> msPtr_;
95         //- Cylinder head name
96         word cylinderHeadName_;               
97         
98         //- Cylinder head name
99         word linerName_;               
100         
101         //- PistonFaceSet
102         word pistonAuxPoints_;
103         
104         Switch moveDetach_;
105         
106     // Private Member Functions
108         //- Disallow default bitwise copy construct
109         accordionEngineMesh(const accordionEngineMesh&);
111         //- Disallow default bitwise assignment
112         void operator=(const accordionEngineMesh&);
114         //- Make layering modifiers live
115         void makeLayersLive();
117         //- Make attach-detach live
118         void makeDetachLive();
119        
120         //- Prepare valve attach/detach
121         void valveDetach();
123         //- Prepare valve attach/detach
124         void valveAttach();
126         //- Prepare valve attach/detach
127         void prepareValveDetach();
129         //- Check if all patches exist, then calculate virtualPistonPosition, 
130         //- pistonPosition and deckHeight for the first time
131         void checkAndCalculate();
132         
133         //- Calculate the virtualPistonPosition, 
134         void setVirtualPositions();
135                 
136         bool realDeformation() const;
137                                                 
138 public:
140     //- Runtime type information
141     TypeName("accordionEngineMesh");
144     // Constructors
146         //- Construct from database
147         explicit accordionEngineMesh(const IOobject& io);
150     // Destructor - default
153     // Member Functions
155         inline const enginePiston& piston() const;
156         inline const thoboisValveBank& valves() const;
157         inline const scalar& deformSwitch() const;
158         inline const scalar& delta() const;
159         inline const scalar& offSet() const;
160         inline const scalar& pistonPosition() const;
161         inline scalar& pistonPosition();
162         inline const scalar& virtualPistonPosition() const;
163         inline scalar& virtualPistonPosition();
164         inline const scalar& deckHeight() const;
165         inline scalar& deckHeight();
168         //- Return true for mesh deformation mode
169         bool deformation() const
170         {
171             return
172                 engTime().thetaRevolution() > -deformSwitch_
173              && engTime().thetaRevolution() < deformSwitch_;
174         }
176         //- Return number of valves
177         label nValves() const
178         {
179             return valves_.size();
180         }
182         //- Add valve and piston zones and modifiers
183         void addZonesAndModifiers();
185         //- Move and morph
186         virtual bool update();
188         //- Set boundary velocities
189         void setBoundaryVelocity(volVectorField& U);
191         //- Generate the mesh from a series of square blocks
192         void generateMesh(){};
196 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
198 } // End namespace Foam
200 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
201 #include "accordionEngineMeshI.H"
203 #endif
205 // ************************************************************************* //