00001 //--------------------------------------------------------------------------- 00002 // Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 by the deal.II authors 00003 // by the deal.II authors and Stephen "Cheffo" Kolaroff 00004 // 00005 // This file is subject to QPL and may not be distributed 00006 // without copyright and license information. Please refer 00007 // to the file deal.II/doc/license.html for the text and 00008 // further information on this license. 00009 // 00010 //--------------------------------------------------------------------------- 00011 00012 #ifndef __deal2__sparse_ilu_h 00013 #define __deal2__sparse_ilu_h 00014 00015 00016 #include <deal.II/base/config.h> 00017 #include <deal.II/lac/sparse_matrix.h> 00018 #include <deal.II/lac/sparse_decomposition.h> 00019 #include <deal.II/lac/exceptions.h> 00020 00021 DEAL_II_NAMESPACE_OPEN 00022 00051 template <typename number> 00052 class SparseILU : public SparseLUDecomposition<number> 00053 { 00054 public: 00062 SparseILU (); 00063 00070 SparseILU (const SparsityPattern &sparsity); 00071 00078 typedef 00079 typename SparseLUDecomposition<number>::AdditionalData 00080 AdditionalData; 00081 00113 template <typename somenumber> 00114 void initialize (const SparseMatrix<somenumber> &matrix, 00115 const AdditionalData parameters = AdditionalData()); 00116 00123 template <typename somenumber> 00124 void decompose (const SparseMatrix<somenumber> &matrix, 00125 const double strengthen_diagonal=0.); 00126 00133 template <typename somenumber> 00134 void apply_decomposition (Vector<somenumber> &dst, 00135 const Vector<somenumber> &src) const; 00136 00145 template <typename somenumber> 00146 void vmult (Vector<somenumber> &dst, 00147 const Vector<somenumber> &src) const; 00148 00149 00159 template <typename somenumber> 00160 void Tvmult (Vector<somenumber> &dst, 00161 const Vector<somenumber> &src) const; 00162 00163 00169 std::size_t memory_consumption () const; 00170 00177 DeclException1 (ExcInvalidStrengthening, 00178 double, 00179 << "The strengthening parameter " << arg1 00180 << " is not greater or equal than zero!"); 00182 }; 00183 00185 //--------------------------------------------------------------------------- 00186 00187 template <typename number> 00188 template <typename somenumber> 00189 inline 00190 void 00191 SparseILU<number>::apply_decomposition (Vector<somenumber> &dst, 00192 const Vector<somenumber> &src) const 00193 { 00194 vmult (dst, src); 00195 } 00196 00197 00198 00199 00200 DEAL_II_NAMESPACE_CLOSE 00201 00202 #endif // __deal2__sparse_ilu_h 00203
documentation generated on Fri Feb 3 2012 06:02:55 by
doxygen
1.7.2