Inherits Manifold< dim, spacedim >.
|
| SphericalManifold (const Point< spacedim > center=Point< spacedim >()) |
|
virtual std::unique_ptr< Manifold< dim, spacedim > > | clone () const override |
|
virtual Point< spacedim > | get_intermediate_point (const Point< spacedim > &p1, const Point< spacedim > &p2, const double w) const override |
|
virtual Tensor< 1, spacedim > | get_tangent_vector (const Point< spacedim > &x1, const Point< spacedim > &x2) const override |
|
virtual Tensor< 1, spacedim > | normal_vector (const typename Triangulation< dim, spacedim >::face_iterator &face, const Point< spacedim > &p) const override |
|
virtual void | get_normals_at_vertices (const typename Triangulation< dim, spacedim >::face_iterator &face, typename Manifold< dim, spacedim >::FaceVertexNormals &face_vertex_normals) const override |
|
virtual void | get_new_points (const ArrayView< const Point< spacedim >> &surrounding_points, const Table< 2, double > &weights, ArrayView< Point< spacedim >> new_points) const override |
|
virtual Point< spacedim > | get_new_point (const ArrayView< const Point< spacedim >> &vertices, const ArrayView< const double > &weights) const override |
|
|
const Point< spacedim > | center |
|
|
std::pair< double, Tensor< 1, spacedim > > | guess_new_point (const ArrayView< const Tensor< 1, spacedim >> &directions, const ArrayView< const double > &distances, const ArrayView< const double > &weights) const |
|
void | do_get_new_points (const ArrayView< const Point< spacedim >> &surrounding_points, const ArrayView< const double > &weights, ArrayView< Point< spacedim >> new_points) const |
|
template<int dim, int spacedim = dim>
class aspect::SphericalManifold< dim, spacedim >
The deal.II class SphericalManifold has a design flaw that made it impossible to derive from the class. This is fixed post-9.5, see https://github.com/dealii/dealii/pull/16242 and https://github.com/dealii/dealii/pull/16248, but we can't use deal.II 9.5 and earlier for this class. The current class here is therefore a copy of the fixed class.
Definition at line 72 of file compat.h.
§ SphericalManifold()
template<int dim, int spacedim = dim>
Constructor.
- Parameters
-
[in] | center | The center of the coordinate system. Defaults to the origin. |
§ clone()
template<int dim, int spacedim = dim>
§ get_intermediate_point()
template<int dim, int spacedim = dim>
virtual Point<spacedim> aspect::SphericalManifold< dim, spacedim >::get_intermediate_point |
( |
const Point< spacedim > & |
p1, |
|
|
const Point< spacedim > & |
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 in aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >.
§ get_tangent_vector()
template<int dim, int spacedim = dim>
virtual Tensor<1, spacedim> aspect::SphericalManifold< dim, spacedim >::get_tangent_vector |
( |
const Point< spacedim > & |
x1, |
|
|
const Point< spacedim > & |
x2 |
|
) |
| const |
|
overridevirtual |
§ normal_vector()
template<int dim, int spacedim = dim>
virtual Tensor<1, spacedim> aspect::SphericalManifold< dim, spacedim >::normal_vector |
( |
const typename Triangulation< dim, spacedim >::face_iterator & |
face, |
|
|
const Point< spacedim > & |
p |
|
) |
| const |
|
overridevirtual |
§ get_normals_at_vertices()
template<int dim, int spacedim = dim>
virtual void aspect::SphericalManifold< dim, spacedim >::get_normals_at_vertices |
( |
const typename Triangulation< dim, spacedim >::face_iterator & |
face, |
|
|
typename Manifold< dim, spacedim >::FaceVertexNormals & |
face_vertex_normals |
|
) |
| const |
|
overridevirtual |
§ get_new_points()
template<int dim, int spacedim = dim>
virtual void aspect::SphericalManifold< dim, spacedim >::get_new_points |
( |
const ArrayView< const Point< spacedim >> & |
surrounding_points, |
|
|
const Table< 2, double > & |
weights, |
|
|
ArrayView< Point< spacedim >> |
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 in aspect::GeometryModel::internal::SphericalManifoldWithTopography< dim >.
§ get_new_point()
template<int dim, int spacedim = dim>
virtual Point<spacedim> aspect::SphericalManifold< dim, spacedim >::get_new_point |
( |
const ArrayView< const Point< spacedim >> & |
vertices, |
|
|
const ArrayView< const double > & |
weights |
|
) |
| const |
|
overridevirtual |
§ guess_new_point()
template<int dim, int spacedim = dim>
std::pair<double, Tensor<1, spacedim> > aspect::SphericalManifold< dim, spacedim >::guess_new_point |
( |
const ArrayView< const Tensor< 1, spacedim >> & |
directions, |
|
|
const ArrayView< const double > & |
distances, |
|
|
const ArrayView< const double > & |
weights |
|
) |
| const |
|
private |
Return a point on the spherical manifold which is intermediate with respect to the surrounding points. This function uses a linear average of the directions to find an estimated point. It returns a pair of radius and direction from the center point to the candidate point.
§ do_get_new_points()
template<int dim, int spacedim = dim>
void aspect::SphericalManifold< dim, spacedim >::do_get_new_points |
( |
const ArrayView< const Point< spacedim >> & |
surrounding_points, |
|
|
const ArrayView< const double > & |
weights, |
|
|
ArrayView< Point< spacedim >> |
new_points |
|
) |
| const |
|
private |
This function provides an internal implementation of the get_new_points() interface.
It computes a new set of points that interpolate between the given points surrounding_points
. weights
is an array view with as many entries as surrounding_points.size()
times new_points.size()
.
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.
§ center
template<int dim, int spacedim = dim>
The center of the spherical coordinate system.
Definition at line 156 of file compat.h.
§ polar_manifold
template<int dim, int spacedim = dim>
A manifold description to be used for get_new_point in 2d.
Definition at line 195 of file compat.h.
The documentation for this class was generated from the following file:
- /home/bob/source/include/aspect/compat.h