ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / dynamicMesh / motionSolver / motionSolver.H
blob97e6d246826ba3695de867ae2efbe6daaf83c373
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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::motionSolver
27 Description
28     Virtual base class for mesh motion solver.
30 SourceFiles
31     motionSolver.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef motionSolver_H
36 #define motionSolver_H
38 #include "IOdictionary.H"
39 #include "pointField.H"
40 #include "twoDPointCorrector.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 // Forward class declarations
48 class polyMesh;
49 class mapPolyMesh;
51 /*---------------------------------------------------------------------------*\
52                            Class motionSolver Declaration
53 \*---------------------------------------------------------------------------*/
55 class motionSolver
57     public IOdictionary
59 private:
61     // Private data
63         //- Reference to mesh
64         const polyMesh& mesh_;
66         //- 2-D motion corrector pointer
67         twoDPointCorrector twoDPointCorrector_;
70 public:
72     //- Runtime type information
73     TypeName("motionSolver");
76     // Declare run-time constructor selection tables
78         declareRunTimeSelectionTable
79         (
80             autoPtr,
81             motionSolver,
82             dictionary,
83             (const polyMesh& mesh, Istream& msData),
84             (mesh, msData)
85         );
88     // Selectors
90         //- Select constructed from polyMesh
91         static autoPtr<motionSolver> New(const polyMesh& mesh);
94     // Constructors
96         //- Construct from polyMesh
97         motionSolver(const polyMesh& mesh);
100     //- Destructor
101     virtual ~motionSolver();
104     // Member Functions
106         //- Return reference to mesh
107         const polyMesh& mesh() const
108         {
109             return mesh_;
110         }
112         //- Provide new points for motion.  Solves for motion
113         virtual tmp<pointField> newPoints();
115         //- Provide current points for motion.  Uses current motion field
116         virtual tmp<pointField> curPoints() const = 0;
118         virtual void twoDCorrectPoints(pointField&) const;
120         //- Solve for motion
121         virtual void solve() = 0;
123         //- Update topology
124         virtual void updateMesh(const mapPolyMesh&) = 0;
128 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
130 } // End namespace Foam
132 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
134 #endif
136 // ************************************************************************* //