Public Member Functions | Public Attributes | 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 (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) 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)
 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) 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...
 

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

Detailed Description

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

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

Single fluid free surface problem in a rectangular domain which is periodic in the x direction

Definition at line 92 of file elastic_single_layer.cc.

Constructor & Destructor Documentation

◆ InterfaceProblem() [1/2]

template<class ELEMENT , class TIMESTEPPER >
InterfaceProblem< ELEMENT, TIMESTEPPER >::InterfaceProblem ( const unsigned &  n_x,
const unsigned &  n_y,
const double &  l_x,
const double &  h 
)

◆ ~InterfaceProblem() [1/2]

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

Destructor (empty)

Definition at line 104 of file elastic_single_layer.cc.

◆ InterfaceProblem() [2/2]

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

◆ ~InterfaceProblem() [2/2]

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

Destructor (empty)

Definition at line 95 of file spine_single_layer.cc.

Member Function Documentation

◆ 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 124 of file elastic_single_layer.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 131 of file spine_single_layer.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 128 of file elastic_single_layer.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 121 of file spine_single_layer.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 121 of file elastic_single_layer.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 127 of file spine_single_layer.cc.

◆ deform_free_surface() [1/2]

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

Deform the mesh/free surface to a prescribed function.

Definition at line 403 of file elastic_single_layer.cc.

◆ deform_free_surface() [2/2]

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

Deform the mesh/free surface to a prescribed function.

◆ 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 432 of file elastic_single_layer.cc.

◆ doc_solution() [2/2]

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

Doc the solution.

◆ set_boundary_conditions() [1/2]

template<class ELEMENT , class TIMESTEPPER >
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 366 of file elastic_single_layer.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 336 of file elastic_single_layer.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 484 of file elastic_single_layer.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 >
ElasticRectangularQuadMesh<ELEMENT>* InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt
private

Pointer to the (specific) "bulk" mesh.

Definition at line 137 of file elastic_single_layer.cc.

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

◆ Bulk_mesh_pt [2/2]

template<class ELEMENT , class TIMESTEPPER >
SingleLayerSpineMesh<ELEMENT>* InterfaceProblem< ELEMENT, TIMESTEPPER >::Bulk_mesh_pt

The bulk fluid mesh, complete with spines and update information.

Definition at line 110 of file spine_single_layer.cc.

◆ Constitutive_law_pt

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

◆ Lx

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

Width of domain.

Definition at line 146 of file elastic_single_layer.cc.

◆ Surface_mesh_pt

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

Pointer to the "surface" mesh.

The mesh that contains the free surface elements.

Definition at line 140 of file elastic_single_layer.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 149 of file elastic_single_layer.cc.


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