ASPECT
Public Member Functions | Private Member Functions | Private Attributes | List of all members
aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim > Class Template Reference
Inheritance diagram for aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >:
Inheritance graph
[legend]

Public Member Functions

 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
 
- Public Member Functions inherited from aspect::SphericalManifold< dim >
 SphericalManifold (const Point< dim > center=Point< dim >())
 

Private Member Functions

double topography_for_point (const Point< dim > &x_y_z) const
 

Private Attributes

const InitialTopographyModel::Interface< dim > * topo
 
const double R0
 
const double R1
 

Additional Inherited Members

- Public Attributes inherited from aspect::SphericalManifold< dim >
const Point< dim > center
 

Detailed Description

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.

Constructor & Destructor Documentation

§ SphericalManifoldWithTopography() [1/2]

template<int dim>
aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::SphericalManifoldWithTopography ( const InitialTopographyModel::Interface< dim > &  topography,
const double  inner_radius,
const double  outer_radius 
)

Constructor.

§ SphericalManifoldWithTopography() [2/2]

Copy constructor.

Member Function Documentation

§ clone()

template<int dim>
virtual std::unique_ptr<Manifold<dim, dim> > aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::clone ( ) const
overridevirtual

Make a clone of this Manifold object.

Reimplemented from aspect::SphericalManifold< dim >.

§ push_forward_from_sphere()

template<int dim>
Point<dim> aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::push_forward_from_sphere ( const Point< dim > &  p) const

Given a point in the undeformed spherical geometry, push it forward to the corresponding point in the sphere with surface topography.

§ pull_back_to_sphere()

template<int dim>
Point<dim> aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::pull_back_to_sphere ( const Point< dim > &  p) const

Given a point in the deformed spherical geometry with topography, pull it back to the corresponding point in the undeformed sphere.

§ get_intermediate_point()

template<int dim>
virtual Point<dim> aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::get_intermediate_point ( const Point< dim > &  p1,
const Point< dim > &  p2,
const double  w 
) const
overridevirtual

Given any two points in space, first project them on the surface of a sphere with unit radius, then connect them with a geodesic and find the intermediate point, and finally rescale the final radius so that the resulting one is the convex combination of the starting radii.

Reimplemented from aspect::SphericalManifold< dim >.

§ get_tangent_vector()

template<int dim>
virtual Tensor<1, dim> aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::get_tangent_vector ( const Point< dim > &  x1,
const Point< dim > &  x2 
) const
overridevirtual

Compute the derivative of the get_intermediate_point() function with parameter w equal to zero.

Reimplemented from aspect::SphericalManifold< dim >.

§ normal_vector()

template<int dim>
virtual Tensor<1, dim> aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::normal_vector ( const typename Triangulation< dim, dim >::face_iterator &  face,
const Point< dim > &  p 
) const
overridevirtual

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 >.

§ get_normals_at_vertices()

template<int dim>
virtual void aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::get_normals_at_vertices ( const typename Triangulation< dim, dim >::face_iterator &  face,
typename Manifold< dim, dim >::FaceVertexNormals &  face_vertex_normals 
) const
overridevirtual

Compute the normal vectors to the boundary at each vertex.

Reimplemented from aspect::SphericalManifold< dim >.

§ get_new_points()

template<int dim>
virtual void aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::get_new_points ( const ArrayView< const Point< dim >> &  surrounding_points,
const Table< 2, double > &  weights,
ArrayView< Point< dim >>  new_points 
) const
overridevirtual

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 >.

§ get_new_point()

template<int dim>
virtual Point<dim> aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::get_new_point ( const ArrayView< const Point< dim >> &  vertices,
const ArrayView< const double > &  weights 
) const
overridevirtual

Return a point on the spherical manifold which is intermediate with respect to the surrounding points.

Reimplemented from aspect::SphericalManifold< dim >.

§ topography_for_point()

template<int dim>
double aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::topography_for_point ( const Point< dim > &  x_y_z) const
private

Return the topography of the surface directly above the point given by the coordinates stored in the argument.

Member Data Documentation

§ topo

A pointer to the topography model.

Definition at line 157 of file spherical_shell.h.

§ R0

template<int dim>
const double aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::R0
private

Inner and outer radii of the spherical shell.

Definition at line 162 of file spherical_shell.h.

§ R1

template<int dim>
const double aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >::R1
private

Definition at line 162 of file spherical_shell.h.


The documentation for this class was generated from the following file: