initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / postProcessing / functionObjects / field / fieldMinMax / fieldMinMaxTemplates.C
blob25daf62dd6ee73ecaacf41d0a340eb7d30332327
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2008-2009 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 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 \*---------------------------------------------------------------------------*/
27 #include "fieldMinMax.H"
28 #include "volFields.H"
29 #include "dictionary.H"
30 #include "Time.H"
32 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
34 template<class Type>
35 void Foam::fieldMinMax::calcMinMaxFields(const word& fieldName)
37     typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
39     if (obr_.foundObject<fieldType>(fieldName))
40     {
41         if (Pstream::master())
42         {
43             const fieldType& field = obr_.lookupObject<fieldType>(fieldName);
44             switch (mode_)
45             {
46                 case mdMag:
47                 {
48                     scalar minValue = min(mag(field)).value();
49                     scalar maxValue = max(mag(field)).value();
51                     fieldMinMaxFilePtr_() << obr_.time().value() << tab
52                         << fieldName << tab << minValue << tab << maxValue
53                         << endl;
55                     if (log_)
56                     {
57                         Info<< "fieldMinMax output:" << nl
58                             << "    min(mag(" << fieldName << ")) = "
59                             << minValue << nl
60                             << "    max(mag(" << fieldName << ")) = "
61                             << maxValue << nl
62                             << endl;
63                     }
64                     break;
65                 }
66                 case mdCmpt:
67                 {
68                     Type minValue = min(field).value();
69                     Type maxValue = max(field).value();
71                     fieldMinMaxFilePtr_() << obr_.time().value() << tab
72                         << fieldName << tab << minValue << tab << maxValue
73                         << endl;
75                     if (log_)
76                     {
77                         Info<< "fieldMinMax output:" << nl
78                             << "    cmptMin(" << fieldName << ") = "
79                             << minValue << nl
80                             << "    cmptMax(" << fieldName << ") = "
81                             << maxValue << nl
82                             << endl;
83                     }
84                     break;
85                 }
86                 default:
87                 {
88                     FatalErrorIn
89                     (
90                         "Foam::fieldMinMax::calcMinMaxFields"
91                         "(const word& fieldName)"
92                     )<< "Unknown min/max mode: " << modeTypeNames_[mode_]
93                      << exit(FatalError);
94                 }
95             }
96         }
97     }
101 // ************************************************************************* //