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
76 set_manifold_parameters(
const double para_semi_major_axis_a,
77 const double para_eccentricity,
78 const double para_semi_minor_axis_b,
79 const double para_bottom_depth,
80 const std::vector<Point<2>> ¶_corners);
89 pull_back(
const Point<3> &space_point)
const override;
97 pull_back(
const Point<2> &space_point)
const;
106 push_forward(
const Point<3> &chart_point)
const override;
112 Point<3> pull_back_ellipsoid (
const Point<3> &x,
const double semi_major_axis_a,
const double eccentricity)
const;
118 Point<3> push_forward_ellipsoid (
const Point<3> &phi_theta_d,
const double semi_major_axis_a,
const double eccentricity)
const;
123 std::unique_ptr<Manifold<dim,3>>
124 clone()
const override;
131 Point<3> push_forward_topography (
const Point<3> &phi_theta_d_hat)
const;
137 Point<3> pull_back_topography (
const Point<3> &phi_theta_d)
const;
159 create_coarse_mesh(parallel::distributed::Triangulation<dim> &coarse_grid)
const override;
166 length_scale()
const override;
182 depth(
const Point<dim> &position)
const override;
189 height_above_reference_surface(
const Point<dim> &position)
const override;
195 representative_point(
const double depth)
const override;
203 point_is_in_domain(
const Point<dim> &point)
const override;
210 maximal_depth()
const override;
221 std::set<types::boundary_id>
222 get_used_boundary_indicators()
const override;
227 std::map<std::string,types::boundary_id>
228 get_symbolic_boundary_names_map()
const override;
243 std::array<double,dim> cartesian_to_natural_coordinates(
const Point<dim> &position)
const override;
250 Point<dim> natural_to_cartesian_coordinates(
const std::array<double,dim> &position)
const override;
264 parse_parameters(ParameterHandler &prm)
override;
270 get_radius(
const Point<dim> &position)
const;
276 get_semi_minor_axis_b()
const;
282 get_semi_major_axis_a()
const;
289 get_eccentricity()
const;
299 const std::vector<Point<2>> &
307 get_manifold()
const;
337 set_boundary_ids(parallel::distributed::Triangulation<dim> &coarse_grid)
const;
double para_to_rect_angle
const InitialTopographyModel::Interface< dim > * topography
void declare_parameters(ParameterHandler &prm)
unsigned int depth_subdiv
std::vector< Point< 2 > > corners
double rotation_longitude
std::vector< Point< 2 > > corners
double rot_para_to_para_angle
EllipsoidalChunkGeometry manifold