solid/unstructured_solid/unstructured_two_d_solid.cc File Reference
#include "generic.h"
#include "solid.h"
#include "constitutive.h"
#include "meshes/triangle_mesh.h"

Classes

class  ElasticTriangleMesh< ELEMENT >
 Triangle-based mesh upgraded to become a (pseudo-) solid mesh. More...
 
class  UnstructuredSolidProblem< ELEMENT, MESH >
 Unstructured solid problem. More...
 

Namespaces

 Global_Physical_Variables
 Global variables.
 

Functions

void Global_Physical_Variables::gravity (const double &time, const Vector< double > &xi, Vector< double > &b)
 Non-dimensional gravity as body force. More...
 
void Global_Physical_Variables::constant_pressure (const Vector< double > &xi, const Vector< double > &x, const Vector< double > &n, Vector< double > &traction)
 Constant pressure load. More...
 
int main ()
 Demonstrate how to solve an unstructured solid problem. More...
 

Function Documentation

◆ main()

int main ( )

Demonstrate how to solve an unstructured solid problem.

329 {
330  // Label for output
331  DocInfo doc_info;
332 
333  // Output directory
334  doc_info.set_directory("RESLT");
335 
336  // Create generalised Hookean constitutive equations
339 
340  {
341  std::cout << "Running with pure displacement formulation\n";
342 
343  //Set up the problem
345 
346  //Output initial configuration
347  problem.doc_solution(doc_info);
348  doc_info.number()++;
349 
350  // Parameter study
353  double pressure_increment=-1.0e-4;
354 
355  unsigned nstep=2; // 10;
356  for (unsigned istep=0;istep<nstep;istep++)
357  {
358  // Solve the problem
359  problem.newton_solve();
360 
361  //Output solution
362  problem.doc_solution(doc_info);
363  doc_info.number()++;
364 
365  // Bump up suction
366  Global_Physical_Variables::P+=pressure_increment;
367  }
368  } //end_displacement_formulation
369 
370  //Repeat for displacement/pressure formulation
371  {
372  std::cout << "Running with pressure/displacement formulation\n";
373 
374  // Change output directory
375  doc_info.set_directory("RESLT_pres_disp");
376  //Reset doc_info number
377  doc_info.number() = 0;
378 
379  //Set up the problem
381 
382  //Output initial configuration
383  problem.doc_solution(doc_info);
384  doc_info.number()++;
385 
386  // Parameter study
389  double pressure_increment=-1.0e-4;
390 
391  unsigned nstep=2;
392  for (unsigned istep=0;istep<nstep;istep++)
393  {
394  // Solve the problem
395  problem.newton_solve();
396 
397  //Output solution
398  problem.doc_solution(doc_info);
399  doc_info.number()++;
400 
401  // Bump up suction
402  Global_Physical_Variables::P+=pressure_increment;
403  }
404  }
405 
406 
407  //Repeat for displacement/pressure formulation
408  //enforcing incompressibility
409  {
410  std::cout <<
411  "Running with pressure/displacement formulation (incompressible) \n";
412 
413  // Change output directory
414  doc_info.set_directory("RESLT_pres_disp_incomp");
415  //Reset doc_info number
416  doc_info.number() = 0;
417 
418  //Set up the problem
420 
421  //Loop over all elements and set incompressibility flag
422  {
423  const unsigned n_element = problem.mesh_pt()->nelement();
424  for(unsigned e=0;e<n_element;e++)
425  {
426  //Cast the element to the equation base of our 2D elastiticy elements
427  PVDEquationsWithPressure<2> *cast_el_pt =
428  dynamic_cast<PVDEquationsWithPressure<2>*>(
429  problem.mesh_pt()->element_pt(e));
430 
431  //If the cast was successful, it's a bulk element,
432  //so set the incompressibilty flag
433  if(cast_el_pt) {cast_el_pt->set_incompressible();}
434  }
435  }
436 
437 
438  //Output initial configuration
439  problem.doc_solution(doc_info);
440  doc_info.number()++;
441 
442  // Parameter study
445  double pressure_increment=-1.0e-4;
446 
447  unsigned nstep=2;
448  for (unsigned istep=0;istep<nstep;istep++)
449  {
450  // Solve the problem
451  problem.newton_solve();
452 
453  //Output solution
454  problem.doc_solution(doc_info);
455  doc_info.number()++;
456 
457  // Bump up suction
458  Global_Physical_Variables::P+=pressure_increment;
459  }
460  }
461 
462 
463 
464 } // end main
Array< double, 1, 3 > e(1./3., 0.5, 2.)
Unstructured solid problem.
Definition: adaptive_unstructured_two_d_solid.cc:117
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: constitutive_laws.h:699
Definition: solid_elements.h:863
void set_incompressible()
Set the material to be incompressible.
Definition: solid_elements.h:881
double P
Uniform pressure.
Definition: TwenteMeshGluing.cpp:77
double Nu
Poisson's ratio.
Definition: TwenteMeshGluing.cpp:71
ConstitutiveLaw * Constitutive_law_pt
Pointer to constitutive law.
Definition: TwenteMeshGluing.cpp:65
double Gravity
Non-dim gravity.
Definition: meshing/quad_from_triangle_mesh/unstructured_two_d_solid.cc:214
Constructor for SteadyAxisymAdvectionDiffusion problem
Definition: steady_axisym_advection_diffusion.cc:213

References Global_Physical_Variables::Constitutive_law_pt, e(), Global_Physical_Variables::Gravity, Global_Physical_Variables::Nu, oomph::DocInfo::number(), Global_Physical_Variables::P, problem, oomph::DocInfo::set_directory(), and oomph::PVDEquationsWithPressure< DIM >::set_incompressible().