Public Member Functions | Private Member Functions | Private Attributes | List of all members
UnstructuredImmersedEllipseProblem< ELEMENT > Class Template Reference
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 enslaved 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 197 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 310 of file jeffery_orbit.cc.

References Problem_Parameter::A, Problem_Parameter::B, Problem_Parameter::Density_ratio, Problem_Parameter::Re, Problem_Parameter::St, and UnstructuredImmersedEllipseProblem< ELEMENT >::~UnstructuredImmersedEllipseProblem().

◆ ~UnstructuredImmersedEllipseProblem()

Destructor.

Destructor that cleans up memory and closes files.

Definition at line 557 of file jeffery_orbit.cc.

References Problem_Parameter::Constitutive_law_pt.

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

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 622 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 601 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 209 of file jeffery_orbit.cc.

◆ 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 enslaved velocities)

Definition at line 222 of file jeffery_orbit.cc.

◆ 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 658 of file jeffery_orbit.cc.

References Problem_Parameter::Constitutive_law_pt, Problem_Parameter::Lambda_sq, Problem_Parameter::Re, and UnstructuredImmersedEllipseProblem< ELEMENT >::set_boundary_velocity().

◆ 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 1010 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 902 of file jeffery_orbit.cc.

References UnstructuredImmersedEllipseProblem< ELEMENT >::delete_lagrange_multiplier_elements().

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

◆ 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 1083 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 985 of file jeffery_orbit.cc.

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

◆ doc_solution()

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

Doc the solution.

Definition at line 1110 of file jeffery_orbit.cc.

References UnstructuredImmersedEllipseProblem< ELEMENT >::output_exact_solution().

◆ output_exact_solution()

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

◆ 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 828 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 741 of file jeffery_orbit.cc.

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

◆ 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 868 of file jeffery_orbit.cc.

References UnstructuredImmersedEllipseProblem< ELEMENT >::create_lagrange_multiplier_elements().

Referenced by main(), and UnstructuredImmersedEllipseProblem< ELEMENT >::unpin_rigid_body().

◆ 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 846 of file jeffery_orbit.cc.

References UnstructuredImmersedEllipseProblem< ELEMENT >::solve_for_consistent_nodal_positions().

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 299 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 296 of file jeffery_orbit.cc.

◆ Doc_info

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

Internal DocInfo object.

Definition at line 290 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 281 of file jeffery_orbit.cc.

◆ Fluid_mesh_pt

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

Pointer to Fluid_mesh.

Definition at line 275 of file jeffery_orbit.cc.

◆ 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 272 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 293 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 278 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 284 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 287 of file jeffery_orbit.cc.


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