22 #ifndef _aspect_geometry_model_ellipsoidal_chunk_h 23 #define _aspect_geometry_model_ellipsoidal_chunk_h 28 #include <deal.II/grid/manifold.h> 33 namespace GeometryModel
50 const double para_semi_major_axis_a,
51 const double para_eccentricity,
52 const double para_semi_minor_axis_b,
53 const double para_bottom_depth,
54 const std::vector<Point<2>> ¶_corners);
68 pull_back(
const Point<3> &space_point)
const override;
76 pull_back(
const Point<2> &space_point)
const;
85 push_forward(
const Point<3> &chart_point)
const override;
91 Point<3> pull_back_ellipsoid (
const Point<3> &x,
const double semi_major_axis_a,
const double eccentricity)
const;
97 Point<3> push_forward_ellipsoid (
const Point<3> &phi_theta_d,
const double semi_major_axis_a,
const double eccentricity)
const;
102 std::unique_ptr<Manifold<dim,3>>
103 clone()
const override;
110 Point<3> push_forward_topography (
const Point<3> &phi_theta_d_hat)
const;
116 Point<3> pull_back_topography (
const Point<3> &phi_theta_d)
const;
154 create_coarse_mesh(parallel::distributed::Triangulation<dim> &coarse_grid)
const override;
161 length_scale()
const override;
177 depth(
const Point<dim> &position)
const override;
184 height_above_reference_surface(
const Point<dim> &position)
const override;
190 representative_point(
const double depth)
const override;
198 point_is_in_domain(
const Point<dim> &point)
const override;
205 maximal_depth()
const override;
216 std::set<types::boundary_id>
217 get_used_boundary_indicators()
const override;
222 std::map<std::string,types::boundary_id>
223 get_symbolic_boundary_names_map()
const override;
238 std::array<double,dim> cartesian_to_natural_coordinates(
const Point<dim> &position)
const override;
245 Point<dim> natural_to_cartesian_coordinates(
const std::array<double,dim> &position)
const override;
259 parse_parameters(ParameterHandler &prm)
override;
265 get_radius(
const Point<dim> &position)
const;
271 get_semi_minor_axis_b()
const;
277 get_semi_major_axis_a()
const;
284 get_eccentricity()
const;
294 const std::vector<Point<2>> &
302 get_manifold()
const;
337 std::unique_ptr<const internal::EllipsoidalChunkGeometry<dim>>
manifold;
340 set_boundary_ids(parallel::distributed::Triangulation<dim> &coarse_grid)
const;
double para_to_rect_angle
void declare_parameters(ParameterHandler &prm)
const double semi_major_axis_a
const double bottom_depth
const InitialTopographyModel::Interface< dim > * topography
unsigned int depth_subdiv
const std::vector< Point< 2 > > corners
double rotation_longitude
std::unique_ptr< const internal::EllipsoidalChunkGeometry< dim > > manifold
const double eccentricity
const double semi_minor_axis_b
std::vector< Point< 2 > > corners
double rot_para_to_para_angle