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
48 const double para_semi_major_axis_a,
49 const double para_eccentricity,
50 const double para_semi_minor_axis_b,
51 const double para_bottom_depth,
52 const std::vector<Point<2>> ¶_corners);
66 pull_back(
const Point<3> &space_point)
const override;
74 pull_back(
const Point<2> &space_point)
const;
83 push_forward(
const Point<3> &chart_point)
const override;
95 Point<3>
push_forward_ellipsoid (
const Point<3> &phi_theta_d,
const double semi_major_axis_a,
const double eccentricity)
const;
100 std::unique_ptr<Manifold<dim,3>>
101 clone()
const override;
152 create_coarse_mesh(parallel::distributed::Triangulation<dim> &coarse_grid)
const override;
159 length_scale()
const override;
175 depth(
const Point<dim> &position)
const override;
182 height_above_reference_surface(
const Point<dim> &position)
const override;
188 representative_point(
const double depth)
const override;
196 point_is_in_domain(
const Point<dim> &point)
const override;
203 maximal_depth()
const override;
214 std::set<types::boundary_id>
215 get_used_boundary_indicators()
const override;
220 std::map<std::string,types::boundary_id>
221 get_symbolic_boundary_names_map()
const override;
236 std::array<double,dim> cartesian_to_natural_coordinates(
const Point<dim> &position)
const override;
243 Point<dim> natural_to_cartesian_coordinates(
const std::array<double,dim> &position)
const override;
257 parse_parameters(ParameterHandler &prm)
override;
263 get_radius(
const Point<dim> &position)
const;
269 get_semi_minor_axis_b()
const;
275 get_semi_major_axis_a()
const;
282 get_eccentricity()
const;
292 const std::vector<Point<2>> &
300 get_manifold()
const;
335 std::unique_ptr<const internal::EllipsoidalChunkGeometry<dim>>
manifold;
338 set_boundary_ids(parallel::distributed::Triangulation<dim> &coarse_grid)
const;
Point< 3 > push_forward(const Point< 3 > &chart_point) const override
Point< 3 > push_forward_topography(const Point< 3 > &phi_theta_d_hat) const
double para_to_rect_angle
Point< 3 > pull_back(const Point< 3 > &space_point) const override
void declare_parameters(ParameterHandler &prm)
const double semi_major_axis_a
const double bottom_depth
Point< 3 > pull_back_ellipsoid(const Point< 3 > &x, const double semi_major_axis_a, const double eccentricity) const
const InitialTopographyModel::Interface< dim > * topography
unsigned int depth_subdiv
EllipsoidalChunkGeometry(const InitialTopographyModel::Interface< dim > &topography, const double para_semi_major_axis_a, const double para_eccentricity, const double para_semi_minor_axis_b, const double para_bottom_depth, const std::vector< Point< 2 >> ¶_corners)
const std::vector< Point< 2 > > corners
double rotation_longitude
std::unique_ptr< const internal::EllipsoidalChunkGeometry< dim > > manifold
const double eccentricity
std::unique_ptr< Manifold< dim, 3 > > clone() const override
const double semi_minor_axis_b
std::vector< Point< 2 > > corners
Point< 3 > push_forward_ellipsoid(const Point< 3 > &phi_theta_d, const double semi_major_axis_a, const double eccentricity) const
double rot_para_to_para_angle
Point< 3 > pull_back_topography(const Point< 3 > &phi_theta_d) const