52template <
typename VectorType = Vector<
double>>
84 const AdditionalData &data = AdditionalData());
93 template <
typename MatrixType>
95 solve(
double &
value,
const MatrixType &A, VectorType &x);
125template <
typename VectorType = Vector<
double>>
169 const AdditionalData &data = AdditionalData());
178 template <
typename MatrixType>
180 solve(
double &
value,
const MatrixType &A, VectorType &x);
193template <
typename VectorType>
203template <
typename VectorType>
204template <
typename MatrixType>
219 double length = x.l2_norm();
220 double old_length = 0.;
233 length = y.l2_norm();
239 double thresh = length / x.size();
245 while (std::fabs(entry) < thresh);
250 value = (entry * x(i) < 0.) ? -length : length;
254 x.equ(1 / length, y);
262 std::fabs(1. / length - 1. / old_length),
269 iter, std::fabs(1. / length - 1. / old_length)));
276template <
typename VectorType>
286template <
typename VectorType>
287template <
typename MatrixType>
299 double current_shift = -
value;
318 double length = x.l2_norm();
319 double old_value =
value;
324 double res = std::numeric_limits<double>::lowest();
328 solver.
solve(A_s, y, x, prec);
331 length = y.l2_norm();
337 double thresh = length / x.size();
343 while (std::fabs(entry) < thresh);
348 value = (entry * x(i) < 0. ? -1. : 1.) / length - current_shift;
353 const double new_shift =
354 relaxation * (-
value) + (1. - relaxation) * current_shift;
357 current_shift = new_shift;
363 x.equ(1. / length, y);
369 r.sadd(-1.,
value, x);
376 res = std::fabs(1. /
value - 1. / old_value);
types::global_dof_index size_type
EigenInverse(SolverControl &cn, VectorMemory< VectorType > &mem, const AdditionalData &data=AdditionalData())
AdditionalData additional_data
void solve(double &value, const MatrixType &A, VectorType &x)
EigenPower(SolverControl &cn, VectorMemory< VectorType > &mem, const AdditionalData &data=AdditionalData())
void solve(double &value, const MatrixType &A, VectorType &x)
AdditionalData additional_data
types::global_dof_index size_type
boost::signals2::signal< SolverControl::State(const unsigned int iteration, const double check_value, const VectorType ¤t_iterate), StateCombiner > iteration_status
SolverBase(SolverControl &solver_control, VectorMemory< VectorType > &vector_memory)
VectorMemory< VectorType > & memory
@ iterate
Continue iteration.
@ success
Stop iteration, goal reached.
void solve(const MatrixType &A, VectorType &x, const VectorType &b, const PreconditionerType &preconditioner)
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcInternalError()
#define AssertThrow(cond, exc)
LinearOperator< Range, Domain, Payload > linear_operator(const OperatorExemplar &, const Matrix &)
LinearOperator< Range, Domain, Payload > identity_operator(const LinearOperator< Range, Domain, Payload > &)
const bool IsBlockVector< VectorType >::value
unsigned int global_dof_index
AdditionalData(double relaxation=1., unsigned int start_adaption=6, bool use_residual=true)
unsigned int start_adaption
AdditionalData(const double shift=0.)