Driver code for 2D Poisson problem.
336 cout <<
"=====================" << endl;
337 cout <<
"Testing Hypre solvers" << endl;
338 cout <<
"=====================" << endl;
344 problem.linear_solver_pt() = hypre_linear_solver_pt;
347 hypre_linear_solver_pt->
max_iter() = 100;
357 for (
unsigned s=0;
s<=3;
s++)
363 hypre_linear_solver_pt->
hypre_method() = HypreSolver::BoomerAMG;
366 hypre_linear_solver_pt->
hypre_method() = HypreSolver::CG;
369 hypre_linear_solver_pt->
hypre_method() = HypreSolver::GMRES;
372 hypre_linear_solver_pt->
hypre_method() = HypreSolver::BiCGStab;
374 default: cout <<
"Error selecting solver" << endl;
390 for (
unsigned p=0;
p<tests;
p++)
407 default: cout <<
"Error selecting preconditioner" << endl;
414 problem.doc_solution(doc_info);
417 << std::endl << std::endl;
418 conv_file <<
problem.newton_count() << std::endl;
424 delete hypre_linear_solver_pt;
433 <<
"====================================================================="
436 <<
"Testing oomph-lib iterative linear solvers with Hypre preconditioners"
439 <<
"====================================================================="
451 cout <<
"CG iterative solver" << endl;
452 cout <<
"-------------------" << endl;
456 problem.linear_solver_pt() = oomph_linear_solver_pt;
457 oomph_linear_solver_pt->
tolerance()=1.0e-10;
461 for (
unsigned p=1;
p<=3;
p++)
463 unsigned prec_method=0;
468 prec_method = HyprePreconditioner::BoomerAMG;
472 prec_method = HyprePreconditioner::Euclid;
476 prec_method = HyprePreconditioner::ParaSails;
479 default: cout <<
"Error selecting preconditioner" << endl;
492 problem.doc_solution(doc_info);
495 << std::endl << std::endl;
496 conv_file <<
problem.newton_count() << std::endl;
498 delete oomph_linear_solver_pt;
504 cout <<
"BiCGStab iterative solver" << endl;
505 cout <<
"-------------------------" << endl;
510 problem.linear_solver_pt() = oomph_linear_solver_pt;
512 oomph_linear_solver_pt->
tolerance()=1.0e-10;
516 for (
unsigned p=1;
p<=3;
p++)
522 hypre_preconditioner_pt->
hypre_method() = HyprePreconditioner::BoomerAMG;
526 hypre_preconditioner_pt->
hypre_method() = HyprePreconditioner::Euclid;
530 hypre_preconditioner_pt->
hypre_method() = HyprePreconditioner::ParaSails;
533 default: cout <<
"Error selecting preconditioner" << endl;
545 problem.doc_solution(doc_info);
548 << std::endl << std::endl;
549 conv_file <<
problem.newton_count() << std::endl;
552 delete oomph_linear_solver_pt;
558 cout <<
"GMRES iterative solver" << endl;
559 cout <<
"----------------------" << endl;
561 oomph_linear_solver_pt->
tolerance()=1.0e-10;
562 problem.linear_solver_pt() = oomph_linear_solver_pt;
566 for (
unsigned p=1;
p<=3;
p++)
568 unsigned prec_method=0;
574 prec_method = HyprePreconditioner::BoomerAMG;
578 prec_method = HyprePreconditioner::Euclid;
582 prec_method = HyprePreconditioner::ParaSails;
585 default: cout <<
"Error selecting preconditioner" << endl;
598 problem.doc_solution(doc_info);
601 << std::endl << std::endl;
602 conv_file <<
problem.newton_count() << std::endl;
604 delete oomph_linear_solver_pt;
605 delete hypre_preconditioner_pt;
Array< double, 1, 3 > e(1./3., 0.5, 2.)
float * p
Definition: Tutorial_Map_using.cpp:9
Micky mouse Poisson problem.
Definition: HypreSolver_test.cc:81
The conjugate gradient method.
Definition: iterative_linear_solver.h:410
The conjugate gradient method.
Definition: iterative_linear_solver.h:284
Definition: oomph_utilities.h:499
std::string directory() const
Output directory.
Definition: oomph_utilities.h:524
void set_directory(const std::string &directory)
Definition: oomph_utilities.cc:298
unsigned & number()
Number used (e.g.) for labeling output files.
Definition: oomph_utilities.h:554
The GMRES method.
Definition: iterative_linear_solver.h:1227
void enable_hypre_error_messages()
Turn on the hypre error messages.
Definition: hypre_solver.h:242
Definition: hypre_solver.h:826
unsigned & hypre_method()
Access function to Hypre_method flag – specified via enumeration.
Definition: hypre_solver.h:945
Definition: hypre_solver.h:514
unsigned & amg_simple_smoother()
Access function to AMG_simple_smoother flag.
Definition: hypre_solver.h:583
unsigned & max_iter()
Access function to Max_iter.
Definition: hypre_solver.h:551
unsigned & hypre_method()
Access function to Hypre_method flag – specified via enumeration.
Definition: hypre_solver.h:563
unsigned & amg_print_level()
Access function to AMG_print_level.
Definition: hypre_solver.h:602
unsigned & krylov_print_level()
Access function to Krylov_print_level.
Definition: hypre_solver.h:737
double & tolerance()
Access function to Tolerance.
Definition: hypre_solver.h:557
unsigned & internal_preconditioner()
Definition: hypre_solver.h:570
Definition: iterative_linear_solver.h:54
Preconditioner *& preconditioner_pt()
Access function to preconditioner.
Definition: iterative_linear_solver.h:95
double & tolerance()
Access to convergence tolerance.
Definition: iterative_linear_solver.h:107
void disable_doc_time()
Disable documentation of solve times.
Definition: linear_solver.h:116
RealScalar s
Definition: level1_cplx_impl.h:130
string filename
Definition: MergeRestartFiles.py:39
double TanPhi
Parameter for angle Phi of "step".
Definition: HypreSolver_test.cc:51
void source_function(const Vector< double > &x, double &source)
Source function required to make the solution above an exact solution.
Definition: HypreSolver_test.cc:60
double Alpha
Parameter for steepness of step.
Definition: extrude_with_macro_element_representation.cc:185
OomphInfo oomph_info
Definition: oomph_definitions.cc:319
Constructor for SteadyAxisymAdvectionDiffusion problem
Definition: steady_axisym_advection_diffusion.cc:213