|
| SphericalManifoldWithTopography (const InitialTopographyModel::Interface< dim > &topography, const double inner_radius, const double outer_radius) |
|
| SphericalManifoldWithTopography (const SphericalManifoldWithTopography< dim > &)=default |
|
virtual std::unique_ptr< Manifold< dim, dim > > | clone () const override |
|
Point< dim > | push_forward_from_sphere (const Point< dim > &p) const |
|
Point< dim > | pull_back_to_sphere (const Point< dim > &p) const |
|
virtual Point< dim > | get_intermediate_point (const Point< dim > &p1, const Point< dim > &p2, const double w) const override |
|
virtual Tensor< 1, dim > | get_tangent_vector (const Point< dim > &x1, const Point< dim > &x2) const override |
|
virtual Tensor< 1, dim > | normal_vector (const typename Triangulation< dim, dim >::face_iterator &face, const Point< dim > &p) const override |
|
virtual void | get_normals_at_vertices (const typename Triangulation< dim, dim >::face_iterator &face, typename Manifold< dim, dim >::FaceVertexNormals &face_vertex_normals) const override |
|
virtual void | get_new_points (const ArrayView< const Point< dim >> &surrounding_points, const Table< 2, double > &weights, ArrayView< Point< dim >> new_points) const override |
|
virtual Point< dim > | get_new_point (const ArrayView< const Point< dim >> &vertices, const ArrayView< const double > &weights) const override |
|
| SphericalManifold (const Point< dim > center=Point< dim >()) |
|
template<int dim>
class aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >
A description of a manifold that describes a spherical shell with overlaid topography.
Definition at line 41 of file spherical_shell.h.
We fudge here, but for a good reason. What the function is supposed to compute is the normal vector to the surface. This should be the normal to the surface with topography, but instead we return the normal to the undeformed surface – i.e., the radial direction. This is, in particular, used to compute no-flux boundary conditions, for which we want to impose a boundary condition that allows for plate-like motion – that is, we need to allow horizontal motion, even if that is not tangential to the surface along the slopes of mountains or ocean trenches. Using the radial direction, i.e., the normal vector to the undeformed surface (= a radial vector) allows for exactly this.
Reimplemented from aspect::SphericalManifold< dim >.
Compute a new set of points that interpolate between the given points surrounding_points
. weights
is a table with as many columns as surrounding_points.size()
. The number of rows in weights
must match the length of new_points
.
This function is optimized to perform on a collection of new points, by collecting operations that are not dependent on the weights outside of the loop over all new points.
The implementation does not allow for surrounding_points
and new_points
to point to the same array, so make sure to pass different objects into the function.
Reimplemented from aspect::SphericalManifold< dim >.