Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / foam / primitives / BlockCoeff / BlockCoeffNorm / BlockCoeffMaxNorm / BlockCoeffMaxNorm.C
bloba9f92e96e9fa30f119e08c57d52f93964147e89c
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 Class
25     BlockCoeffMaxNorm
27 \*---------------------------------------------------------------------------*/
29 #include "BlockCoeffMaxNorm.H"
31 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
33 template<class Type>
34 Foam::BlockCoeffMaxNorm<Type>::BlockCoeffMaxNorm
36     const dictionary& dict
39     BlockCoeffNorm<Type>(dict),
40     dict_(dict)
44 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
46 template<class Type>
47 Foam::scalar Foam::BlockCoeffMaxNorm<Type>::normalize
49     const Foam::BlockCoeff<Type>& a
52     if (a.activeType() == BlockCoeff<Type>::SCALAR)
53     {
54         return mag(a.asScalar());
55     }
56     else if (a.activeType() == BlockCoeff<Type>::LINEAR)
57     {
58         return cmptMax(cmptMag(a.asLinear()));
59     }
60     else if (a.activeType() == BlockCoeff<Type>::SQUARE)
61     {
62         return cmptMax(cmptMag(a.asSquare()));
63     }
64     else
65     {
66         FatalErrorIn
67         (
68             "scalar BlockCoeffMaxNorm<Type>(const BlockCoeff<Type>& b)"
69         )   << "Unknown type" << abort(FatalError);
71         return 0;
72     }
76 template<class Type>
77 void Foam::BlockCoeffMaxNorm<Type>::coeffMag
79     const Foam::CoeffField<Type>& a,
80     Foam::Field<scalar>& b
83     if (a.activeType() == BlockCoeff<Type>::SCALAR)
84     {
85         b = mag(a.asScalar());
86     }
87     else if (a.activeType() == BlockCoeff<Type>::LINEAR)
88     {
89         b = cmptMax(cmptMag(a.asLinear()));
90     }
91     else if (a.activeType() == BlockCoeff<Type>::SQUARE)
92     {
93         b = cmptMax(cmptMag(a.asSquare()));
94     }
95     else
96     {
97         FatalErrorIn
98         (
99             "scalar BlockCoeffMaxNorm<Type>(const BlockCoeff<Type>& b)"
100         )   << "Unknown type" << abort(FatalError);
101     }
105 // ************************************************************************* //