From e9f8da1c49d9b759b5cc02582fc3fb921d5e3ff4 Mon Sep 17 00:00:00 2001 From: Matthew Scroggs Date: Mon, 15 Jul 2024 10:19:34 +0100 Subject: [PATCH 1/3] bump rlst version --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index fdfb332..a97d76a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ libc = "0.2" log = "0.4" rayon = "1.9" rand = "0.8.5" -rlst = "0.1.0" +rlst = "0.2.0" thiserror="1.*" [dev-dependencies] From 8cf3fa9a153322319e0787c30a99091123797715 Mon Sep 17 00:00:00 2001 From: Matthew Scroggs Date: Mon, 15 Jul 2024 10:36:07 +0100 Subject: [PATCH 2/3] rlst updates --- src/ciarlet.rs | 10 ++++------ src/ciarlet/lagrange.rs | 20 ++++++-------------- src/ciarlet/raviart_thomas.rs | 21 +++++---------------- 3 files changed, 15 insertions(+), 36 deletions(-) diff --git a/src/ciarlet.rs b/src/ciarlet.rs index 1b9a5b2..52100af 100644 --- a/src/ciarlet.rs +++ b/src/ciarlet.rs @@ -5,7 +5,7 @@ use crate::reference_cell; use crate::traits::FiniteElement; use crate::types::{Continuity, MapType, ReferenceCellType}; use rlst::{ - dense::array::views::ArrayViewMut, rlst_dynamic_array2, rlst_dynamic_array3, Array, BaseArray, + rlst_dynamic_array2, rlst_dynamic_array3, Array, BaseArray, MatrixInverse, RandomAccessByRef, RandomAccessMut, RlstScalar, Shape, VectorContainer, }; @@ -32,7 +32,7 @@ fn compute_derivative_count(nderivs: usize, cell_type: ReferenceCellType) -> usi } /// A Ciarlet element -pub struct CiarletElement { +pub struct CiarletElement { cell_type: ReferenceCellType, degree: usize, embedded_superdegree: usize, @@ -47,9 +47,7 @@ pub struct CiarletElement { interpolation_weights: EntityWeights, } -impl CiarletElement -where - for<'a> Array, 2>, 2>, 2>: MatrixInverse, +impl CiarletElement { /// Create a Ciarlet element #[allow(clippy::too_many_arguments)] @@ -246,7 +244,7 @@ where &self.interpolation_weights } } -impl FiniteElement for CiarletElement { +impl FiniteElement for CiarletElement { type CellType = ReferenceCellType; type MapType = MapType; type T = T; diff --git a/src/ciarlet/lagrange.rs b/src/ciarlet/lagrange.rs index b0e7b78..4d390c2 100644 --- a/src/ciarlet/lagrange.rs +++ b/src/ciarlet/lagrange.rs @@ -6,19 +6,17 @@ use crate::reference_cell; use crate::traits::ElementFamily; use crate::types::{Continuity, MapType, ReferenceCellType}; use rlst::{ - dense::array::views::ArrayViewMut, rlst_dynamic_array2, rlst_dynamic_array3, Array, BaseArray, - MatrixInverse, RandomAccessMut, RlstScalar, VectorContainer, + rlst_dynamic_array2, rlst_dynamic_array3, + MatrixInverse, RandomAccessMut, RlstScalar, }; use std::marker::PhantomData; /// Create a Lagrange element -pub fn create( +pub fn create( cell_type: ReferenceCellType, degree: usize, continuity: Continuity, ) -> CiarletElement -where - for<'a> Array, 2>, 2>, 2>: MatrixInverse, { let dim = polynomial_count(cell_type, degree); let tdim = reference_cell::dim(cell_type); @@ -178,18 +176,14 @@ where } /// Lagrange element family -pub struct LagrangeElementFamily -where - for<'a> Array, 2>, 2>, 2>: MatrixInverse, +pub struct LagrangeElementFamily { degree: usize, continuity: Continuity, _t: PhantomData, } -impl LagrangeElementFamily -where - for<'a> Array, 2>, 2>, 2>: MatrixInverse, +impl LagrangeElementFamily { /// Create new family pub fn new(degree: usize, continuity: Continuity) -> Self { @@ -201,9 +195,7 @@ where } } -impl ElementFamily for LagrangeElementFamily -where - for<'a> Array, 2>, 2>, 2>: MatrixInverse, +impl ElementFamily for LagrangeElementFamily { type T = T; type FiniteElement = CiarletElement; diff --git a/src/ciarlet/raviart_thomas.rs b/src/ciarlet/raviart_thomas.rs index eb391b0..b21733a 100644 --- a/src/ciarlet/raviart_thomas.rs +++ b/src/ciarlet/raviart_thomas.rs @@ -7,20 +7,15 @@ use crate::traits::ElementFamily; use crate::types::{Continuity, MapType, ReferenceCellType}; use rlst::MatrixInverse; use rlst::RlstScalar; -use rlst::{ - dense::array::views::ArrayViewMut, rlst_dynamic_array2, rlst_dynamic_array3, Array, BaseArray, - RandomAccessMut, VectorContainer, -}; +use rlst::{rlst_dynamic_array2, rlst_dynamic_array3, RandomAccessMut}; use std::marker::PhantomData; /// Create a Raviart-Thomas element -pub fn create( +pub fn create( cell_type: ReferenceCellType, degree: usize, continuity: Continuity, ) -> CiarletElement -where - for<'a> Array, 2>, 2>, 2>: MatrixInverse, { if cell_type != ReferenceCellType::Triangle && cell_type != ReferenceCellType::Quadrilateral { panic!("Unsupported cell type"); @@ -99,18 +94,14 @@ where } /// Raviart-Thomas element family -pub struct RaviartThomasElementFamily -where - for<'a> Array, 2>, 2>, 2>: MatrixInverse, +pub struct RaviartThomasElementFamily { degree: usize, continuity: Continuity, _t: PhantomData, } -impl RaviartThomasElementFamily -where - for<'a> Array, 2>, 2>, 2>: MatrixInverse, +impl RaviartThomasElementFamily { /// Create new family pub fn new(degree: usize, continuity: Continuity) -> Self { @@ -122,9 +113,7 @@ where } } -impl ElementFamily for RaviartThomasElementFamily -where - for<'a> Array, 2>, 2>, 2>: MatrixInverse, +impl ElementFamily for RaviartThomasElementFamily { type T = T; type CellType = ReferenceCellType; From 06307df372c4b1568a108365e2697102eae01296 Mon Sep 17 00:00:00 2001 From: Matthew Scroggs Date: Mon, 15 Jul 2024 10:37:31 +0100 Subject: [PATCH 3/3] fmt --- src/ciarlet.rs | 7 +++---- src/ciarlet/lagrange.rs | 17 +++++------------ src/ciarlet/raviart_thomas.rs | 12 ++++-------- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/src/ciarlet.rs b/src/ciarlet.rs index 52100af..e91dac4 100644 --- a/src/ciarlet.rs +++ b/src/ciarlet.rs @@ -5,8 +5,8 @@ use crate::reference_cell; use crate::traits::FiniteElement; use crate::types::{Continuity, MapType, ReferenceCellType}; use rlst::{ - rlst_dynamic_array2, rlst_dynamic_array3, Array, BaseArray, - MatrixInverse, RandomAccessByRef, RandomAccessMut, RlstScalar, Shape, VectorContainer, + rlst_dynamic_array2, rlst_dynamic_array3, Array, BaseArray, MatrixInverse, RandomAccessByRef, + RandomAccessMut, RlstScalar, Shape, VectorContainer, }; pub mod lagrange; @@ -47,8 +47,7 @@ pub struct CiarletElement { interpolation_weights: EntityWeights, } -impl CiarletElement -{ +impl CiarletElement { /// Create a Ciarlet element #[allow(clippy::too_many_arguments)] pub fn create( diff --git a/src/ciarlet/lagrange.rs b/src/ciarlet/lagrange.rs index 4d390c2..ff8bed3 100644 --- a/src/ciarlet/lagrange.rs +++ b/src/ciarlet/lagrange.rs @@ -5,10 +5,7 @@ use crate::polynomials::polynomial_count; use crate::reference_cell; use crate::traits::ElementFamily; use crate::types::{Continuity, MapType, ReferenceCellType}; -use rlst::{ - rlst_dynamic_array2, rlst_dynamic_array3, - MatrixInverse, RandomAccessMut, RlstScalar, -}; +use rlst::{rlst_dynamic_array2, rlst_dynamic_array3, MatrixInverse, RandomAccessMut, RlstScalar}; use std::marker::PhantomData; /// Create a Lagrange element @@ -16,8 +13,7 @@ pub fn create( cell_type: ReferenceCellType, degree: usize, continuity: Continuity, -) -> CiarletElement -{ +) -> CiarletElement { let dim = polynomial_count(cell_type, degree); let tdim = reference_cell::dim(cell_type); let mut wcoeffs = rlst_dynamic_array3!(T, [dim, 1, dim]); @@ -176,15 +172,13 @@ pub fn create( } /// Lagrange element family -pub struct LagrangeElementFamily -{ +pub struct LagrangeElementFamily { degree: usize, continuity: Continuity, _t: PhantomData, } -impl LagrangeElementFamily -{ +impl LagrangeElementFamily { /// Create new family pub fn new(degree: usize, continuity: Continuity) -> Self { Self { @@ -195,8 +189,7 @@ impl LagrangeElementFamily } } -impl ElementFamily for LagrangeElementFamily -{ +impl ElementFamily for LagrangeElementFamily { type T = T; type FiniteElement = CiarletElement; type CellType = ReferenceCellType; diff --git a/src/ciarlet/raviart_thomas.rs b/src/ciarlet/raviart_thomas.rs index b21733a..c7c9bed 100644 --- a/src/ciarlet/raviart_thomas.rs +++ b/src/ciarlet/raviart_thomas.rs @@ -15,8 +15,7 @@ pub fn create( cell_type: ReferenceCellType, degree: usize, continuity: Continuity, -) -> CiarletElement -{ +) -> CiarletElement { if cell_type != ReferenceCellType::Triangle && cell_type != ReferenceCellType::Quadrilateral { panic!("Unsupported cell type"); } @@ -94,15 +93,13 @@ pub fn create( } /// Raviart-Thomas element family -pub struct RaviartThomasElementFamily -{ +pub struct RaviartThomasElementFamily { degree: usize, continuity: Continuity, _t: PhantomData, } -impl RaviartThomasElementFamily -{ +impl RaviartThomasElementFamily { /// Create new family pub fn new(degree: usize, continuity: Continuity) -> Self { Self { @@ -113,8 +110,7 @@ impl RaviartThomasElementFamily } } -impl ElementFamily for RaviartThomasElementFamily -{ +impl ElementFamily for RaviartThomasElementFamily { type T = T; type CellType = ReferenceCellType; type FiniteElement = CiarletElement;