ASPECT
two_merged_chunks.h
Go to the documentation of this file.
1 // ------------------------------------------------------
2 //
3 // SPDX-License-Identifier: GPL-2.0-or-later
4 //
5 // SPDX-FileCopyrightText: Copyright (C) 2011-2026 by the ASPECT authors.
6 //
7 // This file is part of ASPECT.
8 //
9 // Detailed license information governing the source code and
10 // contributions can be found in the folder LICENSES and in
11 // LICENSE and CONTRIBUTING.md at the top level directory.
12 //
13 // ------------------------------------------------------
14 
15 
16 #ifndef _aspect_geometry_model_two_merged_chunks_h
17 #define _aspect_geometry_model_two_merged_chunks_h
18 
22 
23 #include <deal.II/grid/manifold.h>
25 
26 namespace aspect
27 {
28  namespace GeometryModel
29  {
54  template <int dim>
55  class TwoMergedChunks : public Interface<dim>, public SimulatorAccess<dim>
56  {
57  public:
58 
67  void initialize () override;
68 
72  void create_coarse_mesh (parallel::distributed::Triangulation<dim> &coarse_grid) const override;
73 
84  std::set<types::boundary_id>
85  get_used_boundary_indicators () const override;
86 
94  std::map<std::string,types::boundary_id>
95  get_symbolic_boundary_names_map () const override;
96 
107  double length_scale () const override;
108 
122  double depth(const Point<dim> &position) const override;
123 
128  double height_above_reference_surface(const Point<dim> &position) const override;
129 
133  Point<dim> representative_point(const double depth) const override;
134 
139  virtual
140  double west_longitude() const;
141 
146  virtual
147  double east_longitude() const;
148 
152  virtual
153  double longitude_range() const;
154 
159  virtual
160  double south_latitude() const;
161 
166  virtual
167  double north_latitude() const;
168 
172  virtual
173  double latitude_range() const;
174 
179  double maximal_depth() const override;
180 
184  virtual
185  double inner_radius() const;
186 
190  virtual
191  double outer_radius() const;
192 
193 
199  bool
200  has_curved_elements() const override;
201 
207  bool
208  point_is_in_domain(const Point<dim> &point) const override;
209 
215 
221  std::array<double,dim> cartesian_to_natural_coordinates(const Point<dim> &position) const override;
222 
228  Point<dim> natural_to_cartesian_coordinates(const std::array<double,dim> &position) const override;
229 
233  static
234  void
236 
240  void
241  parse_parameters (ParameterHandler &prm) override;
242 
243  private:
254 
263 
272 
280 
287 
295  std::array<unsigned int, dim> lower_repetitions;
296 
305  std::array<unsigned int, dim> upper_repetitions;
306 
318  std::unique_ptr<const internal::ChunkGeometry<dim>> manifold;
319 
323  static constexpr types::manifold_id my_manifold_id = 15;
324 
329  };
330  }
331 }
332 
333 
334 #endif
virtual double latitude_range() const
virtual double outer_radius() const
Point< dim > representative_point(const double depth) const override
aspect::Utilities::Coordinates::CoordinateSystem natural_coordinate_system() const override
std::array< double, dim > cartesian_to_natural_coordinates(const Point< dim > &position) const override
bool point_is_in_domain(const Point< dim > &point) const override
double length_scale() const override
bool has_curved_elements() const override
virtual double south_latitude() const
static void declare_parameters(ParameterHandler &prm)
virtual double longitude_range() const
virtual double inner_radius() const
virtual double east_longitude() const
virtual double north_latitude() const
static constexpr types::manifold_id my_manifold_id
double maximal_depth() const override
void parse_parameters(ParameterHandler &prm) override
std::array< unsigned int, dim > lower_repetitions
std::unique_ptr< const internal::ChunkGeometry< dim > > manifold
std::array< unsigned int, dim > upper_repetitions
void create_coarse_mesh(parallel::distributed::Triangulation< dim > &coarse_grid) const override
std::map< std::string, types::boundary_id > get_symbolic_boundary_names_map() const override
double depth(const Point< dim > &position) const override
double height_above_reference_surface(const Point< dim > &position) const override
void set_boundary_indicators(parallel::distributed::Triangulation< dim > &triangulation) const
Point< dim > natural_to_cartesian_coordinates(const std::array< double, dim > &position) const override
std::set< types::boundary_id > get_used_boundary_indicators() const override
virtual double west_longitude() const