fsi_chan_precond_driver.cc File Reference
#include "generic.h"
#include "navier_stokes.h"
#include "beam.h"
#include "multi_physics.h"
#include "meshes/one_d_lagrangian_mesh.h"
#include "meshes/collapsible_channel_mesh.h"
#include "fsi_chan_problem.h"

Classes

class  PreconditionedFSICollapsibleChannelProblem< ELEMENT >
 Problem class. More...
 

Namespaces

 Flags
 Extend namespace for flags.
 

Functions

int main (int argc, char *argv[])
 

Variables

unsigned Flags::Solver_flag =0
 
unsigned Flags::Solver_sub_flag =0
 

Function Documentation

◆ main()

int main ( int argc  ,
char argv[] 
)

////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// Driver code for a collapsible channel problem with FSI. Presence of command line arguments indicates validation run with coarse resolution and small number of steps.

Resolution factor

Use displacement control (1) or not (0)

Min. y coordinate for parameter study with displacement control

Steady (1) or unsteady (0) run

Number of steps

Reynolds number

Womersley number

FSI parameter

627 {
628 //#ifdef OOMPH_HAS_MPI
629 // MPI_Helpers::init(argc,argv);
630 //#endif
631 
632  // Store command line arguments
633  CommandLineArgs::setup(argc,argv);
634 
635  if (CommandLineArgs::Argc==1)
636  {
637  std::cout << "Using default settings for flags" << std::endl;
638  }
639  else if ((CommandLineArgs::Argc==10)||(CommandLineArgs::Argc==12))
640  {
642  Flags::Resolution_factor=atoi(argv[1]);
643 
645  Flags::Use_displ_control=atoi(argv[2]);
646 
649 
651  Flags::Steady_flag=atoi(argv[4]);
652 
654  Flags::Nsteps=atoi(argv[5]);
655 
656  // Solver flag [0: direct; 1: exact; 2: simple; 3: Schur/Superlu;
657  // 4: Schur/Hypre]
658  Flags::Solver_flag=atoi(argv[6]);
659 
660  // Solver sub flag [0: diag; 1: retain fluid on solid;
661  // 2: retain solid on fluid]
662  Flags::Solver_sub_flag=atoi(argv[7]);
663 
665  Global_Physical_Variables::Re=double(atof(argv[8]));
666 
669 
671  Global_Physical_Variables::Q=double(atof(argv[9]));
672 
673  // Restart?
674  if (CommandLineArgs::Argc==12)
675  {
676  // Name of restart file
677  Flags::Restart_file_name=argv[10];
678 
679  // Jump in pressure
681  }
682  }
683  else
684  {
685  std::cout
686  << "\n\n\n\n\n"
687  << "Wrong number of command line args: Specify none, six or eight:"
688  << std::endl
689  << "- resolution factor [1,2,...]" << std::endl
690  << "- use_displ_control [0/1]" << std::endl
691  << "- min. y-coordinate of control point when using displ control"
692  << std::endl
693  << "- steady_flag [0/1]" << std::endl
694  << "- number of steps " << std::endl
695  << "- solver flag [0: direct; 1: exact; 2: simple; 3: Schur/Superlu; 4: Schur/Hypre]" << std::endl
696  << "- solver sub flag [0: diag; 1: retain fluid on solid; 2: retain solid on fluid]" << std::endl
697  << "- Reynolds number" << std::endl
698  << "- FSI parameter Q" << std::endl
699  << "- restart file name [optional] " << std::endl
700  << "- jump in pressure P_step [optional] " << std::endl
701  << "You specified " << CommandLineArgs::Argc-1 << " command line arg[s]"
702  << "\n\n\n\n\n" << std::endl;
703  abort();
704  }
706 
707 
708  // Number of elements in the domain
709  unsigned nup=4*Flags::Resolution_factor;
710  unsigned ncollapsible=20*Flags::Resolution_factor;
711  unsigned ndown=40*Flags::Resolution_factor;
712  unsigned ny=4*Flags::Resolution_factor;
713 
714 
715  // Length of the domain
716  double lup=1.0;
717  double lcollapsible=5.0;
718  double ldown=10.0;
719  double ly=1.0;
720 
721  // Use displacement control?
722  bool displ_control=false;
723  if (Flags::Use_displ_control==1) displ_control=true;
724 
725  // Steady run?
726  bool steady_flag=false;
727  if (Flags::Steady_flag==1) steady_flag=true;
728 
729  // Build the problem with QTaylorHoodElements
732  problem(nup, ncollapsible, ndown, ny,
733  lup, lcollapsible, ldown, ly, displ_control,
735 
736  if (Flags::Steady_flag)
737  {
738  problem.steady_run();
739  }
740  else
741  {
742  problem.unsteady_run();
743  }
744 
745 //#ifdef OOMPH_HAS_MPI
746 // MPI_Helpers::finalize();
747 //#endif
748 
749 
750 }//end of main
Problem class.
Definition: fsi_chan_precond_driver.cc:83
Definition: algebraic_elements.h:540
void setup(Time *time_pt)
Create all GeomObjects needed to define the cylinder and the flag.
Definition: turek_flag_non_fsi.cc:277
unsigned Solver_flag
Definition: fsi_chan_precond_driver.cc:60
string Restart_file_name
Name of restart file.
Definition: fsi_chan_problem.h:251
unsigned Solver_sub_flag
Definition: fsi_chan_precond_driver.cc:64
unsigned Resolution_factor
Resolution factor (multiplier for number of elements across channel)
Definition: fsi_chan_problem.h:236
unsigned Nsteps
Number of steps in parameter study.
Definition: fsi_chan_problem.h:245
unsigned Steady_flag
Steady run (1) or unsteady run (0)
Definition: fsi_chan_problem.h:242
void doc_flags()
Doc flags.
Definition: fsi_chan_problem.h:254
unsigned Use_displ_control
Use displacement control (1) or not (0)
Definition: fsi_chan_problem.h:239
double ReSt
Womersley number.
Definition: rayleigh_instability.cc:56
double Q
Ratio of scales.
Definition: elastic_bretherton.cc:131
double P_step
Definition: fsi_chan_problem.h:62
double Re
Reynolds number.
Definition: fibre.cc:55
double Yprescr_min
Definition: fsi_chan_problem.h:71
const double ly
Definition: ConstraintElementsUnitTest.cpp:34
const unsigned ny
Definition: ConstraintElementsUnitTest.cpp:31
int Argc
Number of arguments + 1.
Definition: oomph_utilities.cc:407
Constructor for SteadyAxisymAdvectionDiffusion problem
Definition: steady_axisym_advection_diffusion.cc:213

References oomph::CommandLineArgs::Argc, Flags::doc_flags(), Mesh_Parameters::ly, Flags::Nsteps, Mesh_Parameters::ny, Global_Physical_Variables::P_step, problem, Global_Physical_Variables::Q, Global_Physical_Variables::Re, Flags::Resolution_factor, Global_Physical_Variables::ReSt, Flags::Restart_file_name, Flag_definition::setup(), Flags::Solver_flag, Flags::Solver_sub_flag, Flags::Steady_flag, Flags::Use_displ_control, and Global_Physical_Variables::Yprescr_min.