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... | |
Unstructured Navier-Stokes ALE Problem for a rigid ellipse immersed within a viscous fluid
Definition at line 197 of file jeffery_orbit.cc.
UnstructuredImmersedEllipseProblem< ELEMENT >::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< ELEMENT >::~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().
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.
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.
|
inline |
Reset the boundary conditions when timestepping.
Definition at line 209 of file jeffery_orbit.cc.
|
inline |
Re-apply the no slip condition (imposed indirectly via enslaved velocities)
Definition at line 222 of file jeffery_orbit.cc.
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().
|
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.
|
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().
|
private |
Delete elements that calculate the drag and torque on the boundaries.
Definition at line 1083 of file jeffery_orbit.cc.
|
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().
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().
void UnstructuredImmersedEllipseProblem< ELEMENT >::output_exact_solution | ( | std::ofstream & | output_file | ) |
Output the exact solution.
Definition at line 1187 of file jeffery_orbit.cc.
References Jeffery_Solution::acceleration(), Jeffery_Solution::angle(), and Jeffery_Solution::velocity().
Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::doc_solution().
|
private |
Pin the degrees of freedom associated with the solid bodies.
Definition at line 828 of file jeffery_orbit.cc.
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().
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().
|
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().
|
private |
File to document the exact motion of the centre of gravity.
Definition at line 299 of file jeffery_orbit.cc.
|
private |
File to document the motion of the centre of gravity.
Definition at line 296 of file jeffery_orbit.cc.
|
private |
Internal DocInfo object.
Definition at line 290 of file jeffery_orbit.cc.
|
private |
Mesh of drag elements.
Definition at line 281 of file jeffery_orbit.cc.
|
private |
Pointer to Fluid_mesh.
Definition at line 275 of file jeffery_orbit.cc.
|
private |
Pointers to mesh of Lagrange multiplier elements.
Definition at line 272 of file jeffery_orbit.cc.
|
private |
File to document the norm of the solution (for validation purposes)
Definition at line 293 of file jeffery_orbit.cc.
|
private |
Triangle mesh polygon for outer boundary.
Definition at line 278 of file jeffery_orbit.cc.
|
private |
Mesh of the generalised elements for the rigid bodies.
Definition at line 284 of file jeffery_orbit.cc.
|
private |
Storage for the geom object.
Definition at line 287 of file jeffery_orbit.cc.