fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / POD / PODODE / PODODE.H
blobdd72adf5f159ad0bee96a714f5c718c5b2c69d65
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     PODODE
28 Description
29     Virtual base class for ODEs derived by Proper Orthogonal Decomposition
31 Author
32     Hrvoje Jasak, Wikki Ltd.  All rights reserved.
34 SourceFiles
35     PODODE.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef PODODE_H
40 #define PODODE_H
42 #include "ODE.H"
43 #include "fvMesh.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51                            Class PODODE Declaration
52 \*---------------------------------------------------------------------------*/
54 class PODODE
56     public ODE
58     // Private data
60         //- Reference to mesh
61         const fvMesh& mesh_;
63         //- Reference to dictionary
64         const dictionary& dict_;
67     // Private Member Functions
69         //- Disallow default bitwise copy construct
70         PODODE(const PODODE&);
72         //- Disallow default bitwise assignment
73         void operator=(const PODODE&);
76 public:
78     //- Runtime type information
79     TypeName("PODODE");
82     // Declare run-time constructor selection table
84         declareRunTimeSelectionTable
85         (
86             autoPtr,
87             PODODE,
88             dictionary,
89             (
90                 const fvMesh& mesh,
91                 const dictionary& dict
92             ),
93             (mesh, dict)
94         );
97     // Selectors
99         //- Return a reference to the selected POD model
100         static autoPtr<PODODE> New
101         (
102             const fvMesh& mesh,
103             const dictionary& dict
104         );
107     // Constructors
109         //- Construct from dictionary
110         PODODE
111         (
112             const fvMesh& mesh,
113             const dictionary& dict
114         )
115         :
116             mesh_(mesh),
117             dict_(dict)
118         {}
121     // Destructor
123         virtual ~PODODE()
124         {}
127     // Member Functions
129         //- Return mesh
130         const fvMesh& mesh() const
131         {
132             return mesh_;
133         }
135         //- Return dictionary
136         const dictionary& dict() const
137         {
138             return dict_;
139         }
142         // Solution variables
144             //- Return reference to interpolation coefficients
145             virtual scalarField& coeffs() = 0;
147             //- Return reference to interpolation coefficients
148             virtual const scalarField& coeffs() const = 0;
150             //- Clear ortho-normal base
151             virtual void clearBase() const = 0;
153             //- Update reconstructed fields
154             virtual void updateFields() const = 0;
156             //- Clear reconstructed field
157             virtual void clearFields() const = 0;
160         // Update
162             //- Update ODE after the solution, advancing by delta
163             virtual void update(const scalar delta)
164             {}
167         //- Write reconstructed fields
168         virtual void write() const = 0;
172 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
174 } // End namespace Foam
176 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
178 #endif
180 // ************************************************************************* //