Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / topoChangerFvMesh / movingConeTopoFvMesh / movingConeTopoFvMesh.H
blobef9fc18f3246921a7ebc56d975f3d2ba1ffb83a2
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2010 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::movingConeTopoFvMesh
27 Description
28     Sample topoChangerFvMesh that moves an object in x direction
29     and introduces/removes layers.
31 SourceFiles
32     movingConeTopoFvMesh.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef movingConeTopoFvMesh_H
37 #define movingConeTopoFvMesh_H
39 #include "topoChangerFvMesh.H"
40 #include "motionSolver.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 // Forward declaration of classes
49 /*---------------------------------------------------------------------------*\
50                       Class movingConeTopoFvMesh Declaration
51 \*---------------------------------------------------------------------------*/
53 class movingConeTopoFvMesh
55     public topoChangerFvMesh
57     // Private data
59         //- Motion dictionary
60         dictionary motionDict_;
62         //- Motion velocity amplitude
63         vector motionVelAmplitude_;
65         //- Motion velocity period
66         scalar motionVelPeriod_;
68         //- Motion velocity period
69         vector curMotionVel_;
71         //- Left edge
72         scalar leftEdge_;
74         //- Current left obstacle position
75         scalar curLeft_;
77         //- Current right obstacle position
78         scalar curRight_;
80         //- Vertex motion mask
81         scalarField motionMask_;
84     // Private Member Functions
86         //- Disallow default bitwise copy construct
87         movingConeTopoFvMesh(const movingConeTopoFvMesh&);
89         //- Disallow default bitwise assignment
90         void operator=(const movingConeTopoFvMesh&);
93         //- Add mixer zones and modifiers
94         void addZonesAndModifiers();
96         //- Markup motion vertices
97         tmp<scalarField> vertexMarkup
98         (
99             const pointField& p,
100             const scalar curLeft,
101             const scalar curRight
102         ) const;
105 public:
107     //- Runtime type information
108     TypeName("movingConeTopoFvMesh");
111     // Constructors
113         //- Construct from database
114         explicit movingConeTopoFvMesh(const IOobject& io);
117     //- Destructor
118     virtual ~movingConeTopoFvMesh();
121     // Member Functions
123         //- Update the mesh for both mesh motion and topology change
124         virtual bool update();
128 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
130 } // End namespace Foam
132 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
134 #endif
136 // ************************************************************************* //