GeometryMap

Trait GeometryMap 

Source
pub trait GeometryMap {
    type T: Scalar;

    // Required methods
    fn entity_topology_dimension(&self) -> usize;
    fn geometry_dimension(&self) -> usize;
    fn point_count(&self) -> usize;
    fn physical_points(&self, entity_index: usize, points: &mut [Self::T]);
    fn jacobians(&self, entity_index: usize, jacobians: &mut [Self::T]);
    fn jacobians_dets_normals(
        &self,
        entity_index: usize,
        jacobians: &mut [Self::T],
        jdets: &mut [Self::T],
        normals: &mut [Self::T],
    );
}
Expand description

A geometry map allows the computation of maps from reference to physical space and their derivatives.

A geometry map is typically initialised with a number of points on a reference entity. We can then for each physical entity compute

  • The associated physical points as maps from the reference points.
  • The jacobian of the map at the physical points.
  • The jacobians, transformation determinants and the normals of the physical entity.

Required Associated Types§

Source

type T: Scalar

Scalar type

Required Methods§

Source

fn entity_topology_dimension(&self) -> usize

The topoloical dimension of the entity being mapped.

The topological dimension is e.g. two for a triangle, independent of whether it is embedded in two or three dimensional space.

Source

fn geometry_dimension(&self) -> usize

The geometric dimension of the physical space.

Source

fn point_count(&self) -> usize

The number of reference points that this map uses.

Source

fn physical_points(&self, entity_index: usize, points: &mut [Self::T])

Write the physical points for the entity with index entity_index into points

points should have shape [geometry_dimension, npts] and use column-major ordering.

Source

fn jacobians(&self, entity_index: usize, jacobians: &mut [Self::T])

Write the jacobians at the physical points for the entity with index entity_index into jacobians

jacobians should have shape [geometry_dimension, entity_topology_dimension, npts] and use column-major ordering

Source

fn jacobians_dets_normals( &self, entity_index: usize, jacobians: &mut [Self::T], jdets: &mut [Self::T], normals: &mut [Self::T], )

Write the jacobians, their determinants, and the normals at the physical points for the entity with index entity_index into jacobians, jdets and normals.

jacobians should have shape [geometry_dimension, entity_topology_dimension, npts] and use column-major ordering; jdets should have shape [npts]; normals should have shape [geometry_dimension, npts] and use column-major ordering

Implementors§

Source§

impl<T: Scalar, B2D: ValueArrayImpl<T, 2>, C2D: ValueArrayImpl<usize, 2>> GeometryMap for GeometryMap<'_, T, B2D, C2D>

Source§

type T = T