Axisymmetric two fluid interface problem in a rectangular domain. More...
Public Member Functions | |
InterfaceProblem () | |
Constructor. More... | |
~InterfaceProblem () | |
Destructor (empty) More... | |
void | set_initial_condition () |
Set initial conditions. More... | |
void | set_boundary_conditions () |
Set boundary conditions. More... | |
void | doc_solution (DocInfo &doc_info) |
Document the solution. More... | |
void | unsteady_run (const double &t_max, const double &dt) |
Do unsteady run up to maximum time t_max with given timestep dt. More... | |
InterfaceProblem (const unsigned &n_r, const unsigned &n_z1, const unsigned &n_z2, const double &l_r, const double &h1, const double &h2) | |
Constructor for axisymmetric two fluid interface problem. More... | |
~InterfaceProblem () | |
Destructor (empty) More... | |
void | set_initial_condition () |
Set initial conditions. More... | |
void | set_boundary_conditions () |
Set boundary conditions. More... | |
void | doc_solution (DocInfo &doc_info) |
Doc the solution. More... | |
void | unsteady_run (const double &t_max, const double &dt) |
Do unsteady run up to maximum time t_max with given timestep dt. More... | |
Private Member Functions | |
void | actions_before_newton_solve () |
No actions required before solve step. More... | |
void | actions_after_newton_solve () |
No actions required after solve step. More... | |
void | actions_before_implicit_timestep () |
Actions before the timestep: For maximum stability, reset the current nodal positions to be the "stress-free" ones. More... | |
void | actions_before_adapt () |
Strip off the interface elements before adapting the bulk mesh. More... | |
void | actions_after_adapt () |
Rebuild the mesh of interface elements after adapting the bulk mesh. More... | |
void | create_interface_elements () |
Create the 1d interface elements. More... | |
void | delete_interface_elements () |
Delete the 1d interface elements. More... | |
void | deform_free_surface (const double &epsilon, const double &k) |
Deform the mesh/free surface to a prescribed function. More... | |
void | fix_pressure (const unsigned &e, const unsigned &pdof, const double &pvalue) |
Fix pressure in element e at pressure dof pdof and set to pvalue. More... | |
void | actions_before_newton_convergence_check () |
Spine heights/lengths are unknowns in the problem so their values get corrected during each Newton step. However, changing their value does not automatically change the nodal positions, so we need to update all of them here. More... | |
void | actions_before_newton_solve () |
No actions required before solve step. More... | |
void | actions_after_newton_solve () |
Update after solve can remain empty, because the update is performed automatically after every Newton step. More... | |
void | deform_free_surface (const double &epsilon, const double &k) |
Deform the mesh/free surface to a prescribed function. More... | |
void | fix_pressure (const unsigned &e, const unsigned &pdof, const double &pvalue) |
Fix pressure in element e at pressure dof pdof and set to pvalue. More... | |
Private Attributes | |
ElasticRefineableTwoLayerMesh< ELEMENT > * | Bulk_mesh_pt |
Pointer to the (specific) "bulk" mesh. More... | |
Mesh * | Surface_mesh_pt |
Pointer to the "surface" mesh. More... | |
ConstitutiveLaw * | Constitutive_law_pt |
double | Lr |
Width of domain. More... | |
ofstream | Trace_file |
Trace file. More... | |
TwoLayerSpineMesh< ELEMENT > * | Bulk_mesh_pt |
Pointer to the specific bulk mesh. More... | |
Axisymmetric two fluid interface problem in a rectangular domain.
Definition at line 177 of file elastic_two_layer_interface_axisym.cc.
InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem | ( | ) |
Constructor.
Constructor for axisymmetric two fluid interface problem.
Definition at line 264 of file elastic_two_layer_interface_axisym.cc.
References Global_Physical_Variables::Density_Ratio, Global_Physical_Variables::G(), Global_Physical_Variables::Nu, Global_Physical_Variables::Re, Global_Physical_Variables::ReInvFr, Global_Physical_Variables::ReSt, and Global_Physical_Variables::Viscosity_Ratio.
|
inline |
Destructor (empty)
Definition at line 186 of file elastic_two_layer_interface_axisym.cc.
InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem | ( | const unsigned & | n_r, |
const unsigned & | n_z1, | ||
const unsigned & | n_z2, | ||
const double & | l_r, | ||
const double & | h1, | ||
const double & | h2 | ||
) |
Constructor for axisymmetric two fluid interface problem.
Constructor: Pass the number of elements and the width of the domain in the r direction. Also pass the number of elements in the z direction of the bottom (fluid 1) and top (fluid 2) layers, along with the heights of both layers.
Definition at line 180 of file spine_two_layer_interface_axisym.cc.
References InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt, Global_Physical_Variables::Ca, InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface(), Global_Physical_Variables::Density_Ratio, InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution(), InterfaceProblem< ELEMENT, TIMESTEPPER >::fix_pressure(), Global_Physical_Variables::G(), Global_Physical_Variables::Re, Global_Physical_Variables::ReInvFr, Global_Physical_Variables::ReSt, InterfaceProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), InterfaceProblem< ELEMENT, TIMESTEPPER >::set_initial_condition(), Global_Physical_Variables::St, InterfaceProblem< ELEMENT, TIMESTEPPER >::Surface_mesh_pt, InterfaceProblem< ELEMENT, TIMESTEPPER >::Trace_file, InterfaceProblem< ELEMENT, TIMESTEPPER >::unsteady_run(), and Global_Physical_Variables::Viscosity_Ratio.
|
inline |
Destructor (empty)
Definition at line 112 of file spine_two_layer_interface_axisym.cc.
|
private |
Rebuild the mesh of interface elements after adapting the bulk mesh.
Definition at line 541 of file elastic_two_layer_interface_axisym.cc.
|
inlineprivate |
Update after solve can remain empty, because the update is performed automatically after every Newton step.
Definition at line 142 of file spine_two_layer_interface_axisym.cc.
|
inlineprivate |
No actions required after solve step.
Definition at line 206 of file elastic_two_layer_interface_axisym.cc.
|
private |
Strip off the interface elements before adapting the bulk mesh.
Definition at line 525 of file elastic_two_layer_interface_axisym.cc.
|
inlineprivate |
Actions before the timestep: For maximum stability, reset the current nodal positions to be the "stress-free" ones.
Definition at line 210 of file elastic_two_layer_interface_axisym.cc.
|
inlineprivate |
Spine heights/lengths are unknowns in the problem so their values get corrected during each Newton step. However, changing their value does not automatically change the nodal positions, so we need to update all of them here.
Definition at line 132 of file spine_two_layer_interface_axisym.cc.
|
inlineprivate |
No actions required before solve step.
Definition at line 138 of file spine_two_layer_interface_axisym.cc.
|
inlineprivate |
No actions required before solve step.
Definition at line 203 of file elastic_two_layer_interface_axisym.cc.
|
private |
Create the 1d interface elements.
Create interface elements between the two fluids in the mesh pointed to by Bulk_mesh_pt and add the elements to the Mesh object pointed to by Surface_mesh_pt.
Definition at line 581 of file elastic_two_layer_interface_axisym.cc.
References Global_Physical_Variables::Ca, Global_Physical_Variables::St, and Global_Physical_Variables::Viscosity_Ratio.
|
private |
Deform the mesh/free surface to a prescribed function.
|
private |
Deform the mesh/free surface to a prescribed function.
Definition at line 666 of file elastic_two_layer_interface_axisym.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::delete_interface_elements(), and InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().
|
private |
Delete the 1d interface elements.
Delete the interface elements and wipe the surface mesh.
Definition at line 643 of file elastic_two_layer_interface_axisym.cc.
References InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface().
void InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution | ( | DocInfo & | doc_info | ) |
Doc the solution.
void InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution | ( | DocInfo & | doc_info | ) |
Document the solution.
Doc the solution.
Definition at line 699 of file elastic_two_layer_interface_axisym.cc.
References InterfaceProblem< ELEMENT, TIMESTEPPER >::unsteady_run().
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().
|
inlineprivate |
Fix pressure in element e at pressure dof pdof and set to pvalue.
Definition at line 148 of file spine_two_layer_interface_axisym.cc.
|
inlineprivate |
Fix pressure in element e at pressure dof pdof and set to pvalue.
Definition at line 231 of file elastic_two_layer_interface_axisym.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().
void InterfaceProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions | ( | ) |
Set boundary conditions.
void InterfaceProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions | ( | ) |
Set boundary conditions.
Set boundary conditions: Set all velocity components to zero on the top and bottom (solid) walls and the radial and azimuthal components only to zero on the side boundaries.
Definition at line 488 of file elastic_two_layer_interface_axisym.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().
void InterfaceProblem< ELEMENT, TIMESTEPPER >::set_initial_condition | ( | ) |
Set initial conditions.
void InterfaceProblem< ELEMENT, TIMESTEPPER >::set_initial_condition | ( | ) |
Set initial conditions.
Set initial conditions: Set all nodal velocities to zero and initialise the previous velocities and nodal positions to correspond to an impulsive start.
Definition at line 458 of file elastic_two_layer_interface_axisym.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().
void InterfaceProblem< ELEMENT, TIMESTEPPER >::unsteady_run | ( | const double & | t_max, |
const double & | dt | ||
) |
Do unsteady run up to maximum time t_max with given timestep dt.
void InterfaceProblem< ELEMENT, TIMESTEPPER >::unsteady_run | ( | const double & | t_max, |
const double & | dt | ||
) |
Do unsteady run up to maximum time t_max with given timestep dt.
Perform run up to specified time t_max with given timestep dt.
Definition at line 752 of file elastic_two_layer_interface_axisym.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), and main().
|
private |
Pointer to the specific bulk mesh.
Definition at line 165 of file spine_two_layer_interface_axisym.cc.
|
private |
Pointer to the (specific) "bulk" mesh.
Definition at line 241 of file elastic_two_layer_interface_axisym.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().
|
private |
Definition at line 247 of file elastic_two_layer_interface_axisym.cc.
|
private |
Width of domain.
Definition at line 250 of file elastic_two_layer_interface_axisym.cc.
|
private |
Pointer to the "surface" mesh.
Pointer to the surface mesh.
Definition at line 244 of file elastic_two_layer_interface_axisym.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().
|
private |
Trace file.
Definition at line 253 of file elastic_two_layer_interface_axisym.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().