22 #ifndef _aspect_geometry_model_ellipsoidal_chunk_h
23 #define _aspect_geometry_model_ellipsoidal_chunk_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);
100 std::unique_ptr<Manifold<dim,3>>
106 const std::shared_ptr<const InitialTopographyModel::Interface<dim>>
topography;
214 std::set<types::boundary_id>
220 std::map<std::string,types::boundary_id>
286 const std::vector<Point<2>> &
329 std::unique_ptr<const internal::EllipsoidalChunkGeometry<dim>>
manifold;
std::unique_ptr< const internal::EllipsoidalChunkGeometry< dim > > manifold
std::array< double, dim > cartesian_to_natural_coordinates(const Point< dim > &position) const override
double depth(const Point< dim > &position) const override
double height_above_reference_surface(const Point< dim > &position) const override
double para_to_rect_angle
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
const std::vector< Point< 2 > > & get_corners() const
bool point_is_in_domain(const Point< dim > &point) const override
aspect::Utilities::Coordinates::CoordinateSystem natural_coordinate_system() const override
internal::EllipsoidalChunkGeometry< dim > get_manifold() const
void parse_parameters(ParameterHandler &prm) override
std::vector< Point< 2 > > corners
static void declare_parameters(ParameterHandler &prm)
double maximal_depth() const override
double rot_para_to_para_angle
std::set< types::boundary_id > get_used_boundary_indicators() const override
void set_boundary_ids(parallel::distributed::Triangulation< dim > &coarse_grid) const
double rotation_longitude
unsigned int depth_subdiv
double get_semi_major_axis_a() const
double get_semi_minor_axis_b() const
Point< dim > natural_to_cartesian_coordinates(const std::array< double, dim > &position) const override
Point< dim > representative_point(const double depth) const override
double length_scale() const override
void initialize() override
double get_eccentricity() const
Point< 3 > pull_back_topography(const Point< 3 > &phi_theta_d) const
Point< 3 > push_forward_ellipsoid(const Point< 3 > &phi_theta_d, const double semi_major_axis_a, const double eccentricity) const
Point< 3 > push_forward(const Point< 3 > &chart_point) const override
const double semi_major_axis_a
const double semi_minor_axis_b
EllipsoidalChunkGeometry(const EllipsoidalChunkGeometry &other)=default
Point< 3 > push_forward_topography(const Point< 3 > &phi_theta_d_hat) const
virtual Point< 2 > pull_back(const Point< 2 > &space_point) const
const std::vector< Point< 2 > > corners
const double eccentricity
EllipsoidalChunkGeometry(const std::shared_ptr< 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)
std::unique_ptr< Manifold< dim, 3 > > clone() const override
const double bottom_depth
Point< 3 > pull_back(const Point< 3 > &space_point) const override
const std::shared_ptr< const InitialTopographyModel::Interface< dim > > topography
Point< 3 > pull_back_ellipsoid(const Point< 3 > &x, const double semi_major_axis_a, const double eccentricity) const