ASPECT
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
aspect::MeshDeformation::MeshDeformationHandler< dim > Class Template Reference
Inheritance diagram for aspect::MeshDeformation::MeshDeformationHandler< dim >:
Inheritance graph
[legend]

Public Member Functions

 MeshDeformationHandler (Simulator< dim > &simulator)
 
 ~MeshDeformationHandler ()
 
void initialize ()
 
void update ()
 
void execute ()
 
void setup_dofs ()
 
void parse_parameters (ParameterHandler &prm)
 
const std::map< types::boundary_id, std::vector< std::string > > & get_active_mesh_deformation_names () const
 
const std::map< types::boundary_id, std::vector< std::unique_ptr< Interface< dim > > > > & get_active_mesh_deformation_models () const
 
const std::set< types::boundary_id > & get_active_mesh_deformation_boundary_indicators () const
 
const std::set< types::boundary_id > & get_free_surface_boundary_indicators () const
 
const LinearAlgebra::Vectorget_mesh_displacements () const
 
template<typename MeshDeformationType >
bool has_matching_postprocessor () const
 
template<typename MeshDeformationType >
const MeshDeformationType & get_matching_postprocessor () const
 
 DeclException1 (ExcMeshDeformationNameNotFound, std::string,<< "Could not find entry <"<< arg1<< "> among the names of registered mesh deformation objects.")
 
- Public Member Functions inherited from aspect::SimulatorAccess< dim >
 SimulatorAccess ()
 
 SimulatorAccess (const Simulator< dim > &simulator_object)
 
virtual ~SimulatorAccess ()
 
virtual void initialize_simulator (const Simulator< dim > &simulator_object)
 
template<typename PostprocessorType >
PostprocessorType * find_postprocessor () const
 
const Introspection< dim > & introspection () const
 
const Simulator< dim > & get_simulator () const
 
const Parameters< dim > & get_parameters () const
 
SimulatorSignals< dim > & get_signals () const
 
MPI_Comm get_mpi_communicator () const
 
TimerOutputget_computing_timer () const
 
const ConditionalOStreamget_pcout () const
 
double get_time () const
 
double get_timestep () const
 
double get_old_timestep () const
 
unsigned int get_timestep_number () const
 
unsigned int get_nonlinear_iteration () const
 
const parallel::distributed::Triangulation< dim > & get_triangulation () const
 
double get_volume () const
 
const Mapping< dim > & get_mapping () const
 
std::string get_output_directory () const
 
bool include_adiabatic_heating () const
 
bool include_latent_heat () const
 
bool include_melt_transport () const
 
int get_stokes_velocity_degree () const
 
double get_adiabatic_surface_temperature () const
 
double get_surface_pressure () const
 
bool convert_output_to_years () const
 
unsigned int get_pre_refinement_step () const
 
unsigned int n_compositional_fields () const
 
void get_refinement_criteria (Vector< float > &estimated_error_per_cell) const
 
void get_artificial_viscosity (Vector< float > &viscosity_per_cell, const bool skip_interior_cells=false) const
 
void get_artificial_viscosity_composition (Vector< float > &viscosity_per_cell, const unsigned int compositional_variable) const
 
const LinearAlgebra::BlockVectorget_current_linearization_point () const
 
const LinearAlgebra::BlockVectorget_solution () const
 
const LinearAlgebra::BlockVectorget_old_solution () const
 
const LinearAlgebra::BlockVectorget_old_old_solution () const
 
const LinearAlgebra::BlockVectorget_reaction_vector () const
 
const LinearAlgebra::BlockVectorget_mesh_velocity () const
 
const DoFHandler< dim > & get_dof_handler () const
 
const FiniteElement< dim > & get_fe () const
 
const LinearAlgebra::BlockSparseMatrixget_system_matrix () const
 
const LinearAlgebra::BlockSparseMatrixget_system_preconditioner_matrix () const
 
const MaterialModel::Interface< dim > & get_material_model () const
 
void compute_material_model_input_values (const LinearAlgebra::BlockVector &input_solution, const FEValuesBase< dim, dim > &input_finite_element_values, const typename DoFHandler< dim >::active_cell_iterator &cell, const bool compute_strainrate, MaterialModel::MaterialModelInputs< dim > &material_model_inputs) const
 
const GravityModel::Interface< dim > & get_gravity_model () const
 
const InitialTopographyModel::Interface< dim > & get_initial_topography_model () const
 
const GeometryModel::Interface< dim > & get_geometry_model () const
 
const AdiabaticConditions::Interface< dim > & get_adiabatic_conditions () const
 
bool has_boundary_temperature () const
 
DEAL_II_DEPRECATED const BoundaryTemperature::Interface< dim > & get_boundary_temperature () const
 
const BoundaryTemperature::Manager< dim > & get_boundary_temperature_manager () const
 
const BoundaryHeatFlux::Interface< dim > & get_boundary_heat_flux () const
 
bool has_boundary_composition () const
 
DEAL_II_DEPRECATED const BoundaryComposition::Interface< dim > & get_boundary_composition () const
 
const BoundaryComposition::Manager< dim > & get_boundary_composition_manager () const
 
const std::map< types::boundary_id, std::unique_ptr< BoundaryTraction::Interface< dim > > > & get_boundary_traction () const
 
DEAL_II_DEPRECATED const InitialTemperature::Interface< dim > & get_initial_temperature () const
 
const InitialTemperature::Manager< dim > & get_initial_temperature_manager () const
 
DEAL_II_DEPRECATED const InitialComposition::Interface< dim > & get_initial_composition () const
 
const InitialComposition::Manager< dim > & get_initial_composition_manager () const
 
const std::set< types::boundary_id > & get_fixed_temperature_boundary_indicators () const
 
const std::set< types::boundary_id > & get_fixed_heat_flux_boundary_indicators () const
 
const std::set< types::boundary_id > & get_fixed_composition_boundary_indicators () const
 
const std::set< types::boundary_id > & get_mesh_deformation_boundary_indicators () const
 
const BoundaryVelocity::Manager< dim > & get_boundary_velocity_manager () const
 
const HeatingModel::Manager< dim > & get_heating_model_manager () const
 
const MeshRefinement::Manager< dim > & get_mesh_refinement_manager () const
 
const MeltHandler< dim > & get_melt_handler () const
 
const VolumeOfFluidHandler< dim > & get_volume_of_fluid_handler () const
 
const NewtonHandler< dim > & get_newton_handler () const
 
const WorldBuilder::World & get_world_builder () const
 
const MeshDeformation::MeshDeformationHandler< dim > & get_mesh_deformation_handler () const
 
const LateralAveraging< dim > & get_lateral_averaging () const
 
const ConstraintMatrix & get_current_constraints () const
 
bool simulator_is_past_initialization () const
 
double get_pressure_scaling () const
 
bool pressure_rhs_needs_compatibility_modification () const
 
bool model_has_prescribed_stokes_solution () const
 
TableHandlerget_statistics_object () const
 
template<typename PostprocessorType >
DEAL_II_DEPRECATED PostprocessorType * find_postprocessor () const
 
const Postprocess::Manager< dim > & get_postprocess_manager () const
 

Static Public Member Functions

static void declare_parameters (ParameterHandler &prm)
 
static void register_mesh_deformation (const std::string &name, const std::string &description, void(*declare_parameters_function)(ParameterHandler &), Interface< dim > *(*factory_function)())
 
static void write_plugin_graph (std::ostream &output_stream)
 
- Static Public Member Functions inherited from aspect::SimulatorAccess< dim >
static void get_composition_values_at_q_point (const std::vector< std::vector< double > > &composition_values, const unsigned int q, std::vector< double > &composition_values_at_q_point)
 

Private Member Functions

void make_constraints ()
 
void compute_mesh_displacements ()
 
void interpolate_mesh_velocity ()
 

Private Attributes

std::map< types::boundary_id, std::vector< std::unique_ptr< Interface< dim > > > > mesh_deformation_objects_map
 
Simulator< dim > & sim
 
const FESystem< dim > mesh_deformation_fe
 
DoFHandler< dim > mesh_deformation_dof_handler
 
LinearAlgebra::BlockVector mesh_velocity
 
LinearAlgebra::Vector mesh_displacements
 
LinearAlgebra::Vector fs_mesh_velocity
 
IndexSet mesh_locally_owned
 
IndexSet mesh_locally_relevant
 
ConstraintMatrix mesh_velocity_constraints
 
ConstraintMatrix mesh_vertex_constraints
 
std::set< types::boundary_idtangential_mesh_boundary_indicators
 
std::map< types::boundary_id, std::vector< std::string > > mesh_deformation_boundary_indicators_map
 
std::set< types::boundary_idmesh_deformation_boundary_indicators_set
 
std::set< types::boundary_idfree_surface_boundary_ids
 

Friends

class Simulator< dim >
 
class SimulatorAccess< dim >
 

Detailed Description

template<int dim>
class aspect::MeshDeformation::MeshDeformationHandler< dim >

The MeshDeformationHandler that handles the motion of the surface, the internal nodes and computes the Arbitrary-Lagrangian-Eulerian correction terms.

Definition at line 103 of file simulator.h.

Constructor & Destructor Documentation

§ MeshDeformationHandler()

template<int dim>
aspect::MeshDeformation::MeshDeformationHandler< dim >::MeshDeformationHandler ( Simulator< dim > &  simulator)

Initialize the mesh deformation 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.

§ ~MeshDeformationHandler()

Destructor for the mesh deformation handler.

Member Function Documentation

§ initialize()

template<int dim>
void aspect::MeshDeformation::MeshDeformationHandler< dim >::initialize ( )

Initialization function of the MeshDeformationHandler.

The default implementation of this function does nothing.

§ update()

template<int dim>
void aspect::MeshDeformation::MeshDeformationHandler< dim >::update ( )

Update function of the MeshDeformationHandler. This function allows the individual mesh deformation objects to update.

§ execute()

template<int dim>
void aspect::MeshDeformation::MeshDeformationHandler< dim >::execute ( )

The main execution step for the mesh deformation implementation. This computes the motion of the 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.

§ setup_dofs()

template<int dim>
void aspect::MeshDeformation::MeshDeformationHandler< dim >::setup_dofs ( )

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

§ declare_parameters()

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

Declare parameters for the mesh deformation handling.

§ parse_parameters()

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

Parse parameters for the mesh deformation handling.

§ register_mesh_deformation()

template<int dim>
static void aspect::MeshDeformation::MeshDeformationHandler< dim >::register_mesh_deformation ( const std::string &  name,
const std::string &  description,
void(*)(ParameterHandler &)  declare_parameters_function,
Interface< dim > *(*)()  factory_function 
)
static

A function that is used to register mesh deformation objects in such a way that the Manager can deal with all of them without having to know them by name. This allows the files in which individual plugins are implemented to register these plugins, rather than also having to modify the Manager class by adding the new initial mesh deformation plugin class.

Parameters
nameA string that identifies the mesh deformation model
descriptionA text description of what this model does and that will be listed in the documentation of the parameter file.
declare_parameters_functionA pointer to a function that can be used to declare the parameters that this mesh deformation model wants to read from input files.
factory_functionA pointer to a function that can create an object of this mesh deformation model.

§ get_active_mesh_deformation_names()

template<int dim>
const std::map<types::boundary_id, std::vector<std::string> >& aspect::MeshDeformation::MeshDeformationHandler< dim >::get_active_mesh_deformation_names ( ) const

Return a map of boundary indicators to the names of all mesh deformation models currently used in the computation, as specified in the input file.

§ get_active_mesh_deformation_models()

template<int dim>
const std::map<types::boundary_id,std::vector<std::unique_ptr<Interface<dim> > > >& aspect::MeshDeformation::MeshDeformationHandler< dim >::get_active_mesh_deformation_models ( ) const

Return a map of boundary indicators to vectors of pointers to all mesh deformation models currently used in the computation, as specified in the input file.

§ get_active_mesh_deformation_boundary_indicators()

template<int dim>
const std::set<types::boundary_id>& aspect::MeshDeformation::MeshDeformationHandler< dim >::get_active_mesh_deformation_boundary_indicators ( ) const

Return a set of all the indicators of boundaries with mesh deformation objects on them.

§ get_free_surface_boundary_indicators()

template<int dim>
const std::set<types::boundary_id>& aspect::MeshDeformation::MeshDeformationHandler< dim >::get_free_surface_boundary_indicators ( ) const

Return the boundary id of the surface that has a free surface mesh deformation object. If no free surface is used, an empty set is returned.

§ get_mesh_displacements()

template<int dim>
const LinearAlgebra::Vector& aspect::MeshDeformation::MeshDeformationHandler< dim >::get_mesh_displacements ( ) const

Return the mesh displacements stored on the mesh deformation element.

§ has_matching_postprocessor()

template<int dim>
template<typename MeshDeformationType >
bool aspect::MeshDeformation::MeshDeformationHandler< dim >::has_matching_postprocessor ( ) const
inline

Go through the list of all mesh deformation objects that have been selected in the input file (and are consequently currently active) and return true if one of them has the desired type specified by the template argument.

Definition at line 436 of file interface.h.

§ get_matching_postprocessor()

template<int dim>
template<typename MeshDeformationType >
const MeshDeformationType & aspect::MeshDeformation::MeshDeformationHandler< dim >::get_matching_postprocessor ( ) const
inline

Go through the list of all mesh deformation objects that have been selected in the input file (and are consequently currently active) and see if one of them has the type specified by the template argument or can be casted to that type. If so, return a reference to it. If no postprocessor is active that matches the given type, throw an exception.

Definition at line 454 of file interface.h.

References AssertThrow, ExcMessage(), and aspect::MeshDeformation::get_valid_model_names_pattern().

§ write_plugin_graph()

template<int dim>
static void aspect::MeshDeformation::MeshDeformationHandler< dim >::write_plugin_graph ( std::ostream &  output_stream)
static

For the current plugin subsystem, write a connection graph of all of the plugins we know about, in the format that the programs dot and neato understand. This allows for a visualization of how all of the plugins that ASPECT knows about are interconnected, and connect to other parts of the ASPECT code.

Parameters
output_streamThe stream to write the output to.

§ DeclException1()

template<int dim>
aspect::MeshDeformation::MeshDeformationHandler< dim >::DeclException1 ( ExcMeshDeformationNameNotFound  ,
std::string   
)

Exception.

§ make_constraints()

template<int dim>
void aspect::MeshDeformation::MeshDeformationHandler< 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 surface. Velocities of vertices on the deforming surface are fixed according to the selected deformation plugins. 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. If a no-slip boundary is marked as additional tangential, then vertex velocities are constrained as tangential.

§ compute_mesh_displacements()

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

Solve vector Laplacian equation for internal mesh displacements.

§ interpolate_mesh_velocity()

template<int dim>
void aspect::MeshDeformation::MeshDeformationHandler< 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 426 of file interface.h.

§ SimulatorAccess< dim >

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

Definition at line 427 of file interface.h.

Member Data Documentation

§ mesh_deformation_objects_map

template<int dim>
std::map<types::boundary_id,std::vector<std::unique_ptr<Interface<dim> > > > aspect::MeshDeformation::MeshDeformationHandler< dim >::mesh_deformation_objects_map
private

A map of boundary ids to mesh deformation objects that have been requested in the parameter file.

Definition at line 308 of file interface.h.

§ sim

template<int dim>
Simulator<dim>& aspect::MeshDeformation::MeshDeformationHandler< dim >::sim
private

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

Definition at line 338 of file interface.h.

§ mesh_deformation_fe

template<int dim>
const FESystem<dim> aspect::MeshDeformation::MeshDeformationHandler< dim >::mesh_deformation_fe
private

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

Definition at line 344 of file interface.h.

§ mesh_deformation_dof_handler

template<int dim>
DoFHandler<dim> aspect::MeshDeformation::MeshDeformationHandler< dim >::mesh_deformation_dof_handler
private

DoFHandler for the mesh deformation implementation.

Definition at line 349 of file interface.h.

§ mesh_velocity

template<int dim>
LinearAlgebra::BlockVector aspect::MeshDeformation::MeshDeformationHandler< dim >::mesh_velocity
private

BlockVector which stores the mesh velocity in the Stokes finite element space. This is used for ALE corrections.

Definition at line 356 of file interface.h.

§ mesh_displacements

template<int dim>
LinearAlgebra::Vector aspect::MeshDeformation::MeshDeformationHandler< 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 364 of file interface.h.

§ fs_mesh_velocity

template<int dim>
LinearAlgebra::Vector aspect::MeshDeformation::MeshDeformationHandler< dim >::fs_mesh_velocity
private

Vector for storing the mesh velocity in the mesh deformation 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 mesh deformation 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 374 of file interface.h.

§ mesh_locally_owned

template<int dim>
IndexSet aspect::MeshDeformation::MeshDeformationHandler< dim >::mesh_locally_owned
private

IndexSet for the locally owned DoFs for the mesh system

Definition at line 379 of file interface.h.

§ mesh_locally_relevant

template<int dim>
IndexSet aspect::MeshDeformation::MeshDeformationHandler< dim >::mesh_locally_relevant
private

IndexSet for the locally relevant DoFs for the mesh system

Definition at line 384 of file interface.h.

§ mesh_velocity_constraints

template<int dim>
ConstraintMatrix aspect::MeshDeformation::MeshDeformationHandler< dim >::mesh_velocity_constraints
private

Storage for the mesh velocity constraints for solving the elliptic problem.

Definition at line 390 of file interface.h.

§ mesh_vertex_constraints

template<int dim>
ConstraintMatrix aspect::MeshDeformation::MeshDeformationHandler< dim >::mesh_vertex_constraints
private

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

Definition at line 396 of file interface.h.

§ tangential_mesh_boundary_indicators

template<int dim>
std::set<types::boundary_id> aspect::MeshDeformation::MeshDeformationHandler< 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 407 of file interface.h.

§ mesh_deformation_boundary_indicators_map

template<int dim>
std::map<types::boundary_id, std::vector<std::string> > aspect::MeshDeformation::MeshDeformationHandler< dim >::mesh_deformation_boundary_indicators_map
private

Map from boundary id to a vector of names representing mesh deformation objects.

Definition at line 413 of file interface.h.

§ mesh_deformation_boundary_indicators_set

template<int dim>
std::set<types::boundary_id> aspect::MeshDeformation::MeshDeformationHandler< dim >::mesh_deformation_boundary_indicators_set
private

The set of boundary indicators for which mesh deformation objects are set.

Definition at line 419 of file interface.h.

§ free_surface_boundary_ids

template<int dim>
std::set<types::boundary_id> aspect::MeshDeformation::MeshDeformationHandler< dim >::free_surface_boundary_ids
private

The boundary indicator(s) of the free surface(s).

Definition at line 424 of file interface.h.


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