16 #ifndef dealii_precondition_block_base_h 17 #define dealii_precondition_block_base_h 36 template <
typename number>
38 template <
typename number>
60 template <
typename number>
113 reinit(
unsigned int nblocks,
151 template <
typename number2>
154 Vector<number2> & dst,
155 const Vector<number2> &src)
const;
160 template <
typename number2>
163 Vector<number2> & dst,
164 const Vector<number2> &src)
const;
305 template <
typename number>
316 template <
typename number>
334 template <
typename number>
400 std::vector<LAPACKFullMatrix<number>> tmp(
412 template <
typename number>
419 template <
typename number>
420 template <
typename number2>
423 Vector<number2> & dst,
424 const Vector<number2> &src)
const 448 template <
typename number>
449 template <
typename number2>
452 Vector<number2> & dst,
453 const Vector<number2> &src)
const 477 template <
typename number>
489 template <
typename number>
501 template <
typename number>
513 template <
typename number>
527 template <
typename number>
541 template <
typename number>
555 template <
typename number>
569 template <
typename number>
583 template <
typename number>
591 template <
typename number>
599 template <
typename number>
607 template <
typename number>
615 template <
typename number>
619 deallog <<
"PreconditionBlockBase: " <<
size() <<
" blocks; ";
623 unsigned int kermin = 100000000, kermax = 0;
624 double sigmin = 1.e300, sigmax = -1.e300;
625 double kappamin = 1.e300, kappamax = -1.e300;
631 while (k <= matrix.
n_cols() &&
636 const double co = sm / s0;
651 deallog <<
"dim ker [" << kermin <<
':' << kermax <<
"] sigma [" << sigmin
652 <<
':' << sigmax <<
"] kappa [" << kappamin <<
':' << kappamax
666 template <
typename number>
670 std::size_t mem =
sizeof(*this);
Contents is actually a matrix.
#define AssertIndexRange(index, range)
~PreconditionBlockBase()=default
void inverses_computed(bool are_they)
void inverse_vmult(size_type i, Vector< number2 > &dst, const Vector< number2 > &src) const
std::vector< FullMatrix< number > > var_diagonal
FullMatrix< number > & inverse(size_type i)
std::string compress(const std::string &input)
PreconditionBlockBase(bool store_diagonals=false, Inversion method=gauss_jordan)
#define Assert(cond, exc)
bool store_diagonals() const
#define DeclException0(Exception0)
#define DEAL_II_NAMESPACE_CLOSE
std::vector< FullMatrix< number > > var_inverse_full
void reinit(unsigned int nblocks, size_type blocksize, bool compress, Inversion method=gauss_jordan)
unsigned int n_diagonal_blocks
void log_statistics() const
SymmetricTensor< 2, dim, Number > b(const Tensor< 2, dim, Number > &F)
number singular_value(const size_type i) const
void inverse_Tvmult(size_type i, Vector< number2 > &dst, const Vector< number2 > &src) const
unsigned int global_dof_index
#define DEAL_II_NAMESPACE_OPEN
unsigned int size() const
static ::ExceptionBase & ExcDiagonalsNotStored()
std::vector< LAPACKFullMatrix< number > > var_inverse_svd
LAPACKFullMatrix< number > & inverse_svd(size_type i)
Householder< number > & inverse_householder(size_type i)
static ::ExceptionBase & ExcNotImplemented()
bool inverses_ready() const
std::size_t memory_consumption() const
std::vector< Householder< number > > var_inverse_householder
FullMatrix< number > & diagonal(size_type i)
static ::ExceptionBase & ExcInverseNotAvailable()
std::enable_if< std::is_fundamental< T >::value, std::size_t >::type memory_consumption(const T &t)
bool same_diagonal() const