Forward compatibility: flex
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / helperClasses / matrices / matrix3D.H
blob1b97ddf13ecc91477c66b96082bdd0b60a2831f0
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | cfMesh: A library for mesh generation
4    \\    /   O peration     |
5     \\  /    A nd           | Author: Franjo Juretic (franjo.juretic@c-fields.com)
6      \\/     M anipulation  | Copyright (C) Creative Fields, Ltd.
7 -------------------------------------------------------------------------------
8 License
9     This file is part of cfMesh.
11     cfMesh 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     cfMesh 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 cfMesh.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     matrix3D
27 Description
28     Implementation of 3 x 3 matrix
30 SourceFiles
31     matrix3D.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef matrix3D_H
36 #define matrix3D_H
38 #include "scalar.H"
39 #include "FixedList.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                            Class matrix3D Declaration
48 \*---------------------------------------------------------------------------*/
50 class matrix3D
51 : public FixedList<FixedList<scalar, 3>, 3>
53     // Private members
54         scalar det_;
55         bool calculatedDet_;
57     // Private member functions
58         //- calculate matrix determinant
59         inline void calculateDeterminant();
61 public:
63     // Constructors
64         //- Null constructor
65         explicit inline matrix3D();
67         //- Copy constructor
68         inline matrix3D(const matrix3D&);
70     // Destructor
71         inline ~matrix3D();
73     // Member functions
74         //- return matrix determinant
75         inline scalar determinant();
77         //- return inverse matrix
78         inline matrix3D inverse();
80         //- find the solution of the system with the given rhs
81         inline FixedList<scalar, 3> solve
82         (
83             const FixedList<scalar, 3>& source
84         );
86         //- return the first component of the solution vector
87         inline scalar solveFirst(const FixedList<scalar, 3>& source);
89         //- return the second component of the solution vector
90         inline scalar solveSecond(const FixedList<scalar, 3>& source);
92         //- return the third component of the solution vector
93         inline scalar solveThird(const FixedList<scalar, 3>& source);
96 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
98 } // End namespace Foam
100 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
102 #include "matrix3DI.H"
104 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
106 #endif
108 // ************************************************************************* //