Driver for time-periodic Taylor–Couette problem.
////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
1638 const unsigned base_n_r = 16;
1639 const unsigned perturbed_n_r = 16;
1642 const unsigned base_n_z = 16;
1643 const unsigned perturbed_n_z = 16;
1649 const double radius_inner_cylinder =
eta/(1.0-
eta);
1652 const double radius_outer_cylinder = 1.0/(1.0-
eta);
1667 unsigned nstep = 40;
1670 unsigned max_iter = 1000;
1674 const double power_method_tolerance = 1
e-8;
1679 double base_flow_norm_tolerance = 1
e-6;
1694 base_flow_norm_tolerance = 1
e-2;
1700 if(nstep%2 != 0 || nstep%5 !=0)
1702 cout <<
"\nThe self-starting BDF2 timestepper requires that the number"
1703 <<
"\nof timesteps be exactly divisible by both 2 and 5. This is"
1704 <<
"\nnot the case for nstep = " << nstep <<
". Exiting...\n"
1710 const double dt =
T/nstep;
1716 cout <<
"\nDoing LinearisedAxisymmetricQTaylorHoodElements\n" << endl;
1721 problem(base_n_r,base_n_z,perturbed_n_r,perturbed_n_z,
1722 radius_inner_cylinder,radius_outer_cylinder,l_z);
1734 problem.set_initial_condition();
1738 double eigenvalue = 0.0;
1742 problem.get_perturbed_state_problem_dofs(eigenvector);
1745 ofstream global_trace;
1747 sprintf(
filename,
"%s/global_trace_epsilon%2.1f.dat",
1751 global_trace <<
"MMC_Re, dominating eigenvalue, "
1752 <<
"n_periods_to_set_up_periodic_base_flow, "
1753 <<
"n_power_method_iterations" << std::endl;
1756 for(
unsigned param=0;param<n_param_steps;param++)
1759 if(
lower==upper || n_param_steps<=1)
1766 lower + (((upper-
lower)/(n_param_steps-1))*param);
1769 cout <<
"\n====================================================" << endl;
1770 cout <<
"Beginning parameter run " << param+1 <<
" of "
1771 << n_param_steps <<
": MMC_Re = "
1773 cout <<
"====================================================" << endl;
1776 problem.reset_global_time_to_zero();
1782 problem.create_trace_files(doc_info);
1785 problem.initialise_trace_files();
1788 problem.doc_solution(doc_info,
false,
false);
1794 const unsigned n_periods_to_set_up_periodic_base_flow
1795 =
problem.set_up_periodic_base_flow(dt,nstep,doc_info,
1796 base_flow_norm_tolerance);
1799 const unsigned n_entries_required = (27*(nstep/10))-3;
1803 const unsigned n_power_method_iterations =
1804 problem.perform_power_method(dt,nstep,doc_info,power_method_tolerance,
1805 max_iter,eigenvalue,eigenvector,
1806 base_state_dofs_over_period);
1808 cout <<
"\nDominating eigenvalue is " << eigenvalue << endl;
1814 << eigenvalue <<
" "
1815 << n_periods_to_set_up_periodic_base_flow <<
" "
1816 << n_power_method_iterations << std::endl;
1831 cout <<
"\nDoing LinearisedAxisymmetricQCrouzeixRaviartElements\n" << endl;
1836 problem(base_n_r,base_n_z,perturbed_n_r,perturbed_n_z,
1837 radius_inner_cylinder,radius_outer_cylinder,l_z);
1849 problem.set_initial_condition();
1853 double eigenvalue = 0.0;
1857 problem.get_perturbed_state_problem_dofs(eigenvector);
1860 ofstream global_trace;
1862 sprintf(
filename,
"%s/global_trace_epsilon%2.1f.dat",
1866 global_trace <<
"MMC_Re, dominating eigenvalue, "
1867 <<
"n_periods_to_set_up_periodic_base_flow, "
1868 <<
"n_power_method_iterations" << std::endl;
1871 for(
unsigned param=0;param<n_param_steps;param++)
1874 if(
lower==upper || n_param_steps<=1)
1881 lower + (((upper-
lower)/(n_param_steps-1))*param);
1884 cout <<
"\n====================================================" << endl;
1885 cout <<
"Beginning parameter run " << param+1 <<
" of "
1886 << n_param_steps <<
": MMC_Re = "
1888 cout <<
"====================================================" << endl;
1891 problem.reset_global_time_to_zero();
1897 problem.create_trace_files(doc_info);
1900 problem.initialise_trace_files();
1903 problem.doc_solution(doc_info,
false,
false);
1909 const unsigned n_periods_to_set_up_periodic_base_flow
1910 =
problem.set_up_periodic_base_flow(dt,nstep,doc_info,
1911 base_flow_norm_tolerance);
1914 const unsigned n_entries_required = (27*(nstep/10))-3;
1918 const unsigned n_power_method_iterations =
1919 problem.perform_power_method(dt,nstep,doc_info,power_method_tolerance,
1920 max_iter,eigenvalue,eigenvector,
1921 base_state_dofs_over_period);
1923 cout <<
"\nDominating eigenvalue is " << eigenvalue << endl;
1929 << eigenvalue <<
" "
1930 << n_periods_to_set_up_periodic_base_flow <<
" "
1931 << n_power_method_iterations << std::endl;
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
Definition: oomph-lib/src/generic/Vector.h:58
double Pi
Definition: two_d_biharmonic.cc:235
void setup(Time *time_pt)
Create all GeomObjects needed to define the cylinder and the flag.
Definition: turek_flag_non_fsi.cc:277
double MMC_Re_upper_limit
Definition: time_periodic_taylor_couette.cc:77
double MMC_Re_lower_limit
Loop information.
Definition: time_periodic_taylor_couette.cc:76
double Epsilon
Dimensionless modulation amplitude (epsilon)
Definition: time_periodic_taylor_couette.cc:84
double AngularFrequency
Angular frequency of outer cylinder rotation (omega = 2*gamma^2)
Definition: time_periodic_taylor_couette.cc:81
double MMC_Re_current
Definition: time_periodic_taylor_couette.cc:73
Vector< double > G(3)
Direction of gravity.
double a
Wavenumber of azimuthal waves e^iaz.
Definition: time_periodic_taylor_couette.cc:90
unsigned Nparam_steps
Definition: linearised_axisym_navier_stokes/counter_rotating_disks/counter_rotating_disks.cc:77
double Eta
Radius ratio (radius of inner cylinder / radius of outer cylinder)
Definition: time_periodic_taylor_couette.cc:87
string filename
Definition: MergeRestartFiles.py:39
double eta
Definition: foeppl_von_karman/circular_disk/circular_disk.cc:45
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