for (unsigned int i = 0; i < n; ++i)
matrix.diag_element(i) = (i + 1);
- SolverControl control(1000, 1e3 * std::numeric_limits<number>::epsilon());
+ SolverControl control(1000,
+ 1e3 * std::numeric_limits<number>::epsilon(),
+ false,
+ true);
typename SolverGMRES<Vector<number>>::AdditionalData data;
data.max_basis_size = 200;
data.orthogonalization_strategy =
in = 1.;
{
- IterationNumberControl control(5);
+ IterationNumberControl control(5, 1e-12, false, true);
SolverCG<> solver(control);
solver.solve(A, out, in, PreconditionIdentity());
AssertThrow(control.last_step() == 1, ExcInternalError());
out = 0;
{
- IterationNumberControl control(5);
+ IterationNumberControl control(5, 1e-12, false, true);
SolverCG<> solver(control);
solver.solve(A, out, in, PreconditionIdentity());
AssertThrow(control.last_step() == 5, ExcInternalError());
PRECONDITIONER preconditioner;
preconditioner.initialize(A, data);
- SolverControl solver_control(100, 1.0e-10);
+ SolverControl solver_control(100, 1.0e-10, false, true);
SolverCG<VectorType> solver(solver_control);
// Exact inverse
// Exact inverse
{
deallog.push("Exact inverse");
- SolverControl solver_control(100, 1.0e-10);
+ SolverControl solver_control(100, 1.0e-10, false, true);
SolverCG<Vector<double>> solver(solver_control);
const auto lo_A_inv = inverse_operator(lo_A, solver, preconditioner);
// Standard solver
{
deallog.push("Standard solver");
- SolverControl solver_control(100, 1.0e-10);
+ SolverControl solver_control(100, 1.0e-10, false, true);
SolverType solver(solver_control);
PreconditionJacobi<SparseMatrix<double>> preconditioner;
deallog.push("Linear operator");
const auto lo_A = linear_operator(A);
- SolverControl solver_control(100, 1.0e-10);
+ SolverControl solver_control(100, 1.0e-10, false, true);
SolverType solver(solver_control);
PreconditionJacobi<SparseMatrix<double>> preconditioner;
"jacobi");
preconditioner.use_matrix(A);
- SolverControl solver_control(100, 1.0e-10);
+ SolverControl solver_control(100, 1.0e-10, false, true);
SolverCG<Vector<double>> solver(solver_control);
// Exact inverse
deallog << "SolverSelector" << std::endl;
const auto lo_A = linear_operator(A);
- ReductionControl solver_control(10, 1.e-30, 1.e-2);
+ ReductionControl solver_control(10, 1.e-30, 1.e-2, false, true);
SolverSelector<Vector<double>> solver;
solver.select("cg");
solver.set_control(solver_control);
names.push_back("gmres");
names.push_back("fgmres");
- ReductionControl cont1(100, 0., 1.e-4);
- SolverControl cont2(100, 1.e-7);
+ ReductionControl cont1(100, 0., 1.e-4, false, true);
+ SolverControl cont2(100, 1.e-7, false, true);
SolverSelector<VectorType> solver;
PreconditionSSOR<SparseMatrix<double>> pre;
pre.initialize(A);
names.push_back("cg");
names.push_back("gmres");
- SolverControl cont(100, 1.e-7);
+ SolverControl cont(100, 1.e-7, false, true);
SolverSelector<VectorType> solver;
PreconditionSSOR<SparseMatrix<double>> pre;
pre.initialize(A);
preconditioner(dof, mg, mg_transfer);
{
- ReductionControl control(30, 1e-20, 1e-10);
+ ReductionControl control(30, 1e-20, 1e-10, false, true);
SolverCG<LinearAlgebra::distributed::Vector<double>> solver(control);
solver.solve(fine_matrix, sol, in, preconditioner);
}