@@ -446,32 +446,37 @@ end
446446
447447# BlockSparseMatrixAssemblers
448448
449- const DistributedBlockSparseMatrixAssembler{NB,NV,SB,P } =
450- MultiField. BlockSparseMatrixAssembler{NB,NV,SB,P, <: DistributedSparseMatrixAssembler }
449+ const DistributedBlockSparseMatrixAssembler{R,C } =
450+ MultiField. BlockSparseMatrixAssembler{R,C, <: AbstractMatrix{<: DistributedSparseMatrixAssembler} }
451451
452452function FESpaces. SparseMatrixAssembler (
453453 local_mat_type,
454454 local_vec_type,
455- trial:: DistributedMultiFieldFESpace{<:BlockMultiFieldStyle{NB,SB,P}} ,
456- test:: DistributedMultiFieldFESpace{<:BlockMultiFieldStyle{NB,SB,P}} ,
457- par_strategy= SubAssembledRows ()) where {NB,SB,P}
455+ trial:: DistributedMultiFieldFESpace{<:BlockMultiFieldStyle} ,
456+ test:: DistributedMultiFieldFESpace{<:BlockMultiFieldStyle} ,
457+ par_strategy= SubAssembledRows ()
458+ )
459+ NBr, SBr, Pr = MultiField. get_block_parameters (MultiFieldStyle (test))
460+ NBc, SBc, Pc = MultiField. get_block_parameters (MultiFieldStyle (trial))
458461
459- block_idx = CartesianIndices ((NB,NB))
460462 block_rows = blocks (test. gids)
461463 block_cols = blocks (trial. gids)
462- block_assemblers = map (block_idx) do idx
463- rows = block_rows[idx[1 ]]; cols = block_cols[idx[2 ]]
464- return SparseMatrixAssembler (local_mat_type,local_vec_type,rows,cols,par_strategy)
464+ block_assemblers = map (CartesianIndices ((NBr,NBc))) do idx
465+ rows = block_rows[idx[1 ]]
466+ cols = block_cols[idx[2 ]]
467+ SparseMatrixAssembler (
468+ local_mat_type,local_vec_type,rows,cols,par_strategy
469+ )
465470 end
466471
467- NV = length (P )
468- return MultiField. BlockSparseMatrixAssembler {NB,NV,SB,P } (block_assemblers)
472+ R, C = (NBr,SBr,Pr), (NBc,SBc,Pc )
473+ return MultiField. BlockSparseMatrixAssembler {R,C } (block_assemblers)
469474end
470475
471- function local_views (a:: MultiField.BlockSparseMatrixAssembler{NB,NV,SB,P } ) where {NB,NV,SB,P }
476+ function local_views (a:: MultiField.BlockSparseMatrixAssembler{R,C } ) where {R,C }
472477 assems = a. block_assemblers
473478 array = to_parray_of_arrays (map (local_views,assems))
474- return map (MultiField. BlockSparseMatrixAssembler{NB,NV,SB,P },array)
479+ return map (MultiField. BlockSparseMatrixAssembler{R,C },array)
475480end
476481
477482function local_views (a:: MatrixBlock ,rows,cols)
0 commit comments