Driver for Fp preconditioner.
///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
596 MPI_Helpers::init(argc,argv);
610 bool use_hypre_for_pressure=
true;
611 bool use_block_diagonal_for_momentum=
false;
612 bool use_hypre_for_momentum_diagonals=
false;
615 for (
unsigned do_stress_div=0;do_stress_div<2;do_stress_div++)
619 oomph_info <<
"Doing stress divergence form\n";
625 oomph_info <<
"Doing simple form of viscous terms\n";
632 for (
unsigned problem_id=0;problem_id<2;problem_id++)
637 if (do_stress_div==1)
639 out_file.open(
"two_d_iter_driven_cavity_stress_div.dat");
643 out_file.open(
"two_d_iter_driven_cavity_simple.dat");
648 if (do_stress_div==1)
650 out_file.open(
"two_d_iter_step_stress_div.dat");
654 out_file.open(
"two_d_iter_step_simple.dat");
659 <<
"VARIABLES=\"nel_1d\","
662 <<
"\" Newton iteration\","
663 <<
"\"GMRES iterations\","
664 <<
"\"Linear solver time\","
677 for (
unsigned iprec=0;iprec<2;iprec++)
689 for (
unsigned icase=icase_lo;icase<=icase_hi;icase++)
691 bool use_triangles=
false;
692 bool use_adaptivity=
false;
699 header1=
" Triangles";
701 use_adaptivity=
false;
708 use_adaptivity=
false;
713 header1=
" Refineable Quads";
722 oomph_info <<
"Doing it with " << header1 << std::endl;
740 header2=
", Fp without Robin";
743 oomph_info <<
"Doing it with " << header2 <<
" preconditioner\n";
746 string header=
"ZONE T=\""+header1+header2+
"\"\n";
750 unsigned max_nel_1d=32;
751 if (argc>1) max_nel_1d=2;
752 for (
unsigned nel_1d = 2; nel_1d <= max_nel_1d; nel_1d*=2)
757 nel_1d,use_triangles,use_adaptivity,use_lsc,use_robin,
758 use_hypre_for_pressure,use_block_diagonal_for_momentum,
759 use_hypre_for_momentum_diagonals,problem_id);
765 unsigned nel=
problem.mesh_pt()->nelement();
769 elements_to_be_refined.push_back(
e);
772 problem.refine_selected_elements(elements_to_be_refined);
773 elements_to_be_refined.clear();
774 elements_to_be_refined.push_back(1);
775 problem.refine_selected_elements(elements_to_be_refined);
776 elements_to_be_refined.clear();
777 elements_to_be_refined.push_back(4);
778 problem.refine_selected_elements(elements_to_be_refined);
814 double start_re = 50.0;
815 if (argc>1) start_re=50;
816 double end_re = 50.0;
817 for (
double re = start_re; re <= end_re; re+=50.0)
827 problem.doc_solution(doc_info);
831 unsigned ndof =
problem.ndof();
837 for (
unsigned j = j_lo;
j < iter;
j++)
846 << doc_info.
number()-1 <<
" "
863 MPI_Helpers::finalize();
Array< double, 1, 3 > e(1./3., 0.5, 2.)
Test problem for Fp/PCD preconditioner.
Definition: three_d_fp.cc:114
Definition: oomph_utilities.h:499
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
Definition: navier_stokes_elements.h:395
@ Driven_cavity
Definition: three_d_fp.cc:76
@ Step
Definition: two_d_fp.cc:75
Vector< unsigned > Iterations
Storage for number of iterations during Newton steps.
Definition: two_d_tilted_square.cc:111
Vector< double > Linear_solver_time
Storage for linear solver times during Newton steps.
Definition: three_d_fp.cc:86
double Re
Reynolds number.
Definition: two_d_tilted_square.cc:80
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
OomphInfo oomph_info
Definition: oomph_definitions.cc:319
Constructor for SteadyAxisymAdvectionDiffusion problem
Definition: steady_axisym_advection_diffusion.cc:213
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2