Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / postProcessing / functionObjects / field / fieldMinMax / fieldMinMaxTemplates.C
blobae19145e82b3c90c9c0d657eccd829f467ab1f19
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "fieldMinMax.H"
27 #include "volFields.H"
28 #include "dictionary.H"
29 #include "foamTime.H"
31 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
33 template<class Type>
34 void Foam::fieldMinMax::calcMinMaxFields(const word& fieldName)
36     typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
38     if (obr_.foundObject<fieldType>(fieldName))
39     {
40         const fieldType& field = obr_.lookupObject<fieldType>(fieldName);
41         switch (mode_)
42         {
43             case mdMag:
44             {
45                 scalar minValue = min(mag(field)).value();
46                 scalar maxValue = max(mag(field)).value();
48                 if (Pstream::master())
49                 {
50                     fieldMinMaxFilePtr_() << obr_.time().value() << tab
51                         << fieldName << tab << minValue << tab << maxValue
52                         << endl;
54                     if (log_)
55                     {
56                         Info<< "fieldMinMax output:" << nl
57                             << "    min(mag(" << fieldName << ")) = "
58                             << minValue << nl
59                             << "    max(mag(" << fieldName << ")) = "
60                             << maxValue << nl
61                             << endl;
62                     }
63                 }
64                 break;
65             }
66             case mdCmpt:
67             {
68                 Type minValue = min(field).value();
69                 Type maxValue = max(field).value();
71                 if (Pstream::master())
72                 {
73                     fieldMinMaxFilePtr_() << obr_.time().value() << tab
74                         << fieldName << tab << minValue << tab << maxValue
75                         << endl;
77                     if (log_)
78                     {
79                         Info<< "fieldMinMax output:" << nl
80                             << "    cmptMin(" << fieldName << ") = "
81                             << minValue << nl
82                             << "    cmptMax(" << fieldName << ") = "
83                             << maxValue << nl
84                             << endl;
85                     }
86                 }
87                 break;
88             }
89             default:
90             {
91                 FatalErrorIn
92                 (
93                     "Foam::fieldMinMax::calcMinMaxFields"
94                     "(const word& fieldName)"
95                 )<< "Unknown min/max mode: " << modeTypeNames_[mode_]
96                  << exit(FatalError);
97             }
98         }
99     }
103 // ************************************************************************* //