@@ -67,17 +67,22 @@ where
6767 data : NestedVec < Data > ,
6868}
6969
70+ fn unit_data_table_for_weights < T > ( points : & NestedVec < T > ) -> NestedVec < ( ) > {
71+ let mut data = NestedVec :: new ( ) ;
72+ for i in 0 ..points. len ( ) {
73+ data. push ( & vec ! [ ( ) ; points. get( i) . unwrap( ) . len( ) ] ) ;
74+ }
75+ data
76+ }
77+
7078impl < T , GeometryDim > GeneralQuadratureTable < T , GeometryDim >
7179where
7280 T : Scalar ,
7381 GeometryDim : DimName ,
7482 DefaultAllocator : Allocator < T , GeometryDim > ,
7583{
7684 pub fn from_points_and_weights ( points : NestedVec < OPoint < T , GeometryDim > > , weights : NestedVec < T > ) -> Self {
77- let mut data = NestedVec :: new ( ) ;
78- for i in 0 ..points. len ( ) {
79- data. push ( & vec ! [ ( ) ; points. get( i) . unwrap( ) . len( ) ] ) ;
80- }
85+ let data = unit_data_table_for_weights ( & weights) ;
8186 Self :: from_points_weights_and_data ( points, weights, data)
8287 }
8388}
@@ -316,6 +321,22 @@ where
316321 element_to_rule_map : Vec < usize > ,
317322}
318323
324+ impl < T , D > CompactQuadratureTable < T , D >
325+ where
326+ T : Scalar ,
327+ D : DimName ,
328+ DefaultAllocator : Allocator < T , D > ,
329+ {
330+ pub fn from_points_weights_and_map (
331+ points : NestedVec < OPoint < T , D > > ,
332+ weights : NestedVec < T > ,
333+ element_to_rule_map : Vec < usize >
334+ ) -> Self {
335+ let data = unit_data_table_for_weights ( & weights) ;
336+ Self :: from_quadrature_rules_and_map ( points, weights, data, element_to_rule_map)
337+ }
338+ }
339+
319340impl < T , D , Data > CompactQuadratureTable < T , D , Data >
320341where
321342 T : Scalar ,
0 commit comments