fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / VectorN / OpenFOAM / primitives / DiagTensorN.H
blob2f5eb6c1735b1cc9160df9afd9fb249ccde25b2c
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
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 Class
26     DiagTensorN
28 Description
29     Templated NXN DiagTensor derived from VectorSpace adding construction from
30     N components, and the inner-product (dot-product) and outer-product operators.
32 SourceFiles
33     DiagTensorNI.H
35 \*---------------------------------------------------------------------------*/
37 #ifndef DiagTensorN_H
38 #define DiagTensorN_H
40 #include "VectorN.H"
41 #include "SphericalTensorN.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                            Class DiagTensor Declaration
50 \*---------------------------------------------------------------------------*/
52 template <class Cmpt, int length>
53 class DiagTensorN
55     public VectorSpace<DiagTensorN<Cmpt, length>, Cmpt, length>
58 public:
60     // Member constants
62         enum
63         {
64             rank = 2, // Rank of DiagTensor is 2
65             rowLength = length
66         };
69     // Static data members
71         static const char* const typeName;
72         static const char* componentNames[];
73         static const DiagTensorN zero;
74         static const DiagTensorN one;
75         static const DiagTensorN I;
78     // Constructors
80         //- Construct null
81         inline DiagTensorN();
83         //- Construct given VectorSpace
84         inline DiagTensorN(const VectorSpace<DiagTensorN<Cmpt, length>, Cmpt, length>&);
86         //- Construct from Istream
87         inline DiagTensorN(Istream&);
89         //- Construct given component value.  Special use only!
90         explicit inline DiagTensorN(const Cmpt& tx);
93     // Member Functions
95         //- Diagonal
96         inline DiagTensorN<Cmpt, length> diag() const;
98         //- Transpose
99         inline DiagTensorN<Cmpt, length> T() const;
101     // Member Operators
103         //- Assign to a SphericalTensorN
104         inline void operator=(const SphericalTensorN<Cmpt, length>&);
109 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
111 } // End namespace Foam
113 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
115 // Include inline implementations
116 #include "DiagTensorNI.H"
118 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
120 #endif
122 // ************************************************************************* //