1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | foam-extend: Open Source CFD
5 \\ / A nd | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
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/>.
28 Implemented to avoid issues with asScalar, asSquare etc.
29 This is basically needed since there are specializations of the BlockCoeff
33 Klas Jareteg, 2013-03-07
38 \*---------------------------------------------------------------------------*/
40 #ifndef tensorBlockCoeffMaxNorm_H
41 #define tensorBlockCoeffMaxNorm_H
43 #include "blockCoeffs.H"
44 #include "blockCoeffNorms.H"
45 #include "BlockCoeffNorm.H"
46 #include "BlockCoeffMaxNorm.H"
47 #include "runTimeSelectionTables.H"
49 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
54 /*---------------------------------------------------------------------------*\
55 Class BlockCoeffMaxNorm Declaration
56 \*---------------------------------------------------------------------------*/
59 inline scalar BlockCoeffMaxNorm<tensor>::normalize
61 const BlockCoeff<tensor>& a
64 if (a.activeType() == BlockCoeff<tensor>::SCALAR)
66 return mag(a.asScalar());
68 else if (a.activeType() == BlockCoeff<tensor>::LINEAR)
70 return cmptMax(cmptMag(a.asLinear()));
76 "scalar BlockCoeffMaxNorm<tensor>(const BlockCoeff<tensor>& a)"
77 ) << "Unknown type" << abort(FatalError);
85 inline void BlockCoeffMaxNorm<tensor>::coeffMag
87 const CoeffField<tensor>& a,
91 if (a.activeType() == BlockCoeff<tensor>::SCALAR)
93 b = mag(a.asScalar());
95 else if (a.activeType() == BlockCoeff<tensor>::LINEAR)
97 b = cmptMax(cmptMag(a.asLinear()));
103 "scalar BlockCoeffMaxNorm<Type>(const BlockCoeff<tensor>& b)"
104 ) << "Unknown type" << abort(FatalError);
109 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
111 } // End namespace Foam
113 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
116 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
120 // ************************************************************************* //