Public Member Functions | Private Member Functions | Private Attributes | List of all members
UnstructuredImmersedEllipseProblem< ELEMENT > Class Template Reference

//////////////////////////////////////////////////////// //////////////////////////////////////////////////////// More...

Inheritance diagram for UnstructuredImmersedEllipseProblem< ELEMENT >:

Public Member Functions

 UnstructuredImmersedEllipseProblem ()
 Constructor. More...
 
 ~UnstructuredImmersedEllipseProblem ()
 Destructor. More...
 
void actions_before_implicit_timestep ()
 Reset the boundary conditions when timestepping. More...
 
void actions_before_adapt ()
 Wipe the meshes of Lagrange multiplier and drag elements. More...
 
void actions_after_adapt ()
 Rebuild the meshes of Lagrange multiplier and drag elements. More...
 
void actions_before_newton_convergence_check ()
 Re-apply the no slip condition (imposed indirectly via dependent velocities) More...
 
void complete_problem_setup ()
 Set boundary condition, assign auxiliary node update fct. Complete the build of all elements, attach power elements that allow computation of drag vector. More...
 
void set_boundary_velocity ()
 Set the boundary velocity. More...
 
void solve_for_consistent_nodal_positions ()
 Function that solves a simplified problem to ensure that the positions of the boundary nodes are initially consistent with the lagrange multiplier formulation. More...
 
void doc_solution (const bool &project=false)
 Doc the solution. More...
 
void output_exact_solution (std::ofstream &output_file)
 Output the exact solution. More...
 

Private Member Functions

void create_lagrange_multiplier_elements ()
 Create elements that enforce prescribed boundary motion for the pseudo-solid fluid mesh by Lagrange multipliers. More...
 
void delete_lagrange_multiplier_elements ()
 Delete elements that impose the prescribed boundary displacement and wipe the associated mesh. More...
 
void create_drag_elements ()
 Create elements that calculate the drag and torque on the boundaries. More...
 
void delete_drag_elements ()
 Delete elements that calculate the drag and torque on the boundaries. More...
 
void pin_rigid_body ()
 Pin the degrees of freedom associated with the solid bodies. More...
 
void unpin_rigid_body ()
 Unpin the degrees of freedom associated with the solid bodies. More...
 

Private Attributes

SolidMesh * Lagrange_multiplier_mesh_pt
 Pointers to mesh of Lagrange multiplier elements. More...
 
RefineableSolidTriangleMesh< ELEMENT > * Fluid_mesh_pt
 Pointer to Fluid_mesh. More...
 
TriangleMeshPolygon * Outer_boundary_polygon_pt
 Triangle mesh polygon for outer boundary. More...
 
Vector< Mesh * > Drag_mesh_pt
 Mesh of drag elements. More...
 
Mesh * Rigid_body_mesh_pt
 Mesh of the generalised elements for the rigid bodies. More...
 
Vector< GeomObject * > Rigid_body_pt
 Storage for the geom object. More...
 
DocInfo Doc_info
 Internal DocInfo object. More...
 
ofstream Norm_file
 File to document the norm of the solution (for validation purposes) More...
 
ofstream Cog_file
 File to document the motion of the centre of gravity. More...
 
ofstream Cog_exact_file
 File to document the exact motion of the centre of gravity. More...
 

Detailed Description

template<class ELEMENT>
class UnstructuredImmersedEllipseProblem< ELEMENT >

//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////

Unstructured Navier-Stokes ALE Problem for a rigid ellipse immersed within a viscous fluid

Definition at line 193 of file jeffery_orbit.cc.

Constructor & Destructor Documentation

◆ UnstructuredImmersedEllipseProblem()

Constructor.

Constructor: Open output files, construct time steppers, build fluid mesh, immersed rigid body and combine to form the problem.

Definition at line 305 of file jeffery_orbit.cc.

References Problem_Parameter::A, Problem_Parameter::B, Problem_Parameter::Density_ratio, Problem_Parameter::Re, and Problem_Parameter::St.

◆ ~UnstructuredImmersedEllipseProblem()

Destructor.

Destructor that cleans up memory and closes files.

Definition at line 552 of file jeffery_orbit.cc.

References Problem_Parameter::Constitutive_law_pt.

Member Function Documentation

◆ actions_after_adapt()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::actions_after_adapt

Rebuild the meshes of Lagrange multiplier and drag elements.

Actions after adapt: Rebuild the mesh of Lagrange multiplier elements.

Definition at line 618 of file jeffery_orbit.cc.

◆ actions_before_adapt()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::actions_before_adapt

Wipe the meshes of Lagrange multiplier and drag elements.

Actions before adapt: Wipe the mesh of Lagrange multiplier elements.

Definition at line 597 of file jeffery_orbit.cc.

◆ actions_before_implicit_timestep()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::actions_before_implicit_timestep ( )
inline

Reset the boundary conditions when timestepping.

Definition at line 205 of file jeffery_orbit.cc.

References UnstructuredImmersedEllipseProblem< ELEMENT >::set_boundary_velocity().

◆ actions_before_newton_convergence_check()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::actions_before_newton_convergence_check ( )
inline

Re-apply the no slip condition (imposed indirectly via dependent velocities)

Definition at line 218 of file jeffery_orbit.cc.

References UnstructuredImmersedEllipseProblem< ELEMENT >::Fluid_mesh_pt.

◆ complete_problem_setup()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::complete_problem_setup

Set boundary condition, assign auxiliary node update fct. Complete the build of all elements, attach power elements that allow computation of drag vector.

Definition at line 654 of file jeffery_orbit.cc.

References Problem_Parameter::Constitutive_law_pt, Problem_Parameter::Lambda_sq, and Problem_Parameter::Re.

◆ create_drag_elements()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::create_drag_elements
private

Create elements that calculate the drag and torque on the boundaries.

Create elements that calculate the drag and torque on the obstacles in the fluid mesh.

Definition at line 1006 of file jeffery_orbit.cc.

◆ create_lagrange_multiplier_elements()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::create_lagrange_multiplier_elements
private

Create elements that enforce prescribed boundary motion for the pseudo-solid fluid mesh by Lagrange multipliers.

Create elements that impose the prescribed boundary displacement for the pseudo-solid fluid mesh.

Definition at line 897 of file jeffery_orbit.cc.

◆ delete_drag_elements()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::delete_drag_elements
private

Delete elements that calculate the drag and torque on the boundaries.

Definition at line 1079 of file jeffery_orbit.cc.

◆ delete_lagrange_multiplier_elements()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::delete_lagrange_multiplier_elements
private

Delete elements that impose the prescribed boundary displacement and wipe the associated mesh.

Definition at line 980 of file jeffery_orbit.cc.

◆ doc_solution()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::doc_solution ( const bool &  project = false)

Doc the solution.

Definition at line 1106 of file jeffery_orbit.cc.

◆ output_exact_solution()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::output_exact_solution ( std::ofstream &  output_file)

Output the exact solution.

Definition at line 1182 of file jeffery_orbit.cc.

References Jeffery_Solution::acceleration(), Jeffery_Solution::angle(), and Jeffery_Solution::velocity().

◆ pin_rigid_body()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::pin_rigid_body
private

Pin the degrees of freedom associated with the solid bodies.

Definition at line 824 of file jeffery_orbit.cc.

◆ set_boundary_velocity()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::set_boundary_velocity

Set the boundary velocity.

Set the boundary velocity for current and history values.

Definition at line 736 of file jeffery_orbit.cc.

Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::actions_before_implicit_timestep().

◆ solve_for_consistent_nodal_positions()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::solve_for_consistent_nodal_positions

Function that solves a simplified problem to ensure that the positions of the boundary nodes are initially consistent with the lagrange multiplier formulation.

Assemble and solve a simplified problem that ensures that the positions of the boundary nodes are consistent with the weak imposition of the displacement boundary conditions on the surface of the ellipse.

Definition at line 863 of file jeffery_orbit.cc.

Referenced by main().

◆ unpin_rigid_body()

template<class ELEMENT >
void UnstructuredImmersedEllipseProblem< ELEMENT >::unpin_rigid_body
private

Unpin the degrees of freedom associated with the solid bodies.

Definition at line 842 of file jeffery_orbit.cc.

Member Data Documentation

◆ Cog_exact_file

template<class ELEMENT >
ofstream UnstructuredImmersedEllipseProblem< ELEMENT >::Cog_exact_file
private

File to document the exact motion of the centre of gravity.

Definition at line 295 of file jeffery_orbit.cc.

◆ Cog_file

template<class ELEMENT >
ofstream UnstructuredImmersedEllipseProblem< ELEMENT >::Cog_file
private

File to document the motion of the centre of gravity.

Definition at line 292 of file jeffery_orbit.cc.

◆ Doc_info

template<class ELEMENT >
DocInfo UnstructuredImmersedEllipseProblem< ELEMENT >::Doc_info
private

Internal DocInfo object.

Definition at line 286 of file jeffery_orbit.cc.

◆ Drag_mesh_pt

template<class ELEMENT >
Vector<Mesh*> UnstructuredImmersedEllipseProblem< ELEMENT >::Drag_mesh_pt
private

Mesh of drag elements.

Definition at line 277 of file jeffery_orbit.cc.

◆ Fluid_mesh_pt

template<class ELEMENT >
RefineableSolidTriangleMesh<ELEMENT>* UnstructuredImmersedEllipseProblem< ELEMENT >::Fluid_mesh_pt
private

◆ Lagrange_multiplier_mesh_pt

template<class ELEMENT >
SolidMesh* UnstructuredImmersedEllipseProblem< ELEMENT >::Lagrange_multiplier_mesh_pt
private

Pointers to mesh of Lagrange multiplier elements.

Definition at line 268 of file jeffery_orbit.cc.

◆ Norm_file

template<class ELEMENT >
ofstream UnstructuredImmersedEllipseProblem< ELEMENT >::Norm_file
private

File to document the norm of the solution (for validation purposes)

Definition at line 289 of file jeffery_orbit.cc.

◆ Outer_boundary_polygon_pt

template<class ELEMENT >
TriangleMeshPolygon* UnstructuredImmersedEllipseProblem< ELEMENT >::Outer_boundary_polygon_pt
private

Triangle mesh polygon for outer boundary.

Definition at line 274 of file jeffery_orbit.cc.

◆ Rigid_body_mesh_pt

template<class ELEMENT >
Mesh* UnstructuredImmersedEllipseProblem< ELEMENT >::Rigid_body_mesh_pt
private

Mesh of the generalised elements for the rigid bodies.

Definition at line 280 of file jeffery_orbit.cc.

◆ Rigid_body_pt

template<class ELEMENT >
Vector<GeomObject*> UnstructuredImmersedEllipseProblem< ELEMENT >::Rigid_body_pt
private

Storage for the geom object.

Definition at line 283 of file jeffery_orbit.cc.


The documentation for this class was generated from the following file: