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

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

Inheritance diagram for InterfaceProblem< ELEMENT, TIMESTEPPER >:

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: 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. 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...
 

Detailed Description

template<class ELEMENT, class TIMESTEPPER>
class InterfaceProblem< ELEMENT, TIMESTEPPER >

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

Axisymmetric two fluid interface problem in a rectangular domain

Definition at line 173 of file elastic_two_layer_interface_axisym.cc.

Constructor & Destructor Documentation

◆ InterfaceProblem() [1/2]

template<class ELEMENT , class TIMESTEPPER >
InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem

◆ ~InterfaceProblem() [1/2]

template<class ELEMENT , class TIMESTEPPER >
InterfaceProblem< ELEMENT, TIMESTEPPER >::~InterfaceProblem ( )
inline

Destructor (empty)

Definition at line 182 of file elastic_two_layer_interface_axisym.cc.

◆ InterfaceProblem() [2/2]

template<class ELEMENT , class TIMESTEPPER >
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: 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.

Constructor for axisymmetric two fluid interface problem.

Definition at line 175 of file spine_two_layer_interface_axisym.cc.

References InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt, Global_Physical_Variables::Ca, Global_Physical_Variables::Density_Ratio, 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(), Global_Physical_Variables::St, InterfaceProblem< ELEMENT, TIMESTEPPER >::Surface_mesh_pt, and Global_Physical_Variables::Viscosity_Ratio.

◆ ~InterfaceProblem() [2/2]

template<class ELEMENT , class TIMESTEPPER >
InterfaceProblem< ELEMENT, TIMESTEPPER >::~InterfaceProblem ( )
inline

Destructor (empty)

Definition at line 108 of file spine_two_layer_interface_axisym.cc.

Member Function Documentation

◆ actions_after_adapt()

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_after_adapt
private

Rebuild the mesh of interface elements after adapting the bulk mesh.

Definition at line 537 of file elastic_two_layer_interface_axisym.cc.

◆ actions_after_newton_solve() [1/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_after_newton_solve ( )
inlineprivate

No actions required after solve step.

Definition at line 202 of file elastic_two_layer_interface_axisym.cc.

◆ actions_after_newton_solve() [2/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_after_newton_solve ( )
inlineprivate

Update after solve can remain empty, because the update is performed automatically after every Newton step.

Definition at line 138 of file spine_two_layer_interface_axisym.cc.

◆ actions_before_adapt()

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_before_adapt
private

Strip off the interface elements before adapting the bulk mesh.

Definition at line 521 of file elastic_two_layer_interface_axisym.cc.

◆ actions_before_implicit_timestep()

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_before_implicit_timestep ( )
inlineprivate

Actions before the timestep: For maximum stability, reset the current nodal positions to be the "stress-free" ones.

Definition at line 206 of file elastic_two_layer_interface_axisym.cc.

◆ actions_before_newton_convergence_check()

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_before_newton_convergence_check ( )
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 128 of file spine_two_layer_interface_axisym.cc.

◆ actions_before_newton_solve() [1/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_before_newton_solve ( )
inlineprivate

No actions required before solve step.

Definition at line 199 of file elastic_two_layer_interface_axisym.cc.

◆ actions_before_newton_solve() [2/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::actions_before_newton_solve ( )
inlineprivate

No actions required before solve step.

Definition at line 134 of file spine_two_layer_interface_axisym.cc.

◆ create_interface_elements()

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::create_interface_elements
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 577 of file elastic_two_layer_interface_axisym.cc.

References Global_Physical_Variables::Ca, Global_Physical_Variables::St, and Global_Physical_Variables::Viscosity_Ratio.

◆ deform_free_surface() [1/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface ( const double &  epsilon,
const double &  k 
)
private

Deform the mesh/free surface to a prescribed function.

Definition at line 661 of file elastic_two_layer_interface_axisym.cc.

◆ deform_free_surface() [2/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::deform_free_surface ( const double &  epsilon,
const double &  k 
)
private

Deform the mesh/free surface to a prescribed function.

◆ delete_interface_elements()

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::delete_interface_elements
private

Delete the 1d interface elements.

Delete the interface elements and wipe the surface mesh.

Definition at line 639 of file elastic_two_layer_interface_axisym.cc.

◆ doc_solution() [1/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution ( DocInfo &  doc_info)

Document the solution.

Doc the solution.

Definition at line 695 of file elastic_two_layer_interface_axisym.cc.

◆ doc_solution() [2/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::doc_solution ( DocInfo &  doc_info)

Doc the solution.

◆ fix_pressure() [1/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::fix_pressure ( const unsigned &  e,
const unsigned &  pdof,
const double &  pvalue 
)
inlineprivate

Fix pressure in element e at pressure dof pdof and set to pvalue.

Definition at line 227 of file elastic_two_layer_interface_axisym.cc.

Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().

◆ fix_pressure() [2/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::fix_pressure ( const unsigned &  e,
const unsigned &  pdof,
const double &  pvalue 
)
inlineprivate

Fix pressure in element e at pressure dof pdof and set to pvalue.

Definition at line 144 of file spine_two_layer_interface_axisym.cc.

◆ set_boundary_conditions() [1/2]

template<class ELEMENT , class TIMESTEPPER >
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 484 of file elastic_two_layer_interface_axisym.cc.

Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().

◆ set_boundary_conditions() [2/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::set_boundary_conditions ( )

Set boundary conditions.

◆ set_initial_condition() [1/2]

template<class ELEMENT , class TIMESTEPPER >
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 454 of file elastic_two_layer_interface_axisym.cc.

◆ set_initial_condition() [2/2]

template<class ELEMENT , class TIMESTEPPER >
void InterfaceProblem< ELEMENT, TIMESTEPPER >::set_initial_condition ( )

Set initial conditions.

◆ unsteady_run() [1/2]

template<class ELEMENT , class TIMESTEPPER >
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 747 of file elastic_two_layer_interface_axisym.cc.

Referenced by main().

◆ unsteady_run() [2/2]

template<class ELEMENT , class TIMESTEPPER >
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.

Member Data Documentation

◆ Bulk_mesh_pt [1/2]

template<class ELEMENT , class TIMESTEPPER >
ElasticRefineableTwoLayerMesh<ELEMENT>* InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt
private

Pointer to the (specific) "bulk" mesh.

Definition at line 237 of file elastic_two_layer_interface_axisym.cc.

Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().

◆ Bulk_mesh_pt [2/2]

template<class ELEMENT , class TIMESTEPPER >
TwoLayerSpineMesh<ELEMENT>* InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt
private

Pointer to the specific bulk mesh.

Definition at line 161 of file spine_two_layer_interface_axisym.cc.

◆ Constitutive_law_pt

template<class ELEMENT , class TIMESTEPPER >
ConstitutiveLaw* InterfaceProblem< ELEMENT, TIMESTEPPER >::Constitutive_law_pt
private

Definition at line 243 of file elastic_two_layer_interface_axisym.cc.

◆ Lr

template<class ELEMENT , class TIMESTEPPER >
double InterfaceProblem< ELEMENT, TIMESTEPPER >::Lr
private

Width of domain.

Definition at line 246 of file elastic_two_layer_interface_axisym.cc.

◆ Surface_mesh_pt

template<class ELEMENT , class TIMESTEPPER >
Mesh * InterfaceProblem< ELEMENT, TIMESTEPPER >::Surface_mesh_pt
private

Pointer to the "surface" mesh.

Pointer to the surface mesh.

Definition at line 240 of file elastic_two_layer_interface_axisym.cc.

Referenced by InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem().

◆ Trace_file

template<class ELEMENT , class TIMESTEPPER >
ofstream InterfaceProblem< ELEMENT, TIMESTEPPER >::Trace_file
private

Trace file.

Definition at line 249 of file elastic_two_layer_interface_axisym.cc.


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