WaveBEM: Unsteady Nonlinear Potential Flow Solver for Ship-Wave Interaction.
driver.cc
Go to the documentation of this file.
1 #include "../include/driver.h"
2 
3 
4 
5 
6 template <int dim>
7 Driver<dim>::Driver(int argc, char **argv) :
8  computational_domain(1,1),
9  fma(computational_domain),
10  bem_problem(computational_domain, fma),
11  free_surface(computational_domain, bem_problem),
12  dae_time_int(free_surface),
13  prm()
14 {
15 
16  // Declare the parameter entries..
18 
19  deallog.depth_console(3);
20 
21  std::list<std::string> args;
22  for (int i=0; i<argc; ++i)
23  args.push_back (argv[i]);
24 
25  std::string default_prm;
26  // The default parameter file is the name of the application plus prm
27  default_prm = args.back() + ".prm";
28 
29  prm.read_input(default_prm, false, true);
30 
31  // Now that we have the final version of the parameters, parse them.
33 
34  // And write the used ones.
35  default_prm = args.front() + "_used.prm";
36  ofstream outprm(default_prm.c_str());
38 }
39 
40 template <int dim>
42 {}
43 
44 
45 template <int dim>
47 {
48 
49  computational_domain.read_domain();
50  Vector<double> y, yp, res, diff_compos,sys_comp;
51  if (free_surface.initial_condition_from_dump)
52  {
53  free_surface.restore_solution(y, yp,
54  free_surface.restore_filename);
55  bem_problem.reinit();
56  free_surface.reinit();
57  }
58  else
59  {
60  computational_domain.refine_and_resize();
61  bem_problem.reinit();
62  free_surface.reinit();
63  y.reinit(free_surface.n_dofs());
64  diff_compos.reinit(free_surface.n_dofs());
65  diff_compos = free_surface.differential_components();
66  sys_comp = free_surface.sys_comp;
67  free_surface.initial_conditions(y);
68  yp.reinit(free_surface.n_dofs());
69  res.reinit(free_surface.n_dofs());
70  }
71 
72  free_surface.prepare_restart(0, y, yp);
73 //computational_domain.generate_octree_blocking();
74 
75  dae_time_int.start_ode(y, yp, maxNumSteps);
76 
77 
78  cout<<"Number of rhs evaluations is "<<free_surface.Rhs_evaluations_counter()<<endl; //*/
79 
80 }
81 
82 template <int dim>
84 {
85  prm.declare_entry("Maximum number of steps", "1", Patterns::Integer());
86  computational_domain.declare_parameters(prm);
87  free_surface.declare_parameters(prm);
88  dae_time_int.declare_parameters(prm);
89  bem_problem.declare_parameters(prm);
90  fma.declare_parameters(prm);
91 }
92 
93 template <int dim>
95 {
96  maxNumSteps = prm.get_integer("Maximum number of steps");
97  computational_domain.parse_parameters(prm);
98  free_surface.parse_parameters(prm);
99  dae_time_int.parse_parameters(prm);
100  bem_problem.parse_parameters(prm);
101  fma.parse_parameters(prm);
102 }
103 
104 
105 template class Driver<3>;
Driver(int argc, char **argv)
Definition: driver.cc:7
void run()
Definition: driver.cc:46
void DeclareParameters()
Definition: driver.cc:83
ParameterHandler prm
Definition: driver.h:57
void ParseParameters()
Definition: driver.cc:94
Definition: driver.h:28
~Driver()
Definition: driver.cc:41
std::ostream & print_parameters(std::ostream &out, const OutputStyle style)
virtual void reinit(const size_type N, const bool omit_zeroing_entries=false)
virtual bool read_input(std::istream &input, const std::string &filename="input file", const std::string &last_line="")