Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / foam / primitives / VectorN / vector2 / diagTensor2I.H
blob6dbaf87e9f31de7cf26858c2ad612eda296bd782
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 Type
25     diagTensor2
27 Description
28     DiagTensorN of 2 scalars.
30 \*---------------------------------------------------------------------------*/
33 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
35 namespace Foam
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
40 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
42 //- Assign to a SphericalTensorN
43 template<>
44 inline void diagTensor2::operator=(const sphericalTensor2& st)
46     this->v_[0] = st[0];
47     this->v_[1] = st[0];
50 // * * * * * * * * * * * * * * * Global Operators  * * * * * * * * * * * * * //
52 //- Inner-product between two diagonal tensors
53 inline diagTensor2
54 operator&(const diagTensor2& dt1, const diagTensor2& dt2)
56     diagTensor2 result;
58     result[0] = dt1[0]*dt2[0];
59     result[1] = dt1[1]*dt2[1];
61     return result;
65 //- Inner-product between a spherical tensor and a diagonal tensor
66 inline diagTensor2
67 operator&(const sphericalTensor2& st1, const diagTensor2& dt2)
69     diagTensor2 result;
71     result[0] = st1[0]*dt2[0];
72     result[1] = st1[0]*dt2[1];
74     return result;
77 //- Inner-product between a diagonal tensor and a spherical tensor
78 inline diagTensor2
79 operator&(const diagTensor2& dt1, const sphericalTensor2& st2)
81     diagTensor2 result;
83     result[0] = dt1[0]*st2[0];
84     result[1] = dt1[1]*st2[0];
86     return result;
90 //- Inner-product between a diagonal tensor and a vector
91 inline vector2
92 operator&(const diagTensor2& dt, const vector2& v)
94     vector2 result;
96     result[0] = dt[0]*v[0];
97     result[1] = dt[1]*v[1];
99     return result;
103 //- Inner-product between a vector and a diagonal tensor
104 inline vector2
105 operator&(const vector2& v, const diagTensor2& dt)
107     vector2 result;
109     result[0] = v[0]*dt[0];
110     result[1] = v[1]*dt[1];
112     return result;
116 //- Division of a scalar by a diagTensor2
117 inline diagTensor2 operator/(const scalar s, const diagTensor2& dt)
119     diagTensor2 result;
121     result[0] = s/dt[0];
122     result[1] = s/dt[1];
124     return result;
128 //- Return the inverse of a diagTensor2
129 inline diagTensor2 inv(const diagTensor2& dt)
131     diagTensor2 result;
133     result[0] = 1.0/dt[0];
134     result[1] = 1.0/dt[1];
136     return result;
140 //- Return the component sum
141 inline scalar sum(const diagTensor2& dt)
143     return dt[0] + dt[1];
146 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
148 } // End namespace Foam
150 // ************************************************************************* //