ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / postProcessing / functionObjects / field / surfaceInterpolateFields / surfaceInterpolateFields.H
bloba49a86e8bcd19b76942006cf52af79fe65a29d05
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::surfaceInterpolateFields
27 Description
28     Linear interpolates volFields to surfaceFields
30     - at write it writes the fields
31     - it executes every time step
33     so it can either be used to calculate and write the interpolate or
34     (since the interpolates are registered) use some other functionObject
35     to work on them.
37     sampleSomeFields
38     {
39         type            surfaceInterpolateFields;
40         ..
41         enabled         true;
42         outputControl   outputTime;
43         ..
44         // Name of volField and corresponding surfaceField
45         fields          ((p pInterpolate)(U UInterpolate));
46     }
49 SourceFiles
50     surfaceInterpolateFields.C
51     IOsurfaceInterpolateFields.H
53 \*---------------------------------------------------------------------------*/
55 #ifndef surfaceInterpolateFields_H
56 #define surfaceInterpolateFields_H
58 #include "OFstream.H"
59 #include "surfaceFields.H"
60 #include "Tuple2.H"
62 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
64 namespace Foam
67 // Forward declaration of classes
68 class objectRegistry;
69 class dictionary;
70 class mapPolyMesh;
72 /*---------------------------------------------------------------------------*\
73                          Class surfaceInterpolateFields Declaration
74 \*---------------------------------------------------------------------------*/
76 class surfaceInterpolateFields
78 protected:
80     // Protected data
82         //- Name of this set of surfaceInterpolateFields object
83         word name_;
85         const objectRegistry& obr_;
87         //- on/off switch
88         bool active_;
90         //- Fields to process
91         //wordList fieldSet_;
92         List<Tuple2<word, word> > fieldSet_;
94         //- Locally constructed fields
95         PtrList<surfaceScalarField> ssf_;
96         PtrList<surfaceVectorField> svf_;
97         PtrList<surfaceSphericalTensorField> sSpheretf_;
98         PtrList<surfaceSymmTensorField> sSymmtf_;
99         PtrList<surfaceTensorField> stf_;
102     // Protected Member Functions
104         //- Disallow default bitwise copy construct
105         surfaceInterpolateFields(const surfaceInterpolateFields&);
107         //- Disallow default bitwise assignment
108         void operator=(const surfaceInterpolateFields&);
110         template<class Type>
111         void interpolateFields
112         (
113             PtrList<GeometricField<Type, fvsPatchField, surfaceMesh> >&
114         ) const;
117 public:
119     //- Runtime type information
120     TypeName("surfaceInterpolateFields");
123     // Constructors
125         //- Construct for given objectRegistry and dictionary.
126         //  Allow the possibility to load fields from files
127         surfaceInterpolateFields
128         (
129             const word& name,
130             const objectRegistry&,
131             const dictionary&,
132             const bool loadFromFiles = false
133         );
136     //- Destructor
137     virtual ~surfaceInterpolateFields();
140     // Member Functions
142         //- Return name of the surfaceInterpolateFields object
143         virtual const word& name() const
144         {
145             return name_;
146         }
148         //- Read the field min/max data
149         virtual void read(const dictionary&);
151         //- Execute, currently does nothing
152         virtual void execute();
154         //- Execute at the final time-loop, currently does nothing
155         virtual void end();
157         //- Write
158         virtual void write();
160         //- Update for changes of mesh
161         virtual void updateMesh(const mapPolyMesh&)
162         {}
164         //- Update for changes of mesh
165         virtual void movePoints(const pointField&)
166         {}
170 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
172 } // End namespace Foam
174 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
176 #ifdef NoRepository
177 #   include "surfaceInterpolateFieldsTemplates.C"
178 #endif
180 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
182 #endif
184 // ************************************************************************* //