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

Public Member Functions

virtual void create_coarse_mesh (parallel::distributed::Triangulation< dim > &coarse_grid) const
 
Point< dim > get_extents () const
 
Point< dim > get_origin () const
 
virtual double length_scale () const
 
virtual double depth (const Point< dim > &position) const
 
virtual Point< dim > representative_point (const double depth) const
 
virtual double maximal_depth () const
 
virtual std::set< types::boundary_idget_used_boundary_indicators () const
 
virtual std::map< std::string, types::boundary_idget_symbolic_boundary_names_map () const
 
virtual std::set< std::pair< std::pair< types::boundary_id, types::boundary_id >, unsigned int > > get_periodic_boundary_pairs () const
 
virtual bool has_curved_elements () const
 
virtual bool point_is_in_domain (const Point< dim > &point) const
 
virtual aspect::Utilities::Coordinates::CoordinateSystem natural_coordinate_system () const
 
virtual std::array< double, dim > cartesian_to_natural_coordinates (const Point< dim > &position) const
 
virtual Point< dim > natural_to_cartesian_coordinates (const std::array< double, dim > &position) const
 
virtual void parse_parameters (ParameterHandler &prm)
 
- Public Member Functions inherited from aspect::GeometryModel::Box< dim >
void initialize ()
 
void topography (typename parallel::distributed::Triangulation< dim > &grid) const
 
Point< dim > add_topography (const Point< dim > &x_y_z) const
 
virtual double height_above_reference_surface (const Point< dim > &position) const
 
- Public Member Functions inherited from aspect::GeometryModel::Interface< dim >
virtual ~Interface ()
 
Utilities::NaturalCoordinate< dim > cartesian_to_other_coordinates (const Point< dim > &position, const Utilities::Coordinates::CoordinateSystem &coordinate_system) const
 
types::boundary_id translate_symbolic_boundary_name_to_id (const std::string &name) const
 
std::vector< types::boundary_idtranslate_symbolic_boundary_names_to_ids (const std::vector< std::string > &names) const
 
std::string translate_id_to_symbol_name (const types::boundary_id boundary_id) const
 
- 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_free_surface_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 FreeSurfaceHandler< dim > & get_free_surface_handler () const
 
const LateralAveraging< dim > & get_lateral_averaging () const
 
const ConstraintMatrix & get_current_constraints () const
 
bool simulator_is_initialized () 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 Public Member Functions inherited from aspect::GeometryModel::Box< dim >
static void declare_parameters (ParameterHandler &prm)
 
- Static Public Member Functions inherited from aspect::GeometryModel::Interface< dim >
static void declare_parameters (ParameterHandler &prm)
 
- 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

virtual void set_boundary_indicators (parallel::distributed::Triangulation< dim > &triangulation) const
 

Private Attributes

Point< dim > extents
 
Point< dim > lower_extents
 
Point< dim > lower_box_origin
 
Point< dim > upper_extents
 
Point< dim > upper_box_origin
 
bool periodic [dim+dim-1]
 
unsigned int lower_repetitions [dim]
 
unsigned int upper_repetitions [dim]
 
double height_lith
 

Detailed Description

template<int dim>
class aspect::GeometryModel::TwoMergedBoxes< dim >

A class that describes a box geometry of certain width, height, and depth (in 3d) and adds two (four in 3D) additional boundary indicators for the lithospheric part of the vertical boundaries.

Definition at line 40 of file two_merged_boxes.h.

Member Function Documentation

§ create_coarse_mesh()

template<int dim>
virtual void aspect::GeometryModel::TwoMergedBoxes< dim >::create_coarse_mesh ( parallel::distributed::Triangulation< dim > &  coarse_grid) const
virtual

Generate a coarse mesh for the geometry described by this class.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ get_extents()

template<int dim>
Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::get_extents ( ) const
virtual

Return a point that denotes the size of the box in each dimension of the domain.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ get_origin()

template<int dim>
Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::get_origin ( ) const
virtual

Return a point that denotes the lower left corner of the box domain.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ length_scale()

template<int dim>
virtual double aspect::GeometryModel::TwoMergedBoxes< dim >::length_scale ( ) const
virtual

Return the typical length scale one would expect of features in this geometry, assuming realistic parameters.

We return 1/100th of the X extent of the box.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ depth()

template<int dim>
virtual double aspect::GeometryModel::TwoMergedBoxes< dim >::depth ( const Point< dim > &  position) const
virtual

Return the depth that corresponds to the given position. The documentation of the base class (see GeometryModel::Interface::depth()) describes in detail how "depth" is interpreted in general.

Computing a depth requires a geometry model to define a "vertical" direction. The current class considers the $(0,1)^T$ vector in 2d (and the $(0,0,1)^T$ vector in 3d) as vertical and considers the "top" boundary as the "surface". In almost all cases one will use a gravity model that also matches these definitions.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ representative_point()

template<int dim>
virtual Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::representative_point ( const double  depth) const
virtual

Returns a representative point for a given depth. Such a point must lie inside the domain for sure (assuming the given depth is valid), but it is not important where exactly in the domain it is. A good choice would be on a middle axis, for example.

The function is used, for example, in computing an initial adiabatic profile. For this, we need to be able to query the density as a function of (adiabatic) pressure and temperature. However, the functions returning the density from the material model also depend on location. Since we are interested only in computing a depth-dependent adiabatic profile without lateral variation, we need to be able to query the density at "representative points" at given depths, without caring too much where exactly that is – but at points that we know for sure are inside the domain.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ maximal_depth()

template<int dim>
virtual double aspect::GeometryModel::TwoMergedBoxes< dim >::maximal_depth ( ) const
virtual

Returns the maximal depth of this geometry.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ get_used_boundary_indicators()

template<int dim>
virtual std::set<types::boundary_id> aspect::GeometryModel::TwoMergedBoxes< dim >::get_used_boundary_indicators ( ) const
virtual

Return the set of boundary indicators that are used by this model. This information is used to determine what boundary indicators can be used in the input file.

This box model uses boundary indicators zero through 2*dim+2*(dim-1)-1, with the first two being the faces perpendicular to the x-axis and the next two perpendicular to the y-axis. In 2D, the next two are perpendicular to the x-axis again. In 3D, two sets of two are added for the boundaries parallel to the z-axis.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ get_symbolic_boundary_names_map()

template<int dim>
virtual std::map<std::string,types::boundary_id> aspect::GeometryModel::TwoMergedBoxes< dim >::get_symbolic_boundary_names_map ( ) const
virtual

Return a mapping from symbolic names of each part of the boundary to the corresponding boundary indicator. This allows users to specify names, not just numbers in their input files when describing which parts of the boundary have to satisfy which boundary conditions.

This geometry returns the map {{"left"->0}, {"right"->1}, {"bottom"->2}, {"top"->3}, {"left lithosphere"->4}, {"right lithosphere"->5}} in 2d, and {{"left"->0}, {"right"->1}, {"front"->2}, {"back"->3}, {"bottom"->4}, {"top"->5}, {"left lithosphere"->6}, {"right lithosphere"->7}, {"front lithosphere"->8}, {"back lithosphere"->9}} in 3d.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ get_periodic_boundary_pairs()

template<int dim>
virtual std::set< std::pair< std::pair<types::boundary_id, types::boundary_id>, unsigned int> > aspect::GeometryModel::TwoMergedBoxes< dim >::get_periodic_boundary_pairs ( ) const
virtual

Return the set of periodic boundaries as described in the input file.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ has_curved_elements()

template<int dim>
virtual bool aspect::GeometryModel::TwoMergedBoxes< dim >::has_curved_elements ( ) const
virtual

If true, the geometry contains cells with boundaries that are not straight and have a deal.II boundary object attached to it. If the return value is false, certain operation can be optimized.The default implementation of this function will return true.

A box has only straight boundaries and cells, so return false.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ point_is_in_domain()

template<int dim>
virtual bool aspect::GeometryModel::TwoMergedBoxes< dim >::point_is_in_domain ( const Point< dim > &  point) const
virtual

Return whether the given point lies within the domain specified by the geometry. This function does not take into account initial or dynamic surface topography.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ natural_coordinate_system()

template<int dim>
virtual aspect::Utilities::Coordinates::CoordinateSystem aspect::GeometryModel::TwoMergedBoxes< dim >::natural_coordinate_system ( ) const
virtual

Returns what the natural coordinate system for this geometry model is.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ cartesian_to_natural_coordinates()

template<int dim>
virtual std::array<double,dim> aspect::GeometryModel::TwoMergedBoxes< dim >::cartesian_to_natural_coordinates ( const Point< dim > &  position) const
virtual

Takes the Cartesian points (x,z or x,y,z) and returns standardized coordinates which are most 'natural' to the geometry model. For a box the results is unchanged and is (x,z) in 2d or (x,y,z) in 3d.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ natural_to_cartesian_coordinates()

template<int dim>
virtual Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::natural_to_cartesian_coordinates ( const std::array< double, dim > &  position) const
virtual

Undoes the action of cartesian_to_natural_coordinates, and turns the coordinate system which is most 'natural' to the geometry model into Cartesian coordinates.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ declare_parameters()

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

Declare the parameters this class takes through input files.

§ parse_parameters()

template<int dim>
virtual void aspect::GeometryModel::TwoMergedBoxes< dim >::parse_parameters ( ParameterHandler prm)
virtual

Read the parameters this class declares from the parameter file.

Reimplemented from aspect::GeometryModel::Box< dim >.

§ set_boundary_indicators()

template<int dim>
virtual void aspect::GeometryModel::TwoMergedBoxes< dim >::set_boundary_indicators ( parallel::distributed::Triangulation< dim > &  triangulation) const
privatevirtual

Bind boundary indicators to child cells after each mesh refinement round.

Member Data Documentation

§ extents

template<int dim>
Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::extents
private

Extent of the whole model domain in x-, y-, and z-direction (in 3d).

Definition at line 193 of file two_merged_boxes.h.

§ lower_extents

template<int dim>
Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::lower_extents
private

Extent of the lower box in x-, y-, and z-direction (in 3d).

Definition at line 198 of file two_merged_boxes.h.

§ lower_box_origin

template<int dim>
Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::lower_box_origin
private

Origin of the lower box in x, y, and z (in 3d) coordinates.

Definition at line 203 of file two_merged_boxes.h.

§ upper_extents

template<int dim>
Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::upper_extents
private

Extent of the upper box in x-, y-, and z-direction (in 3d).

Definition at line 208 of file two_merged_boxes.h.

§ upper_box_origin

template<int dim>
Point<dim> aspect::GeometryModel::TwoMergedBoxes< dim >::upper_box_origin
private

Origin of the upper box in x, y, and z (in 3d) coordinates.

Definition at line 213 of file two_merged_boxes.h.

§ periodic

template<int dim>
bool aspect::GeometryModel::TwoMergedBoxes< dim >::periodic[dim+dim-1]
private

Flag whether the whole domain is periodic in the x-, y-, and z-directions, the x- and y- (in 3d) direction in the lithosphere.

Definition at line 219 of file two_merged_boxes.h.

§ lower_repetitions

template<int dim>
unsigned int aspect::GeometryModel::TwoMergedBoxes< dim >::lower_repetitions[dim]
private

The number of cells in each coordinate direction for the lower box.

Definition at line 224 of file two_merged_boxes.h.

§ upper_repetitions

template<int dim>
unsigned int aspect::GeometryModel::TwoMergedBoxes< dim >::upper_repetitions[dim]
private

The number of cells in each coordinate direction for the upper box.

Definition at line 229 of file two_merged_boxes.h.

§ height_lith

template<int dim>
double aspect::GeometryModel::TwoMergedBoxes< dim >::height_lith
private

The height where the lithospheric part of the vertical boundary begins (so in positive z-direction).

Definition at line 235 of file two_merged_boxes.h.


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