mpi/distribution/circular_driven_cavity/circular_driven_cavity.cc File Reference

Classes

class  QuarterCircleDrivenCavityProblem< ELEMENT >
 

Namespaces

 Global_Physical_Variables
 Global variables.
 

Functions

Vector< doubleGlobal_Physical_Variables::Gravity (2)
 Gravity vector. More...
 
void Global_Physical_Variables::body_force (const double &time, const Vector< double > &x, Vector< double > &result)
 Functional body force. More...
 
void Global_Physical_Variables::zero_body_force (const double &time, const Vector< double > &x, Vector< double > &result)
 Zero functional body force. More...
 
int main (int argc, char **argv)
 Driver for QuarterCircleDrivenCavityProblem test problem. More...
 

Variables

double Global_Physical_Variables::Re_invFr =100
 Reynolds/Froude number. More...
 

Function Documentation

◆ main()

int main ( int argc  ,
char **  argv 
)

Driver for QuarterCircleDrivenCavityProblem test problem.

304 {
305 #ifdef OOMPH_HAS_MPI
306  MPI_Helpers::init(argc,argv);
307 #endif
308 
309  // Set output directory and initialise count
310  DocInfo doc_info;
311  doc_info.set_directory("RESLT");
312  DocInfo mesh_doc_info;
313  mesh_doc_info.set_directory("RESLT_MESH");
314  bool report_stats=false;
315  DocInfo error_doc_info;
316  error_doc_info.set_directory("RESLT_ERROR");
317 
318  // Set max. number of black-box adaptation
319  unsigned max_adapt=3;
320 
321  // Solve problem 1 with Taylor-Hood elements
322  //--------------------------------------------
323  {
324  oomph_info << " " << std::endl
325  << "-----------------------" << std::endl
326  << "-- Running problem 1 --" << std::endl
327  << "-----------------------" << std::endl;
328 
329  // Set up downwards-Gravity vector
332 
333  // Set up Gamma vector for stress-divergence form
336 
337  // Build problem with Gravity vector in stress divergence form,
338  // using zero body force function
341 
342  // output error estimates during solver
343  error_doc_info.number()=0;
344 
345  RefineableMeshBase* mmesh_pt =
346  dynamic_cast<RefineableMeshBase*>(problem.mesh_pt(0));
347 
348  mmesh_pt->doc_info_pt()=&error_doc_info;
349 
350  // Initial solve
351  problem.newton_solve();
352 
353 #ifdef OOMPH_HAS_MPI
354  mesh_doc_info.number()=0;
355  std::ifstream input_file;
356  std::ofstream output_file;
357  char filename[100];
358 
359  // Get the partition to be used from file
360  unsigned n_partition=problem.mesh_pt()->nelement();
361  Vector<unsigned> element_partition(n_partition);
362  sprintf(filename,"circular_cavity_1_partition.dat");
363  input_file.open(filename);
364  std::string input_string;
365  for (unsigned e=0;e<n_partition;e++)
366  {
367  getline(input_file,input_string,'\n');
368  element_partition[e]=atoi(input_string.c_str());
369  }
370 
371  // Distribute the problem and check halo schemes
372  problem.distribute(element_partition,mesh_doc_info,report_stats);
373  problem.check_halo_schemes(mesh_doc_info);
374 
375  oomph_info << "---- Now solve after distribute ----" << std::endl;
376 #endif // (OOMPH_HAS_MPI)
377 
378  // Solve
379  problem.newton_solve(max_adapt);
380 
381  // Step number
382  doc_info.number()=1;
383 
384  //Output solution
385  problem.doc_solution(doc_info);
386 
387  } // end of problem 1
388 
389 
390 
391  // Solve problem 2 with Crouzeix Raviart elements
392  //--------------------------------------------
393  {
394  oomph_info << " " << std::endl
395  << "-----------------------" << std::endl
396  << "-- Running problem 2 --" << std::endl
397  << "-----------------------" << std::endl;
398 
399  // Set up zero-Gravity vector
402 
403  // Set up Gamma vector for simplified form
406 
407  // Build problem with body force function and simplified form,
408  // using body force function
411 
412  // Initial solve
413  problem.newton_solve();
414 
415 #ifdef OOMPH_HAS_MPI
416  std::ifstream input_file;
417  std::ofstream output_file;
418  char filename[100];
419 
420  // Get the partition to be used from file
421  unsigned n_partition=problem.mesh_pt()->nelement();
422  Vector<unsigned> element_partition(n_partition);
423  sprintf(filename,"circular_cavity_2_partition.dat");
424  input_file.open(filename);
425  std::string input_string;
426  for (unsigned e=0;e<n_partition;e++)
427  {
428  getline(input_file,input_string,'\n');
429  element_partition[e]=atoi(input_string.c_str());
430  }
431 
432  // Distribute problem and check halo schemes
433  problem.distribute(element_partition,mesh_doc_info,report_stats);
434  problem.check_halo_schemes(mesh_doc_info);
435 
436  oomph_info << "---- Now solve after distribute ----" << std::endl;
437 #endif // (OOMPH_HAS_MPI)
438 
439  // Solve the problem with automatic adaptation
440  problem.newton_solve(max_adapt);
441 
442  // Step number
443  doc_info.number()=2;
444 
445  // Output solution
446  problem.doc_solution(doc_info);
447 
448  } // end of problem 2
449 
450 #ifdef OOMPH_HAS_MPI
451 // Finalise MPI
452  MPI_Helpers::finalize();
453 #endif
454 
455 } // end_of_main
Array< double, 1, 3 > e(1./3., 0.5, 2.)
Definition: mpi/distribution/circular_driven_cavity/circular_driven_cavity.cc:85
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
Definition: refineable_mesh.h:48
DocInfo *& doc_info_pt()
Access fct for pointer to DocInfo.
Definition: refineable_mesh.h:183
void body_force(const double &time, const Vector< double > &x, Vector< double > &result)
Functional body force.
Definition: mpi/distribution/circular_driven_cavity/circular_driven_cavity.cc:58
double Gravity
Non-dim gravity.
Definition: meshing/quad_from_triangle_mesh/unstructured_two_d_solid.cc:214
void zero_body_force(const double &time, const Vector< double > &x, Vector< double > &result)
Zero functional body force.
Definition: mpi/distribution/circular_driven_cavity/circular_driven_cavity.cc:66
string filename
Definition: MergeRestartFiles.py:39
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

References Global_Physical_Variables::body_force(), oomph::RefineableMeshBase::doc_info_pt(), e(), MergeRestartFiles::filename, Global_Physical_Variables::Gravity, oomph::DocInfo::number(), oomph::oomph_info, problem, oomph::DocInfo::set_directory(), oomph::Global_string_for_annotation::string(), and Global_Physical_Variables::zero_body_force().