ASPECT
two_merged_chunks.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2011 - 2021 by the authors of the ASPECT code.
3 
4  This file is part of ASPECT.
5 
6  ASPECT is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2, or (at your option)
9  any later version.
10 
11  ASPECT is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with ASPECT; see the file LICENSE. If not see
18  <http://www.gnu.org/licenses/>.
19 */
20 
21 
22 #ifndef _aspect_geometry_model_two_merged_chunks_h
23 #define _aspect_geometry_model_two_merged_chunks_h
24 
28 #include <aspect/compat.h>
29 
30 #include <deal.II/grid/manifold.h>
31 #include <deal.II/base/function_lib.h>
32 
33 namespace aspect
34 {
35  namespace GeometryModel
36  {
37  using namespace dealii;
38 
39 
64  template <int dim>
65  class TwoMergedChunks : public Interface<dim>, public SimulatorAccess<dim>
66  {
67  public:
68 
77  void initialize () override;
78 
83  void set_topography_model (const InitialTopographyModel::Interface<dim> *topo_pointer);
84 
88  void create_coarse_mesh (parallel::distributed::Triangulation<dim> &coarse_grid) const override;
89 
100  std::set<types::boundary_id>
101  get_used_boundary_indicators () const override;
102 
110  std::map<std::string,types::boundary_id>
111  get_symbolic_boundary_names_map () const override;
112 
123  double length_scale () const override;
124 
138  double depth(const Point<dim> &position) const override;
139 
144  double height_above_reference_surface(const Point<dim> &position) const override;
145 
149  Point<dim> representative_point(const double depth) const override;
150 
164  double depth_wrt_topo(const Point<dim> &position) const;
165 
170  virtual
171  double west_longitude() const;
172 
177  virtual
178  double east_longitude() const;
179 
183  virtual
184  double longitude_range() const;
185 
190  virtual
191  double south_latitude() const;
192 
197  virtual
198  double north_latitude() const;
199 
203  virtual
204  double latitude_range() const;
205 
210  double maximal_depth() const override;
211 
215  virtual
216  double inner_radius() const;
217 
221  virtual
222  double outer_radius() const;
223 
224 
230  bool
231  has_curved_elements() const override;
232 
238  bool
239  point_is_in_domain(const Point<dim> &point) const override;
240 
245  aspect::Utilities::Coordinates::CoordinateSystem natural_coordinate_system() const override;
246 
252  std::array<double,dim> cartesian_to_natural_coordinates(const Point<dim> &position) const override;
253 
259  Point<dim> natural_to_cartesian_coordinates(const std::array<double,dim> &position) const override;
260 
264  static
265  void
266  declare_parameters (ParameterHandler &prm);
267 
271  void
272  parse_parameters (ParameterHandler &prm) override;
273 
274  private:
280  Point<dim> point1;
281 
287  Point<dim> point2;
288 
294  Point<dim> point3;
295 
301  Point<dim> point4;
302 
307  std::vector<unsigned int> lower_repetitions;
308  std::vector<unsigned int> upper_repetitions;
309 
314 
318  virtual void set_boundary_indicators (parallel::distributed::Triangulation<dim> &triangulation) const;
319  };
320  }
321 }
322 
323 
324 #endif
std::vector< unsigned int > upper_repetitions
std::vector< unsigned int > lower_repetitions
void declare_parameters(ParameterHandler &prm)
internal::ChunkGeometry< dim > manifold
Definition: compat.h:88