@@ -5,7 +5,7 @@ use crate::{
55 geometry:: MixedGeometry ,
66 topology:: mixed:: MixedTopology ,
77 traits:: { Builder , GeometryBuilder , GridBuilder , TopologyBuilder } ,
8- types:: RealScalar ,
8+ types:: Scalar ,
99} ;
1010use itertools:: izip;
1111use ndelement:: {
@@ -20,10 +20,10 @@ use std::collections::{HashMap, HashSet};
2020
2121/// Grid builder for a grid with a mixture of element types
2222#[ derive( Debug ) ]
23- pub struct MixedGridBuilder < T : RealScalar > {
23+ pub struct MixedGridBuilder < T : Scalar > {
2424 gdim : usize ,
2525 element_indices : HashMap < ( ReferenceCellType , usize ) , usize > ,
26- elements : Vec < CiarletElement < T , IdentityMap > > ,
26+ elements : Vec < CiarletElement < T , IdentityMap , T > > ,
2727 points_per_cell : Vec < usize > ,
2828 pub ( crate ) points : Vec < T > ,
2929 cells : Vec < usize > ,
@@ -39,7 +39,7 @@ pub struct MixedGridBuilder<T: RealScalar> {
3939 cell_indices : HashSet < usize > ,
4040}
4141
42- impl < T : RealScalar > MixedGridBuilder < T > {
42+ impl < T : Scalar > MixedGridBuilder < T > {
4343 /// Create a new grid builder
4444 pub fn new ( gdim : usize ) -> Self {
4545 Self {
@@ -63,8 +63,8 @@ impl<T: RealScalar> MixedGridBuilder<T> {
6363 }
6464}
6565
66- impl < T : RealScalar > Builder for MixedGridBuilder < T > {
67- type Grid = MixedGrid < T , CiarletElement < T , IdentityMap > > ;
66+ impl < T : Scalar > Builder for MixedGridBuilder < T > {
67+ type Grid = MixedGrid < T , CiarletElement < T , IdentityMap , T > > ;
6868 type T = T ;
6969 type CellData < ' a > = ( ReferenceCellType , usize , & ' a [ usize ] ) ;
7070 type EntityDescriptor = ReferenceCellType ;
@@ -89,7 +89,7 @@ impl<T: RealScalar> Builder for MixedGridBuilder<T> {
8989 . entry ( ( cell_data. 0 , cell_data. 1 ) )
9090 . or_insert_with ( || {
9191 let n = self . cell_indices_to_ids . len ( ) ;
92- self . elements . push ( lagrange:: create :: < T > (
92+ self . elements . push ( lagrange:: create :: < T , T > (
9393 cell_data. 0 ,
9494 cell_data. 1 ,
9595 Continuity :: Standard ,
@@ -127,7 +127,7 @@ impl<T: RealScalar> Builder for MixedGridBuilder<T> {
127127 self . add_cell ( id, ( cell_type, cell_degree, nodes) ) ;
128128 }
129129
130- fn create_grid ( & self ) -> MixedGrid < T , CiarletElement < T , IdentityMap > > {
130+ fn create_grid ( & self ) -> MixedGrid < T , CiarletElement < T , IdentityMap , T > > {
131131 let cell_vertices =
132132 self . extract_vertices ( & self . cells , & self . cell_types , & self . cell_degrees ) ;
133133
@@ -209,16 +209,16 @@ impl<T: RealScalar> Builder for MixedGridBuilder<T> {
209209 }
210210}
211211
212- impl < T : RealScalar > GeometryBuilder for MixedGridBuilder < T > {
213- type GridGeometry = MixedGeometry < T , CiarletElement < T , IdentityMap > > ;
212+ impl < T : Scalar > GeometryBuilder for MixedGridBuilder < T > {
213+ type GridGeometry = MixedGeometry < T , CiarletElement < T , IdentityMap , T > > ;
214214 fn create_geometry (
215215 & self ,
216216 point_ids : & [ usize ] ,
217217 coordinates : & [ Self :: T ] ,
218218 cell_points : & [ usize ] ,
219219 cell_types : & [ ReferenceCellType ] ,
220220 cell_degrees : & [ usize ] ,
221- ) -> MixedGeometry < T , CiarletElement < T , IdentityMap > > {
221+ ) -> MixedGeometry < T , CiarletElement < T , IdentityMap , T > > {
222222 let npts = point_ids. len ( ) ;
223223 let mut points = rlst_dynamic_array ! ( T , [ self . gdim( ) , npts] ) ;
224224 points. data_mut ( ) . unwrap ( ) . copy_from_slice ( coordinates) ;
@@ -229,15 +229,15 @@ impl<T: RealScalar> GeometryBuilder for MixedGridBuilder<T> {
229229 for degree in cell_degrees {
230230 cell_families. push ( * ef_indices. entry ( * degree) . or_insert_with ( || {
231231 let n = element_families. len ( ) ;
232- element_families. push ( LagrangeElementFamily :: < T > :: new (
232+ element_families. push ( LagrangeElementFamily :: < T , T > :: new (
233233 * degree,
234234 Continuity :: Standard ,
235235 ) ) ;
236236 n
237237 } ) )
238238 }
239239
240- MixedGeometry :: < T , CiarletElement < T , IdentityMap > > :: new (
240+ MixedGeometry :: < T , CiarletElement < T , IdentityMap , T > > :: new (
241241 cell_types,
242242 points,
243243 cell_points,
@@ -247,7 +247,7 @@ impl<T: RealScalar> GeometryBuilder for MixedGridBuilder<T> {
247247 }
248248}
249249
250- impl < T : RealScalar > TopologyBuilder for MixedGridBuilder < T > {
250+ impl < T : Scalar > TopologyBuilder for MixedGridBuilder < T > {
251251 type GridTopology = MixedTopology ;
252252 fn create_topology (
253253 & self ,
@@ -297,7 +297,7 @@ impl<T: RealScalar> TopologyBuilder for MixedGridBuilder<T> {
297297 }
298298}
299299
300- impl < T : RealScalar > GridBuilder for MixedGridBuilder < T > {
300+ impl < T : Scalar > GridBuilder for MixedGridBuilder < T > {
301301 fn create_grid_from_topology_geometry (
302302 & self ,
303303 topology : <Self as TopologyBuilder >:: GridTopology ,
0 commit comments