////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
1191 const double dt = 0.005;
1194 const unsigned base_n_r = 25;
1195 const unsigned perturbed_n_r = 25;
1198 const unsigned base_n_z = 25;
1199 const unsigned perturbed_n_z = 25;
1211 const unsigned max_iter = 10000;
1215 double power_method_tolerance = 1
e-8;
1227 power_method_tolerance = 1
e-5;
1234 cout <<
"\nDoing LinearisedAxisymmetricQTaylorHoodElements\n" << endl;
1239 problem(base_n_r,base_n_z,perturbed_n_r,perturbed_n_z,domain_height);
1251 problem.set_initial_condition();
1255 double eigenvalue = 0.0;
1259 problem.get_perturbed_state_problem_dofs(eigenvector);
1262 ofstream global_trace;
1264 sprintf(
filename,
"%s/global_trace_k%i.dat",
1268 global_trace <<
"Re, dominating eigenvalue, "
1269 <<
"n_base_flow_continuation_steps, "
1270 <<
"n_power_method_iterations" << std::endl;
1273 for(
unsigned param=0;param<n_param_steps;param++)
1276 if(
lower==upper || n_param_steps<=1)
1283 lower + (((upper-
lower)/(n_param_steps-1))*param);
1292 cout <<
"\n====================================================" << endl;
1293 cout <<
"Beginning parameter run " << param+1 <<
" of "
1294 << n_param_steps <<
": Re = "
1296 cout <<
"====================================================" << endl;
1299 problem.pass_updated_nondim_parameters_to_elements();
1302 problem.reset_global_time_to_zero();
1308 problem.create_trace_files(doc_info);
1311 problem.initialise_trace_files();
1314 problem.doc_solution(doc_info,
false,
false);
1324 const unsigned n_base_flow_continuation_steps = 1;
1330 cout <<
"\nEntering steady base flow loop..." << endl;
1336 for(
unsigned i=0;
i<=n_base_flow_continuation_steps;
i++)
1340 i*(Re_current_backup/n_base_flow_continuation_steps);
1346 cout <<
" - Setting GlobalPhysicalVariables::Re_current = "
1350 problem.pass_updated_nondim_parameters_to_elements();
1353 problem.base_flow_steady_newton_solve();
1357 else {
problem.base_flow_steady_newton_solve(); }
1368 problem.perturbed_state_problem_pt()->enable_jacobian_reuse();
1371 const unsigned n_power_method_iterations =
1372 problem.perform_power_method(dt,doc_info,power_method_tolerance,
1373 max_iter,eigenvalue,eigenvector);
1375 cout <<
"\nDominating eigenvalue is " << eigenvalue << endl;
1381 ios_base::fmtflags flags = cout.flags();
1382 global_trace.precision(14);
1383 global_trace << eigenvalue <<
" ";
1384 global_trace.flags(flags);
1385 global_trace << n_base_flow_continuation_steps <<
" "
1386 << n_power_method_iterations << std::endl;
1401 cout <<
"\nDoing LinearisedAxisymmetricQCrouzeixRaviartElements\n" << endl;
1406 problem(base_n_r,base_n_z,perturbed_n_r,perturbed_n_z,domain_height);
1418 problem.set_initial_condition();
1422 double eigenvalue = 0.0;
1426 problem.get_perturbed_state_problem_dofs(eigenvector);
1429 ofstream global_trace;
1431 sprintf(
filename,
"%s/global_trace_k%i.dat",
1435 global_trace <<
"Re, dominating eigenvalue, "
1436 <<
"n_base_flow_continuation_steps, "
1437 <<
"n_power_method_iterations" << std::endl;
1440 for(
unsigned param=0;param<n_param_steps;param++)
1443 if(
lower==upper || n_param_steps<=1)
1450 lower + (((upper-
lower)/(n_param_steps-1))*param);
1459 cout <<
"\n====================================================" << endl;
1460 cout <<
"Beginning parameter run " << param+1 <<
" of "
1461 << n_param_steps <<
": Re = "
1463 cout <<
"====================================================" << endl;
1466 problem.pass_updated_nondim_parameters_to_elements();
1469 problem.reset_global_time_to_zero();
1475 problem.create_trace_files(doc_info);
1478 problem.initialise_trace_files();
1481 problem.doc_solution(doc_info,
false,
false);
1491 const unsigned n_base_flow_continuation_steps = 1;
1497 cout <<
"\nEntering steady base flow loop..." << endl;
1503 for(
unsigned i=0;
i<=n_base_flow_continuation_steps;
i++)
1507 i*(Re_current_backup/n_base_flow_continuation_steps);
1513 cout <<
" - Setting GlobalPhysicalVariables::Re_current = "
1517 problem.pass_updated_nondim_parameters_to_elements();
1520 problem.base_flow_steady_newton_solve();
1524 else {
problem.base_flow_steady_newton_solve(); }
1535 problem.perturbed_state_problem_pt()->enable_jacobian_reuse();
1538 const unsigned n_power_method_iterations =
1539 problem.perform_power_method(dt,doc_info,power_method_tolerance,
1540 max_iter,eigenvalue,eigenvector);
1542 cout <<
"\nDominating eigenvalue is " << eigenvalue << endl;
1548 ios_base::fmtflags flags = cout.flags();
1549 global_trace.precision(14);
1550 global_trace << eigenvalue <<
" ";
1551 global_trace.flags(flags);
1552 global_trace << n_base_flow_continuation_steps <<
" "
1553 << n_power_method_iterations << std::endl;
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Array< double, 1, 3 > e(1./3., 0.5, 2.)
Definition: demo_drivers/axisym_navier_stokes/counter_rotating_disks/multi_domain_linearised_axisym_navier_stokes_elements.h:186
Definition: demo_drivers/axisym_navier_stokes/counter_rotating_disks/multi_domain_linearised_axisym_navier_stokes_elements.h:54
Definition: axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:702
Definition: axisym_navier_stokes_elements.h:1234
Definition: axisym_navier_stokes_elements.h:1532
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
Definition: double_vector.h:58
void setup(Time *time_pt)
Create all GeomObjects needed to define the cylinder and the flag.
Definition: turek_flag_non_fsi.cc:277
double ReInvFr_current
Definition: linearised_axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:72
double St
Strouhal number.
Definition: linearised_axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:62
double Re_lower_limit
Loop information.
Definition: linearised_axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:75
int k
Azimuthal mode number k in e^ik(theta) decomposition.
Definition: axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:73
double Gamma
Aspect ratio (cylinder height / cylinder radius)
Definition: axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:70
double InvFr
Inverse of Froude number.
Definition: linearised_axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:65
double Re_current
Definition: linearised_axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:70
Vector< double > G(3)
Direction of gravity.
double ReSt_current
Definition: linearised_axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:71
double Re_upper_limit
Definition: linearised_axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:76
unsigned Nparam_steps
Definition: linearised_axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:77
string filename
Definition: MergeRestartFiles.py:39
std::string lower(std::string s)
returns the input string after converting upper-case characters to lower case
Definition: StringHelpers.cc:11
int Argc
Number of arguments + 1.
Definition: oomph_utilities.cc:407
Constructor for SteadyAxisymAdvectionDiffusion problem
Definition: steady_axisym_advection_diffusion.cc:213