Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

replace check_solve by check_solver_within_range #4715

Closed
tamiko opened this issue Aug 7, 2017 · 3 comments
Closed

replace check_solve by check_solver_within_range #4715

tamiko opened this issue Aug 7, 2017 · 3 comments
Assignees

Comments

@tamiko
Copy link
Member

tamiko commented Aug 7, 2017

Nowadays we have a nice little macro

check_solver_within_range(
  solver.solve(A, u, f, preconditioner),
  control.last_step(), 10, 12);

We should replace all occurrences of check_solve at some point...

Relates to #4704

@masterleinad
Copy link
Member

I'll do the Trilinos part first.

@bangerth
Copy link
Member

Ugh, there are 135 occurrences left:

bits/deal_solver_04.cc:check_solve(SolverType          &solver,
bits/deal_solver_04.cc:  check_solve (solver, control, A,u,f, preconditioner);
bits/deal_solver_05.cc:check_solve(SolverType          &solver,
bits/deal_solver_05.cc:  check_solve (solver, control, A,u,f, preconditioner);
lac/solver.cc:check_solve (SolverType         &solver,
lac/solver.cc:          check_solve(cg,A,u,f,prec_no);
lac/solver.cc:          check_solve(bicgstab,A,u,f,prec_no);
lac/solver.cc:          check_solve(gmres,A,u,f,prec_no);
lac/solver.cc:          check_solve(gmresright,A,u,f,prec_no);
lac/solver.cc://    check_solve(minres,A,u,f,prec_no);
lac/solver.cc:          check_solve(qmrs,A,u,f,prec_no);
lac/solver.cc:          check_solve(fire,A,u,f,prec_no);
lac/solver.cc:          check_solve(rich,A,u,f,prec_no);
lac/solver.cc:          check_solve(cg,A,u,f,prec_no);
lac/solver.cc:          check_solve(bicgstab,A,u,f,prec_no);
lac/solver.cc:          check_solve(gmres,A,u,f,prec_no);
lac/solver.cc:          check_solve(gmresright,A,u,f,prec_no);
lac/solver.cc:          check_solve(qmrs,A,u,f,prec_no);
lac/solver.cc:          check_solve(fire,A,u,f,prec_no);
lac/solver.cc:          check_solve(rich,A,u,f,prec_richardson);
lac/solver.cc:          check_solve(cg,A,u,f,prec_richardson);
lac/solver.cc:          check_solve(bicgstab,A,u,f,prec_richardson);
lac/solver.cc:          check_solve(gmres,A,u,f,prec_richardson);
lac/solver.cc:          check_solve(gmresright,A,u,f,prec_richardson);
lac/solver.cc:          check_solve(qmrs,A,u,f,prec_richardson);
lac/solver.cc:          check_solve(fire,A,u,f,prec_richardson);
lac/solver.cc:          check_solve(rich,A,u,f,prec_ssor);
lac/solver.cc:          check_solve(cg,A,u,f,prec_ssor);
lac/solver.cc:          check_solve(bicgstab,A,u,f,prec_ssor);
lac/solver.cc:          check_solve(gmres,A,u,f,prec_ssor);
lac/solver.cc:          check_solve(gmresright,A,u,f,prec_ssor);
lac/solver.cc:          check_solve(qmrs,A,u,f,prec_ssor);
lac/solver.cc:          check_solve(fire,A,u,f,prec_ssor);
lac/solver.cc:          check_solve(rich,A,u,f,prec_sor);
lac/solver.cc:          check_solve(cg,A,u,f,prec_sor);
lac/solver.cc:          check_solve(bicgstab,A,u,f,prec_sor);
lac/solver.cc:          check_solve(gmres,A,u,f,prec_sor);
lac/solver.cc:          check_solve(gmresright,A,u,f,prec_sor);
lac/solver.cc:          check_solve(fire,A,u,f,prec_sor);
lac/solver.cc:          check_solve(rich,A,u,f,prec_psor);
lac/solver.cc:          check_solve(cg,A,u,f,prec_psor);
lac/solver.cc:          check_solve(bicgstab,A,u,f,prec_psor);
lac/solver.cc:          check_solve(gmres,A,u,f,prec_psor);
lac/solver.cc:          check_solve(gmresright,A,u,f,prec_psor);
lac/solver.cc:          check_solve(fire,A,u,f,prec_psor);
lac/solver.cc:      check_solve(rich,A,u,f,prec_sor);
lac/solver.cc:      check_solve(rich,A,u,f,prec_psor);
lac/solver_control_01.cc:check_solve (SolverControl       &solver_control,
lac/solver_control_01.cc:      check_solve (solver_control, A,u,f, preconditioner, true);
lac/solver_control_01.cc:      check_solve (solver_control, A,u,f, preconditioner, false);
lac/solver_control_02.cc:check_solve (SolverControl       &solver_control,
lac/solver_control_02.cc:      check_solve (solver_control, A,u,f, preconditioner, true);
lac/solver_control_02.cc:      check_solve (solver_control, A,u,f, preconditioner, true);
lac/solver_control_02.cc:      check_solve (solver_control, A,u,f, preconditioner, false);
lac/solver_control_03.cc:check_solve (SolverControl       &solver_control,
lac/solver_control_03.cc:      check_solve (solver_control, A,u,f, preconditioner, true);
lac/solver_control_03.cc:      check_solve (solver_control, A,u,f, preconditioner, true);
lac/solver_control_04.cc:check_solve (SolverControl       &solver_control,
lac/solver_control_04.cc:      check_solve (solver_control, A,u,f, preconditioner, true);
lac/solver_control_04.cc:      check_solve (solver_control, A,u,f, preconditioner, false);
lac/solver_memorytest.cc:check_solve (const MatrixType &A,
lac/solver_memorytest.cc:      check_solve<SolverCG<> >(A,u,f);
lac/solver_memorytest.cc:      check_solve<SolverGMRES<> >(A,u,f);
lac/solver_memorytest.cc://      check_solve<SolverFGMRES<> >(A,u,f);
lac/solver_memorytest.cc:      check_solve<SolverBicgstab<> >(A,u,f);
lac/solver_memorytest.cc:      check_solve<SolverQMRS<> >(A,u,f);
lac/solver_memorytest.cc:      check_solve<SolverGMRES<> >(A,u,f, SolverGMRES<>::AdditionalData(30, false, false));
lac/solver_monitor.cc:check_solve (SolverType         &solver,
lac/solver_monitor.cc:          check_solve(cg,A,u,f,prec_ssor);
lac/solver_monitor.cc:          check_solve(gmres,A,u,f,prec_ssor);
lac/solver_monitor_disconnect.cc:check_solve (SolverType         &solver,
lac/solver_monitor_disconnect.cc:          check_solve(cg,A,u,f,prec_ssor);
lac/solver_relaxation_01.cc:check_solve (SolverType         &solver,
lac/solver_relaxation_01.cc:          r1 = check_solve(rich,A,u,f,prec_jacobi);
lac/solver_relaxation_01.cc:          r2 = check_solve(relax,A,u,f,prec_jacobi);
lac/solver_relaxation_01.cc:          r1 = check_solve(rich,A,u,f,prec_sor);
lac/solver_relaxation_01.cc:          r2 = check_solve(relax,A,u,f,prec_sor);
lac/solver_relaxation_01.cc:          r1 = check_solve(rich,A,u,f,prec_ssor1);
lac/solver_relaxation_01.cc:          r2 = check_solve(relax,A,u,f,prec_ssor1);
lac/solver_relaxation_01.cc:          r1 = check_solve(rich,A,u,f,prec_ssor2);
lac/solver_relaxation_01.cc:          r2 = check_solve(relax,A,u,f,prec_ssor2);
lac/solver_relaxation_01.cc:      check_solve(rich,A,u,f,prec_sor);
lac/solver_relaxation_01.cc:      check_solve(rich,A,u,f,prec_psor);
lac/solver_relaxation_02.cc:check_solve (SolverType         &solver,
lac/solver_relaxation_02.cc:              r1 = check_solve(rich,A,u,f,prec_jacobi);
lac/solver_relaxation_02.cc:              r2 = check_solve(relax,A,u,f,prec_jacobi);
lac/solver_relaxation_02.cc:              r2 = check_solve(relax,A,u,f,relax_jacobi);
lac/solver_relaxation_02.cc:              r1 = check_solve(rich,A,u,f,prec_sor);
lac/solver_relaxation_02.cc:              r2 = check_solve(relax,A,u,f,prec_sor);
lac/solver_relaxation_02.cc:              r2 = check_solve(relax,A,u,f,relax_sor);
lac/solver_relaxation_02.cc:              r1 = check_solve(rich,A,u,f,prec_ssor);
lac/solver_relaxation_02.cc:              r2 = check_solve(relax,A,u,f,prec_ssor);
lac/solver_relaxation_02.cc:              r2 = check_solve(relax,A,u,f,relax_ssor);
lac/solver_relaxation_03.cc:check_solve (SolverType         &solver,
lac/solver_relaxation_03.cc:              r1 = check_solve(rich,A,u,f,prec_jacobi);
lac/solver_relaxation_03.cc:              r2 = check_solve(relax,A,u,f,prec_jacobi);
lac/solver_relaxation_03.cc:              r2 = check_solve(relax,A,u,f,prec_bjacobi);
lac/solver_relaxation_03.cc:              r1 = check_solve(rich,A,u,f,prec_sor);
lac/solver_relaxation_03.cc:              r2 = check_solve(relax,A,u,f,prec_sor);
lac/solver_relaxation_03.cc:              r2 = check_solve(relax,A,u,f,prec_bsor);
lac/solver_relaxation_03.cc:              r2 = check_solve(relax,A,u,f,prec_bsor2);
lac/solver_relaxation_03.cc:              r2 = check_solve(relax,A,u,f,relax_sor);
lac/solver_relaxation_03.cc:              r1 = check_solve(rich,A,u,f,prec_ssor);
lac/solver_relaxation_03.cc:              r2 = check_solve(relax,A,u,f,prec_ssor);
lac/solver_relaxation_03.cc:              r2 = check_solve(relax,A,u,f,prec_bssor);
lac/solver_relaxation_03.cc:              r2 = check_solve(relax,A,u,f,relax_ssor);
lac/solver_relaxation_04.cc:check_solve (SolverType         &solver,
lac/solver_relaxation_04.cc:              r1 = check_solve(relax,A,u,f,relax_jacobi);
lac/solver_relaxation_04.cc:              r2 = check_solve(relax,A,u,f,relax_jacobi_reorder);
lac/solver_signals.cc:check_solve(SolverType         &solver,
lapack/solver_cg.cc:check_solve (SolverType         &solver,
lapack/solver_cg.cc:          check_solve(cg,A,u,f,prec_no);
lapack/solver_cg.cc:          check_solve(cg,A,u,f,prec_no);
lapack/solver_cg.cc:          check_solve(cg,A,u,f,prec_richardson);
lapack/solver_cg.cc:          check_solve(cg,A,u,f,prec_ssor);
petsc_complex/solver_real_03.cc:check_solve( SOLVER &solver, const MATRIX &A,
petsc_complex/solver_real_03.cc:    check_solve (solver, A,u,f, preconditioner);
petsc_complex/solver_real_03_mf.cc:check_solve( SOLVER &solver, const MATRIX &A,
petsc_complex/solver_real_03_mf.cc:    check_solve (solver, A,u,f, preconditioner);
petsc_complex/solver_real_04.cc:check_solve( SOLVER &solver, const MATRIX &A,
petsc_complex/solver_real_04.cc:    check_solve (solver, A,u,f, preconditioner);
slepc/solve_01.cc:check_solve( SolverType &solver,
slepc/solve_01.cc:      check_solve (solver, control, A,B,u,v);
slepc/solve_01.cc:      check_solve (solver, control, A,B,u,v);
slepc/solve_01.cc:      check_solve (solver, control, A,B,u,v);
slepc/solve_01.cc:      check_solve (solver, control, A,B,u,v);
slepc/solve_01.cc:      check_solve (solver, control, A,B,u,v);
slepc/solve_01.cc:      check_solve (solver, control, A,B,u,v);
slepc/solve_04.cc:check_solve( SolverType &solver,
slepc/solve_04.cc:      check_solve (solver, 1, control, A,u,v);
slepc/solve_04.cc:      check_solve (solver, 2, control, A,u,v);
slepc/solve_04.cc:      check_solve (solver, 3, control, A,u,v);
slepc/solve_04.cc:      check_solve (solver, 4, control, A,u,v);
slepc/solve_04.cc:      check_solve (solver, 5, control, A,u,v);
slepc/solve_04.cc:      check_solve (solver, 6, control, A,u,v);

@kronbichler
Copy link
Member

While I see the advantages in using the suggested function/macro, I think the fact that nobody has approached this problem for more than 6 years indicates that the remaining tests have been fairly robust nonetheless and we should close the issue for now, the work is simply not going to happen anytime soon, be this issue open or not.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants