ASPECT
Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
aspect::FreeSurfaceHandler< dim > Class Template Reference

Classes

struct  SurfaceAdvection
 

Public Member Functions

 FreeSurfaceHandler (Simulator< dim > &, ParameterHandler &prm)
 
 ~FreeSurfaceHandler ()
 
void execute ()
 
void set_assemblers ()
 
void setup_dofs ()
 
void parse_parameters (ParameterHandler &prm)
 
double get_stabilization_term () const
 

Static Public Member Functions

static void declare_parameters (ParameterHandler &prm)
 

Private Member Functions

void make_constraints ()
 
void project_velocity_onto_boundary (LinearAlgebra::Vector &output)
 
void compute_mesh_displacements ()
 
void interpolate_mesh_velocity ()
 

Private Attributes

Simulator< dim > & sim
 
const FESystem< dim > free_surface_fe
 
DoFHandler< dim > free_surface_dof_handler
 
double free_surface_theta
 
LinearAlgebra::BlockVector mesh_velocity
 
LinearAlgebra::Vector mesh_displacements
 
LinearAlgebra::Vector fs_mesh_velocity
 
IndexSet mesh_locally_owned
 
IndexSet mesh_locally_relevant
 
ConstraintMatrix mesh_displacement_constraints
 
ConstraintMatrix mesh_vertex_constraints
 
SurfaceAdvection::Direction advection_direction
 
std::set< types::boundary_idtangential_mesh_boundary_indicators
 

Friends

class Simulator< dim >
 
class SimulatorAccess< dim >
 

Detailed Description

template<int dim>
class aspect::FreeSurfaceHandler< dim >

Definition at line 55 of file free_surface.h.

Constructor & Destructor Documentation

§ FreeSurfaceHandler()

template<int dim>
aspect::FreeSurfaceHandler< dim >::FreeSurfaceHandler ( Simulator< dim > &  ,
ParameterHandler prm 
)

Initialize the free surface handler, allowing it to read in relevant parameters as well as giving it a reference to the Simulator that owns it, since it needs to make fairly extensive changes to the internals of the simulator.

§ ~FreeSurfaceHandler()

template<int dim>
aspect::FreeSurfaceHandler< dim >::~FreeSurfaceHandler ( )

Destructor for the free surface handler.

Member Function Documentation

§ execute()

template<int dim>
void aspect::FreeSurfaceHandler< dim >::execute ( )

The main execution step for the free surface implementation. This computes the motion of the free surface, moves the boundary nodes accordingly, redistributes the internal nodes in order to preserve mesh regularity, and calculates the Arbitrary- Lagrangian-Eulerian correction terms for advected quantities.

§ set_assemblers()

template<int dim>
void aspect::FreeSurfaceHandler< dim >::set_assemblers ( )

Called by Simulator::set_assemblers() to allow the FreeSurfaceHandler to register its assembler.

§ setup_dofs()

template<int dim>
void aspect::FreeSurfaceHandler< dim >::setup_dofs ( )

Allocates and sets up the members of the FreeSurfaceHandler. This is called by Simulator<dim>::setup_dofs()

§ declare_parameters()

template<int dim>
static void aspect::FreeSurfaceHandler< dim >::declare_parameters ( ParameterHandler prm)
static

Declare parameters for the free surface handling.

§ parse_parameters()

template<int dim>
void aspect::FreeSurfaceHandler< dim >::parse_parameters ( ParameterHandler prm)

Parse parameters for the free surface handling.

§ get_stabilization_term()

template<int dim>
double aspect::FreeSurfaceHandler< dim >::get_stabilization_term ( ) const

Return the chosen stabilization term. See Kaus et al 2010 for details on the meaning of this term.

§ make_constraints()

template<int dim>
void aspect::FreeSurfaceHandler< dim >::make_constraints ( )
private

Set the boundary conditions for the solution of the elliptic problem, which computes the displacements of the internal vertices so that the mesh does not become too distorted due to motion of the free surface. Velocities of vertices on the free surface are set to be the normal of the Stokes velocity solution projected onto that surface. Velocities of vertices on free-slip boundaries are constrained to be tangential to those boundaries. Velocities of vertices on no-slip boundaries are set to be zero.

§ project_velocity_onto_boundary()

template<int dim>
void aspect::FreeSurfaceHandler< dim >::project_velocity_onto_boundary ( LinearAlgebra::Vector output)
private

Project the Stokes velocity solution onto the free surface. Called by make_constraints()

§ compute_mesh_displacements()

template<int dim>
void aspect::FreeSurfaceHandler< dim >::compute_mesh_displacements ( )
private

Solve vector Laplacian equation for internal mesh displacements.

§ interpolate_mesh_velocity()

template<int dim>
void aspect::FreeSurfaceHandler< dim >::interpolate_mesh_velocity ( )
private

Calculate the velocity of the mesh for ALE corrections.

Friends And Related Function Documentation

§ Simulator< dim >

template<int dim>
friend class Simulator< dim >
friend

Definition at line 237 of file free_surface.h.

§ SimulatorAccess< dim >

template<int dim>
friend class SimulatorAccess< dim >
friend

Definition at line 238 of file free_surface.h.

Member Data Documentation

§ sim

template<int dim>
Simulator<dim>& aspect::FreeSurfaceHandler< dim >::sim
private

Reference to the Simulator object to which a FreeSurfaceHandler instance belongs.

Definition at line 144 of file free_surface.h.

§ free_surface_fe

template<int dim>
const FESystem<dim> aspect::FreeSurfaceHandler< dim >::free_surface_fe
private

Finite element for the free surface implementation, which is used for tracking mesh deformation.

Definition at line 150 of file free_surface.h.

§ free_surface_dof_handler

template<int dim>
DoFHandler<dim> aspect::FreeSurfaceHandler< dim >::free_surface_dof_handler
private

DoFHandler for the free surface implementation.

Definition at line 155 of file free_surface.h.

§ free_surface_theta

template<int dim>
double aspect::FreeSurfaceHandler< dim >::free_surface_theta
private

Stabilization parameter for the free surface. Should be between zero and one. A value of zero means no stabilization. See Kaus et. al. 2010 for more details.

Definition at line 163 of file free_surface.h.

§ mesh_velocity

template<int dim>
LinearAlgebra::BlockVector aspect::FreeSurfaceHandler< dim >::mesh_velocity
private

BlockVector which stores the mesh velocity. This is used for ALE corrections.

Definition at line 169 of file free_surface.h.

§ mesh_displacements

template<int dim>
LinearAlgebra::Vector aspect::FreeSurfaceHandler< dim >::mesh_displacements
private

Vector for storing the positions of the mesh vertices. This is used for calculating the mapping from the reference cell to the position of the cell in the deformed mesh. This must be redistributed upon mesh refinement.

Definition at line 177 of file free_surface.h.

§ fs_mesh_velocity

template<int dim>
LinearAlgebra::Vector aspect::FreeSurfaceHandler< dim >::fs_mesh_velocity
private

Vector for storing the mesh velocity in the free surface finite element space, which is, in general, not the same finite element space as the Stokes system. This is used for interpolating the mesh velocity in the free surface finite element space onto the velocity in the Stokes finite element space, which is then used for making the ALE correction in the advection equations.

Definition at line 187 of file free_surface.h.

§ mesh_locally_owned

template<int dim>
IndexSet aspect::FreeSurfaceHandler< dim >::mesh_locally_owned
private

IndexSet for the locally owned DoFs for the mesh system

Definition at line 192 of file free_surface.h.

§ mesh_locally_relevant

template<int dim>
IndexSet aspect::FreeSurfaceHandler< dim >::mesh_locally_relevant
private

IndexSet for the locally relevant DoFs for the mesh system

Definition at line 197 of file free_surface.h.

§ mesh_displacement_constraints

template<int dim>
ConstraintMatrix aspect::FreeSurfaceHandler< dim >::mesh_displacement_constraints
private

Storage for the mesh displacement constraints for solving the elliptic problem

Definition at line 203 of file free_surface.h.

§ mesh_vertex_constraints

template<int dim>
ConstraintMatrix aspect::FreeSurfaceHandler< dim >::mesh_vertex_constraints
private

Storage for the mesh vertex constraints for keeping the mesh conforming upon redistribution.

Definition at line 209 of file free_surface.h.

§ advection_direction

template<int dim>
SurfaceAdvection::Direction aspect::FreeSurfaceHandler< dim >::advection_direction
private

Stores whether to advect the free surface in the normal direction or the direction of the local vertical.

Definition at line 223 of file free_surface.h.

§ tangential_mesh_boundary_indicators

template<int dim>
std::set<types::boundary_id> aspect::FreeSurfaceHandler< dim >::tangential_mesh_boundary_indicators
private

A set of boundary indicators that denote those boundaries that are allowed to move their mesh tangential to the boundary. All boundaries that have tangential material velocity boundary conditions are in this set by default, but it can be extended by open boundaries, boundaries with traction boundary conditions, or boundaries with prescribed material velocities if requested in the parameter file.

Definition at line 235 of file free_surface.h.


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