pub struct CiarletElement<T: RlstScalar, M: Map, TGeo: RlstScalar> { /* private fields */ }Expand description
A Ciarlet element
Implementations§
Source§impl<T: RlstScalar, M: Map, TGeo: RlstScalar> CiarletElement<T, M, TGeo>where
DynArray<T, 2>: Inverse<Output = DynArray<T, 2>>,
impl<T: RlstScalar, M: Map, TGeo: RlstScalar> CiarletElement<T, M, TGeo>where
DynArray<T, 2>: Inverse<Output = DynArray<T, 2>>,
Sourcepub fn create(
family_name: String,
cell_type: ReferenceCellType,
degree: usize,
value_shape: Vec<usize>,
polynomial_coeffs: DynArray<T, 3>,
interpolation_points: [Vec<DynArray<TGeo, 2>>; 4],
interpolation_weights: [Vec<DynArray<T, 3>>; 4],
continuity: Continuity,
embedded_superdegree: usize,
map: M,
) -> Self
pub fn create( family_name: String, cell_type: ReferenceCellType, degree: usize, value_shape: Vec<usize>, polynomial_coeffs: DynArray<T, 3>, interpolation_points: [Vec<DynArray<TGeo, 2>>; 4], interpolation_weights: [Vec<DynArray<T, 3>>; 4], continuity: Continuity, embedded_superdegree: usize, map: M, ) -> Self
Create a Ciarlet element.
The majority of users will not wish to use this directly, and should insteal call
the createfunction for one of the following special cases of a general Ciarlet element:
- crate::ciarlet::lagrange::create: Create a new Lagrange element.
- crate::ciarlet::nedelec::create: Create a new Nedelec element.
- crate::ciarlet::raviart_thomas::create: Create a Raviart-Thomas element.
Sourcepub fn continuity(&self) -> Continuity
pub fn continuity(&self) -> Continuity
The continuity of the element
Sourcepub fn interpolation_points(&self) -> &[Vec<DynArray<TGeo, 2>>; 4]
pub fn interpolation_points(&self) -> &[Vec<DynArray<TGeo, 2>>; 4]
The interpolation points
Sourcepub fn interpolation_weights(&self) -> &[Vec<DynArray<T, 3>>; 4]
pub fn interpolation_weights(&self) -> &[Vec<DynArray<T, 3>>; 4]
The interpolation weights
Trait Implementations§
Source§impl<T: RlstScalar, M: Map, TGeo: RlstScalar> Debug for CiarletElement<T, M, TGeo>
impl<T: RlstScalar, M: Map, TGeo: RlstScalar> Debug for CiarletElement<T, M, TGeo>
Source§impl<T: RlstScalar, M: Map, TGeoInternal: RlstScalar> FiniteElement for CiarletElement<T, M, TGeoInternal>
impl<T: RlstScalar, M: Map, TGeoInternal: RlstScalar> FiniteElement for CiarletElement<T, M, TGeoInternal>
Source§type CellType = ReferenceCellType
type CellType = ReferenceCellType
Cell type Read more
Source§fn value_shape(&self) -> &[usize]
fn value_shape(&self) -> &[usize]
The shape of the values returned by functions in $\mathcal{V}$. Read more
Source§fn value_size(&self) -> usize
fn value_size(&self) -> usize
The number of values returned. Read more
Source§fn cell_type(&self) -> ReferenceCellType
fn cell_type(&self) -> ReferenceCellType
The reference cell type, eg one of
Point, Interval, Triangle, etc.Source§fn tabulate<TGeo: RlstScalar, Array2Impl: ValueArrayImpl<TGeo, 2>, Array4MutImpl: MutableArrayImpl<T, 4>>(
&self,
points: &Array<Array2Impl, 2>,
nderivs: usize,
data: &mut Array<Array4MutImpl, 4>,
)
fn tabulate<TGeo: RlstScalar, Array2Impl: ValueArrayImpl<TGeo, 2>, Array4MutImpl: MutableArrayImpl<T, 4>>( &self, points: &Array<Array2Impl, 2>, nderivs: usize, data: &mut Array<Array4MutImpl, 4>, )
Tabulate the values of the basis functions and their derivatives at a set of points Read more
Source§fn tabulate_array_shape(&self, nderivs: usize, npoints: usize) -> [usize; 4]
fn tabulate_array_shape(&self, nderivs: usize, npoints: usize) -> [usize; 4]
Get the required shape for a tabulation array.
Source§impl<T: RlstScalar, M: Map, TGeoInternal: RlstScalar> MappedFiniteElement for CiarletElement<T, M, TGeoInternal>
impl<T: RlstScalar, M: Map, TGeoInternal: RlstScalar> MappedFiniteElement for CiarletElement<T, M, TGeoInternal>
Source§type TransformationType = Transformation
type TransformationType = Transformation
Transformation type Read more
Source§fn lagrange_superdegree(&self) -> usize
fn lagrange_superdegree(&self) -> usize
The smallest degree Lagrange space that contains all possible polynomials of the finite element’s polynomial space. Read more
Source§fn push_forward<TGeo: RlstScalar, Array3GeoImpl: ValueArrayImpl<TGeo, 3>, Array4Impl: ValueArrayImpl<T, 4>, Array4MutImpl: MutableArrayImpl<T, 4>>(
&self,
reference_values: &Array<Array4Impl, 4>,
nderivs: usize,
jacobians: &Array<Array3GeoImpl, 3>,
jacobian_determinants: &[TGeo],
inverse_jacobians: &Array<Array3GeoImpl, 3>,
physical_values: &mut Array<Array4MutImpl, 4>,
)
fn push_forward<TGeo: RlstScalar, Array3GeoImpl: ValueArrayImpl<TGeo, 3>, Array4Impl: ValueArrayImpl<T, 4>, Array4MutImpl: MutableArrayImpl<T, 4>>( &self, reference_values: &Array<Array4Impl, 4>, nderivs: usize, jacobians: &Array<Array3GeoImpl, 3>, jacobian_determinants: &[TGeo], inverse_jacobians: &Array<Array3GeoImpl, 3>, physical_values: &mut Array<Array4MutImpl, 4>, )
Push function values forward to a physical cell. Read more
Source§fn pull_back<TGeo: RlstScalar, Array3GeoImpl: ValueArrayImpl<TGeo, 3>, Array4Impl: ValueArrayImpl<T, 4>, Array4MutImpl: MutableArrayImpl<T, 4>>(
&self,
physical_values: &Array<Array4Impl, 4>,
nderivs: usize,
jacobians: &Array<Array3GeoImpl, 3>,
jacobian_determinants: &[TGeo],
inverse_jacobians: &Array<Array3GeoImpl, 3>,
reference_values: &mut Array<Array4MutImpl, 4>,
)
fn pull_back<TGeo: RlstScalar, Array3GeoImpl: ValueArrayImpl<TGeo, 3>, Array4Impl: ValueArrayImpl<T, 4>, Array4MutImpl: MutableArrayImpl<T, 4>>( &self, physical_values: &Array<Array4Impl, 4>, nderivs: usize, jacobians: &Array<Array3GeoImpl, 3>, jacobian_determinants: &[TGeo], inverse_jacobians: &Array<Array3GeoImpl, 3>, reference_values: &mut Array<Array4MutImpl, 4>, )
Pull function values back to the reference cell. Read more
Source§fn dof_transformation(
&self,
entity: ReferenceCellType,
transformation: Transformation,
) -> Option<&DofTransformation<T>>
fn dof_transformation( &self, entity: ReferenceCellType, transformation: Transformation, ) -> Option<&DofTransformation<T>>
The DOF transformation for a sub-entity.
Source§fn apply_dof_permutations<Type>(&self, data: &mut [Type], cell_orientation: i32)
fn apply_dof_permutations<Type>(&self, data: &mut [Type], cell_orientation: i32)
Apply permutation parts of DOF transformations.
Source§fn apply_dof_transformations(&self, data: &mut [T], cell_orientation: i32)
fn apply_dof_transformations(&self, data: &mut [T], cell_orientation: i32)
Apply non-permutation parts of DOF transformations.
Source§fn physical_value_size(&self, gdim: usize) -> usize
fn physical_value_size(&self, gdim: usize) -> usize
The value size on a physical cell
Source§fn apply_dof_permutations_and_transformations(
&self,
data: &mut [Self::T],
cell_orientation: i32,
)
fn apply_dof_permutations_and_transformations( &self, data: &mut [Self::T], cell_orientation: i32, )
Apply DOF transformations.
Auto Trait Implementations§
impl<T, M, TGeo> Freeze for CiarletElement<T, M, TGeo>where
M: Freeze,
impl<T, M, TGeo> RefUnwindSafe for CiarletElement<T, M, TGeo>
impl<T, M, TGeo> Send for CiarletElement<T, M, TGeo>where
M: Send,
impl<T, M, TGeo> Sync for CiarletElement<T, M, TGeo>where
M: Sync,
impl<T, M, TGeo> Unpin for CiarletElement<T, M, TGeo>
impl<T, M, TGeo> UnwindSafe for CiarletElement<T, M, TGeo>
Blanket Implementations§
§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
Convert the given value into an approximately equivalent representation.
§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Convert the subject into an approximately equivalent representation.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
§impl<T> ConvUtil for T
impl<T> ConvUtil for T
§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
Approximate the subject to a given type with the default scheme.
§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
Approximate the subject to a given type with a specific scheme.
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<Src> TryFrom<Src> for Src
impl<Src> TryFrom<Src> for Src
§impl<Src, Dst> TryInto<Dst> for Srcwhere
Dst: TryFrom<Src>,
impl<Src, Dst> TryInto<Dst> for Srcwhere
Dst: TryFrom<Src>,
§impl<Src> ValueFrom<Src> for Src
impl<Src> ValueFrom<Src> for Src
§fn value_from(src: Src) -> Result<Src, <Src as ValueFrom<Src>>::Err>
fn value_from(src: Src) -> Result<Src, <Src as ValueFrom<Src>>::Err>
Convert the given value into an exactly equivalent representation.
§impl<Src, Dst> ValueInto<Dst> for Srcwhere
Dst: ValueFrom<Src>,
impl<Src, Dst> ValueInto<Dst> for Srcwhere
Dst: ValueFrom<Src>,
§fn value_into(self) -> Result<Dst, <Src as ValueInto<Dst>>::Err>
fn value_into(self) -> Result<Dst, <Src as ValueInto<Dst>>::Err>
Convert the subject into an exactly equivalent representation.