Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

bd.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (c) 2001 The AUTHORS 
00003  *   Romeu Andre' Pieritz, Ph.D.        - romeu_pieritz@hotmail.com
00004  *   Rafael Mendes, Eng.                – mendes_rafael@yahoo.com
00005  *   Rodrigo Ferraz de Andrade, Eng.    – rferraz@iname.com 
00006  * All rights reserved.
00007  *
00008  * Permission to use, copy and distribute this software and its
00009  * documentation for educational and personal use, without fee is hereby granted, 
00010  * provided that the above copyright notice and the following
00011  * two paragraphs appear in all copies of this software.
00012  *
00013  * IN NO EVENT SHALL THE AUTHORS BE LIABLE TO ANY PARTY FOR
00014  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
00015  * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHORS
00016  * HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00017  *
00018  * THE AUTHORS SPECIFICALLY DISCLAIMS ANY WARRANTIES,
00019  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
00020  * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HERE UNDER IS
00021  * ON AN "AS IS" BASIS, AND THE AUTHORS HAVE NO OBLIGATION TO
00022  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
00023  *
00024  * SINMEC Lab. - CFD Sinflow Project - http://www.sinmec.ufsc.br/cfd
00025  */
00026 
00027 
00028 // File Define
00029 #ifndef __CSFL_MATH_SOLVER_BD__
00030 #define __CSFL_MATH_SOLVER_BD__
00031 
00032 
00033 // Include
00034 #include <csfl/math/solver/solver.h>
00035 
00036 
00037 // Namespace
00038 namespace csfl { 
00039 
00040 
00041 class ISolverBandDiagonal : 
00042         public ISolver
00043 
00048         
00049 {
00050 
00051 public:
00052         ISolverBandDiagonal( ILinearSystem * = NULL );
00053         ISolverBandDiagonal( ILinearSystem *, int, int );
00054     ISolverBandDiagonal( ISolverBandDiagonal * );
00055         ~ISolverBandDiagonal();
00056         
00057         void Solve();
00058         void Solve( ILinearSystem *_lsys );
00059 
00060         void SetRowsBelowDiagonal( int _nd ) { nd1 = _nd; }
00061         int RowsBelowDiagonal() { return nd1; }
00062 
00063         void SetRowsAboveDiagonal( int _nd ) { nd2 = _nd; }
00064         int RowsAboveDiagonal() { return nd2; }
00065 
00066         bool Transpose() { return isTranspose; }
00067         void SetTranspose( bool _b ) { isTranspose = _b; }
00068 
00069 protected:
00070         double **mat, **mat0, **mat1;
00071         double *vx, *vb;
00072         unsigned long *indx;
00073         int nd1, nd2;
00074         bool mem, isTranspose;
00075 
00076         void CompactMatrix( double **, double **, unsigned long );
00077         void Conversor( double **, unsigned long, int, int, double [], double [] );
00078         void Decomposition( double **, unsigned long, int, int, double **, unsigned long [], double * );
00079         void BackSubstitution( double **, unsigned long, int, int, double **, unsigned long [], double [] );
00080 
00081         void BD();
00082 
00083         void AllocaMemory();
00084 };
00085 
00086 } // csfl namespace
00087 
00088 #endif // __CSFL_MATH_SOLVER_BD__

 

CFD Project | Documents | Downloads | Contact us | Use Terms

 

© SINMEC/EMC/UFSC, 2001.

All rights reserved.

Last Update: Jan. 18, 2002

 Webmaster