16 #ifndef dealii__mg_coarse_h 17 #define dealii__mg_coarse_h 20 #include <deal.II/lac/full_matrix.h> 21 #include <deal.II/lac/matrix_lib.h> 22 #include <deal.II/lac/householder.h> 23 #include <deal.II/multigrid/mg_base.h> 25 DEAL_II_NAMESPACE_OPEN
41 template<
typename SolverType,
class VectorType = Vector<
double> >
54 template<
typename MatrixType,
typename PreconditionerType>
57 const PreconditionerType &);
67 template<
typename MatrixType,
typename PreconditionerType>
70 const PreconditionerType &);
83 const VectorType &src)
const;
89 template <
typename MatrixType>
121 template<
typename number =
double,
class VectorType = Vector<number> >
137 const VectorType &src)
const;
154 template<
typename number =
double,
class VectorType = Vector<number> >
170 const VectorType &src)
const;
191 template<
typename SolverType,
class VectorType>
195 solver(0, typeid(*this).name()),
201 template<
typename SolverType,
class VectorType>
202 template<
typename MatrixType,
typename PreconditionerType>
206 const PreconditionerType &p)
208 solver(&s,
typeid(*this).name())
215 template<
typename SolverType,
class VectorType>
223 template<
typename SolverType,
class VectorType>
224 template<
typename MatrixType,
typename PreconditionerType>
229 const PreconditionerType &p)
241 template<
typename SolverType,
class VectorType>
256 template<
typename SolverType,
class VectorType>
261 const VectorType &src)
const 270 template<
typename SolverType,
class VectorType>
271 template<
typename MatrixType>
283 template<
typename number,
class VectorType>
287 if (A != 0) householder.initialize(*A);
292 template<
typename number,
class VectorType>
296 householder.initialize(A);
301 template<
typename number,
class VectorType>
305 const VectorType &src)
const 307 householder.least_squares(dst, src);
312 template<
typename number,
class VectorType>
319 template<
typename number,
class VectorType>
324 matrix.reinit(A.n_rows(), A.n_cols());
326 matrix.compute_inverse_svd(threshold);
330 template<
typename number,
class VectorType>
335 const VectorType &src)
const 341 template<
typename number,
class VectorType>
345 const unsigned int n = std::min(
matrix.n_rows(),
matrix.n_cols());
347 for (
unsigned int i=0; i<n; ++i)
348 deallog <<
' ' <<
matrix.singular_value(i);
349 deallog << std::endl;
355 DEAL_II_NAMESPACE_CLOSE
void initialize(const FullMatrix< number > &A, const double threshold=0)
MGCoarseGridHouseholder(const FullMatrix< number > *A=0)
void operator()(const unsigned int level, VectorType &dst, const VectorType &src) const
void initialize(SolverType &, const MatrixType &, const PreconditionerType &)
LAPACKFullMatrix< number > matrix
PointerMatrixBase< VectorType > * matrix
SmartPointer< SolverType, MGCoarseGridLACIteration< SolverType, VectorType > > solver
#define Assert(cond, exc)
void operator()(const unsigned int level, VectorType &dst, const VectorType &src) const
MGCoarseGridLACIteration()
PointerMatrixBase< VectorType > * precondition
Householder< number > householder
void operator()(const unsigned int level, VectorType &dst, const VectorType &src) const
void initialize(const FullMatrix< number > &A)
~MGCoarseGridLACIteration()
void set_matrix(const MatrixType &)