Skip to content

Commit 578f5b7

Browse files
authored
Merge pull request #939 from gridap/expanding-block-assembly
Block assembly works with AbstractBlockArrays
2 parents 27a04ea + 22875be commit 578f5b7

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

NEWS.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,19 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## Unreleased
9+
10+
### Added
11+
12+
- Block assembly now generalised to work with `AbstractBlockArrays`, to include changes in GridapDistributed. Since PR [939](https://github.com/gridap/Gridap.jl/pull/939).
13+
814
## [0.17.19] - 2023-08-23
915

1016
### Fixed
1117

1218
- Reimplemented `DomainStyle` for `CellQuadrature` to fix breaking low-level Poisson tutorial. Since PR [#937](https://github.com/gridap/Gridap.jl/pull/937).
1319

14-
## [0.17.18] - 2023-08-15
20+
## [0.17.18] - 2023-08-15
1521

1622
### Added
1723

src/MultiField/BlockSparseMatrixAssemblers.jl

+11-8
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ end
106106
function FESpaces.SparseMatrixAssembler(mat,
107107
vec,
108108
trial::MultiFieldFESpace{<:BlockMultiFieldStyle},
109-
test::MultiFieldFESpace{<:BlockMultiFieldStyle},
109+
test ::MultiFieldFESpace{<:BlockMultiFieldStyle},
110110
strategy::AssemblyStrategy=DefaultAssemblyStrategy())
111111
return BlockSparseMatrixAssembler(trial,test,SparseMatrixBuilder(mat),ArrayBuilder(vec),strategy)
112112
end
@@ -272,22 +272,25 @@ end
272272
# In place assembly modifications (for dispatching)
273273
# We convert from BlockArray to ArrayBlock to be able to expland the blocks.
274274
# After assembly we convert back to BlockArray automatically.
275-
function FESpaces.assemble_vector_add!(b::BlockVector,a::BlockSparseMatrixAssembler,vecdata)
276-
b1 = ArrayBlock(b.blocks,fill(true,size(b.blocks)))
275+
function FESpaces.assemble_vector_add!(b::AbstractBlockVector,a::BlockSparseMatrixAssembler,vecdata)
276+
b1 = ArrayBlock(blocks(b),fill(true,blocksize(b)))
277277
b2 = expand_blocks(a,b1)
278278
FESpaces.assemble_vector_add!(b2,a,vecdata)
279279
end
280280

281-
function FESpaces.assemble_matrix_add!(mat::BlockMatrix,a::BlockSparseMatrixAssembler,matdata)
282-
m1 = ArrayBlock(mat.blocks,fill(true,size(mat.blocks)))
281+
function FESpaces.assemble_matrix_add!(mat::AbstractBlockMatrix,a::BlockSparseMatrixAssembler,matdata)
282+
m1 = ArrayBlock(blocks(mat),fill(true,blocksize(mat)))
283283
m2 = expand_blocks(a,m1)
284284
FESpaces.assemble_matrix_add!(m2,a,matdata)
285285
end
286286

287-
function FESpaces.assemble_matrix_and_vector_add!(A::BlockMatrix,b::BlockVector,a::BlockSparseMatrixAssembler,data)
288-
m1 = ArrayBlock(A.blocks,fill(true,size(A.blocks)))
287+
function FESpaces.assemble_matrix_and_vector_add!(A::AbstractBlockMatrix,
288+
b::AbstractBlockVector,
289+
a::BlockSparseMatrixAssembler,
290+
data)
291+
m1 = ArrayBlock(blocks(A),fill(true,blocksize(A)))
289292
m2 = expand_blocks(a,m1)
290-
b1 = ArrayBlock(b.blocks,fill(true,size(b.blocks)))
293+
b1 = ArrayBlock(blocks(b),fill(true,blocksize(b)))
291294
b2 = expand_blocks(a,b1)
292295
FESpaces.assemble_matrix_and_vector_add!(m2,b2,a,data)
293296
end

0 commit comments

Comments
 (0)