Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / postProcessing / functionObjects / field / fieldMinMax / fieldMinMax.H
blobcc7b29c8eef1c8b480310929c8f6ff08cfc8fd0c
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2008-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::fieldMinMax
27 Description
28     Calculates scalar minimim and maximum field values.
30     For variables with rank > 0, computes the magnitude of the min/max
31     values.
33     Data written to the file \<timeDir\>/fieldMinMax.dat
36 SourceFiles
37     fieldMinMax.C
38     IOfieldMinMax.H
40 \*---------------------------------------------------------------------------*/
42 #ifndef fieldMinMax_H
43 #define fieldMinMax_H
45 #include "primitiveFieldsFwd.H"
46 #include "volFieldsFwd.H"
47 #include "HashSet.H"
48 #include "OFstream.H"
49 #include "Switch.H"
50 #include "pointFieldFwd.H"
51 #include "NamedEnum.H"
53 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
55 namespace Foam
58 // Forward declaration of classes
59 class objectRegistry;
60 class dictionary;
61 class mapPolyMesh;
63 /*---------------------------------------------------------------------------*\
64                        Class fieldMinMax Declaration
65 \*---------------------------------------------------------------------------*/
67 class fieldMinMax
69 public:
71     enum modeType
72     {
73         mdMag,
74         mdCmpt
75     };
77 protected:
79     // Protected data
81         //- Mode type names
82         static const NamedEnum<modeType, 2> modeTypeNames_;
84         //- Name of this set of field min/max.
85         //  Also used as the name of the output directory.
86         word name_;
88         const objectRegistry& obr_;
90         //- on/off switch
91         bool active_;
93         //- Switch to enable/disable writing to file
94         Switch write_;
96         //- Switch to send output to Info as well
97         Switch log_;
99         //- Mode for min/max - only applicable for ranks > 0
100         modeType mode_;
102         //- Fields to assess min/max
103         wordList fieldSet_;
105         //- Min/max file ptr
106         autoPtr<OFstream> fieldMinMaxFilePtr_;
109     // Private Member Functions
111         //- If the output file has not been created create it
112         void makeFile();
114         //- Disallow default bitwise copy construct
115         fieldMinMax(const fieldMinMax&);
117         //- Disallow default bitwise assignment
118         void operator=(const fieldMinMax&);
120         //- Output file header information
121         virtual void writeFileHeader();
124 public:
126     //- Runtime type information
127     TypeName("fieldMinMax");
130     // Constructors
132         //- Construct for given objectRegistry and dictionary.
133         //  Allow the possibility to load fields from files
134         fieldMinMax
135         (
136             const word& name,
137             const objectRegistry&,
138             const dictionary&,
139             const bool loadFromFiles = false
140         );
143     //- Destructor
144     virtual ~fieldMinMax();
147     // Member Functions
149         //- Return name of the set of field min/max
150         virtual const word& name() const
151         {
152             return name_;
153         }
155         //- Read the field min/max data
156         virtual void read(const dictionary&);
158         //- Execute, currently does nothing
159         virtual void execute();
161         //- Execute at the final time-loop, currently does nothing
162         virtual void end();
164         //- Calculate the field min/max
165         template<class Type>
166         void calcMinMaxFields(const word& fieldName);
168         //- Write the fieldMinMax
169         virtual void write();
171         //- Update for changes of mesh
172         virtual void updateMesh(const mapPolyMesh&)
173         {}
175         //- Update for changes of mesh
176         virtual void movePoints(const pointField&)
177         {}
181 // Template specialisation for scalar fields
182 template<>
183 void fieldMinMax::calcMinMaxFields<scalar>(const word& fieldName);
186 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
188 } // End namespace Foam
190 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
192 #ifdef NoRepository
193 #   include "fieldMinMaxTemplates.C"
194 #endif
196 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
198 #endif
200 // ************************************************************************* //