Forward compatibility: flex
[foam-extend-3.2.git] / src / dynamicMesh / topoChangerFvMesh / multiMixerFvMesh / mixerRotor.H
blobe2d21aa41bfdbeba35550eeadc879a6ece4b2279
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     mixerRotor
27 Description
28     Single rotating region
30 Author
31     Hrvoje Jasak, Wikki Ltd.  All rights reserved.
33 SourceFiles
34     mixerRotor.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef mixerRotor_H
39 #define mixerRotor_H
41 #include "cylindricalCS.H"
42 #include "Switch.H"
43 #include "polyMesh.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 // Forward declaration of classes
51 class regionSplit;
52 class polyTopoChanger;
54 /*---------------------------------------------------------------------------*\
55                         Class mixerRotor Declaration
56 \*---------------------------------------------------------------------------*/
58 class mixerRotor
60     // Private data
62         //- Name
63         const word name_;
65         //- Reference to mesh
66         const polyMesh& mesh_;
68         //- Coordinate system
69         cylindricalCS cs_;
71         // - Rotational speed in rotations per minute (rpm)
72         const scalar rpm_;
74         //- Name of moving slider patch
75         const word movingSliderName_;
77         //- Name of static slider patch
78         const word staticSliderName_;
80         //- Rotating region marker point
81         point rotatingRegionMarker_;
83         //- Invert motion mask: marked region is stationary and the rest
84         //  of the domain is moving
85         const Switch invertMotionMask_;
87         //- Use topological sliding.  Other option is GGI
88         const Switch useTopoSliding_;
90         //- Attach-detach action
91         Switch attachDetach_;
93         //- Markup field for points.  Moving points marked with 1
94         mutable scalarField* movingPointsMaskPtr_;
97     // Private Member Functions
99         //- Disallow default bitwise copy construct
100         mixerRotor(const mixerRotor&);
102         //- Disallow default bitwise assignment
103         void operator=(const mixerRotor&);
106         //- Return coordinate system
107         const cylindricalCS& cs() const
108         {
109             return cs_;
110         }
112         //- Calculate moving mask
113         void calcMovingMask() const;
115         //- Return moving points mask
116         const scalarField& movingPointsMask() const;
118         //- Clear moving points mask
119         void clearPointMask();
122 public:
124     // Constructors
126         //- Construct from  dictionary
127         mixerRotor
128         (
129             const word& name,
130             const polyMesh& mesh,
131             const dictionary& dict
132         );
135     // Destructor
137         virtual ~mixerRotor();
140     // Member Functions
142         //- Return true if topological sliding is used
143         bool useTopoSliding() const
144         {
145             return useTopoSliding_;
146         }
148         //- Return true if attach-detach action is used
149         bool attachDetach() const
150         {
151             return attachDetach_;
152         }
154         //- Return accumulative point motion
155         virtual tmp<vectorField> pointMotion() const;
157         //- Add mixer rotor zones
158         void addZones
159         (
160             DynamicList<pointZone*>& pz,
161             DynamicList<faceZone*>& fz,
162             DynamicList<cellZone*>& cz,
163             const regionSplit& rs
164         );
166         //- Add mixer rotor  modifiers
167         void addModifiers
168         (
169             polyTopoChanger& tc,
170             label& nextI
171         );
173         //- Update topology
174         void updateTopology();
178 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
180 } // End namespace Foam
182 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
184 #endif
186 // ************************************************************************* //