/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class Foam::simpleMatrix Description A simple square matrix solver with scalar coefficients. SourceFiles simpleMatrix.C \*---------------------------------------------------------------------------*/ #ifndef simpleMatrix_H #define simpleMatrix_H #include "scalarMatrices.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { // Forward declaration of friend functions and operators template class simpleMatrix; template Ostream& operator<< ( Ostream&, const simpleMatrix& ); /*---------------------------------------------------------------------------*\ Class simpleMatrix Declaration \*---------------------------------------------------------------------------*/ template class simpleMatrix : public scalarSquareMatrix { // Private data Field source_; public: // Constructors //- Construct given size // Note: this does not initialise the coefficients or the source. simpleMatrix(const label); //- Construct given size and initial values for the // coefficients and source simpleMatrix(const label, const scalar, const Type&); //- Construct from components simpleMatrix(const scalarSquareMatrix&, const Field&); //- Construct from Istream simpleMatrix(Istream&); //- Construct as copy simpleMatrix(const simpleMatrix&); // Member Functions // Access //- Return access to the source Field& source() { return source_; } //- Return const-access to the source const Field& source() const { return source_; } //- Solve the matrix using Gaussian elimination with pivoting // and return the solution Field solve() const; //- Solve the matrix using LU decomposition with pivoting // and return the solution Field LUsolve() const; // Member Operators void operator=(const simpleMatrix&); // Ostream Operator friend Ostream& operator<< ( Ostream&, const simpleMatrix& ); }; // Global operators template simpleMatrix operator+ ( const simpleMatrix&, const simpleMatrix& ); template simpleMatrix operator- ( const simpleMatrix&, const simpleMatrix& ); template simpleMatrix operator* ( const scalar, const simpleMatrix& ); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository # include "simpleMatrix.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //