Public Member Functions | |
InterfaceProblem (const unsigned &n_x, const unsigned &n_y, const double &l_x, const double &h) | |
Constructor for single fluid free surface 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) |
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_x, const unsigned &n_y, const double &l_x, const double &h) | |
~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... | |
Public Attributes | |
SingleLayerSpineMesh< ELEMENT > * | Bulk_mesh_pt |
The bulk fluid mesh, complete with spines and update information. 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 | deform_free_surface (const double &epsilon, const unsigned &n_periods) |
Deform the mesh/free surface to a prescribed function. 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 unsigned &n_periods) |
Deform the mesh/free surface to a prescribed function. More... | |
Private Attributes | |
ElasticRectangularQuadMesh< 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 | Lx |
Width of domain. More... | |
ofstream | Trace_file |
Trace file. More... | |
Single fluid free surface problem in a rectangular domain which is periodic in the x direction
Definition at line 96 of file elastic_single_layer.cc.
InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem | ( | const unsigned & | n_x, |
const unsigned & | n_y, | ||
const double & | l_x, | ||
const double & | h | ||
) |
Constructor for single fluid free surface problem.
Constructor: Pass the number of elements and the lengths of the domain in the x and y directions (h is the height of the fluid layer i.e. the length of the domain in the y direction)
Definition at line 164 of file elastic_single_layer.cc.
References InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt, Global_Physical_Variables::Ca, InterfaceProblem< ELEMENT, TIMESTEPPER >::Constitutive_law_pt, Global_Physical_Variables::G(), Global_Physical_Variables::Nu, Global_Physical_Variables::Re, Global_Physical_Variables::ReInvFr, Global_Physical_Variables::ReSt, InterfaceProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), Global_Physical_Variables::St, and InterfaceProblem< ELEMENT, TIMESTEPPER >::Surface_mesh_pt.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_after_newton_solve().
|
inline |
Destructor (empty)
Definition at line 108 of file elastic_single_layer.cc.
InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem | ( | const unsigned & | n_x, |
const unsigned & | n_y, | ||
const double & | l_x, | ||
const double & | h | ||
) |
Constructor: Pass the number of elements and the lengths of the domain in the x and y directions (h is the height of the fluid layer i.e. the length of the domain in the y direction)
|
inline |
Destructor (empty)
Definition at line 99 of file spine_single_layer.cc.
|
inlineprivate |
No actions required after solve step.
Definition at line 128 of file elastic_single_layer.cc.
|
inlineprivate |
Update after solve can remain empty, because the update is performed automatically after every Newton step.
Definition at line 135 of file spine_single_layer.cc.
References Global_Physical_Variables::Ca, InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface(), InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution(), Global_Physical_Variables::G(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), 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, and InterfaceProblem< ELEMENT, TIMESTEPPER >::unsteady_run().
|
inlineprivate |
Actions before the timestep: For maximum stability, reset the current nodal positions to be the "stress-free" ones.
Definition at line 132 of file elastic_single_layer.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 125 of file spine_single_layer.cc.
|
inlineprivate |
No actions required before solve step.
Definition at line 125 of file elastic_single_layer.cc.
|
inlineprivate |
No actions required before solve step.
Definition at line 131 of file spine_single_layer.cc.
|
private |
Deform the mesh/free surface to a prescribed function.
Definition at line 408 of file elastic_single_layer.cc.
References InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt, and InterfaceProblem< ELEMENT, TIMESTEPPER >::Lx.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_after_newton_solve(), InterfaceProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions(), and InterfaceProblem< ELEMENT, TIMESTEPPER >::unsteady_run().
|
private |
Deform the mesh/free surface to a prescribed function.
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 436 of file elastic_single_layer.cc.
References InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt, InterfaceProblem< ELEMENT, TIMESTEPPER >::Surface_mesh_pt, InterfaceProblem< ELEMENT, TIMESTEPPER >::Trace_file, and InterfaceProblem< ELEMENT, TIMESTEPPER >::unsteady_run().
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_after_newton_solve(), and InterfaceProblem< ELEMENT, TIMESTEPPER >::unsteady_run().
void InterfaceProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions | ( | ) |
Set boundary conditions.
void InterfaceProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions | ( | ) |
Set boundary conditions.
Set boundary conditions: Set both velocity components to zero on the bottom (solid) wall and the horizontal component only to zero on the side (periodic) boundaries.
Definition at line 370 of file elastic_single_layer.cc.
References InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt, and InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface().
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_after_newton_solve(), and 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 340 of file elastic_single_layer.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_after_newton_solve(), and InterfaceProblem< ELEMENT, TIMESTEPPER >::unsteady_run().
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 489 of file elastic_single_layer.cc.
References InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface(), InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution(), InterfaceProblem< ELEMENT, TIMESTEPPER >::set_initial_condition(), and InterfaceProblem< ELEMENT, TIMESTEPPER >::Trace_file.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_after_newton_solve(), InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution(), and main().
SingleLayerSpineMesh<ELEMENT>* InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt |
The bulk fluid mesh, complete with spines and update information.
Definition at line 114 of file spine_single_layer.cc.
|
private |
Pointer to the (specific) "bulk" mesh.
Definition at line 141 of file elastic_single_layer.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface(), InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution(), InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem(), and InterfaceProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions().
|
private |
Definition at line 147 of file elastic_single_layer.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().
|
private |
Width of domain.
Definition at line 150 of file elastic_single_layer.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface().
|
private |
Pointer to the "surface" mesh.
The mesh that contains the free surface elements.
Definition at line 144 of file elastic_single_layer.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution(), and InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().
|
private |
Trace file.
Definition at line 153 of file elastic_single_layer.cc.
Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution(), and InterfaceProblem< ELEMENT, TIMESTEPPER >::unsteady_run().