Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Block assemblers for v0.3 #124

Merged
merged 61 commits into from
Oct 2, 2023
Merged

Block assemblers for v0.3 #124

merged 61 commits into from
Oct 2, 2023

Conversation

JordiManyer
Copy link
Member

@JordiManyer JordiManyer commented Aug 15, 2023

This PR implements block assemblers, which allow to assemble a MultiFieldFESpace block-wise. It is the distributed counterpart of gridap/Gridap.jl#915.

Instead of a sparse monolithic matrix and vectors, this assembler leverages BlockArrays.jl to produce equivalent block-partitioned sparse matrices and vectors. This is meant to ease the development of block preconditioners and solvers.

TODO:

  • Find a reliable way to compare solutions between block-assembled and monolothic systems.
  • Right now we have a problem dealing with different blocks having different PRanges. This complicates the allocation of a single column vector for the whole matrix, since ghosts do not match when multiplying with different blocks in the same block column. We will have to homogenize the row/col ghost values for all blocks in the same row/column by comparing them and keeping the biggest set.
  • Should we move the block linear algebra operations here from GridapSolvers?
  • Should we move to_parray_of_arrays and local_views implementations for BlockArrays to the Algebra.jl file?
  • To solve problem 2. here, should we try to implement a change_ghosts variant for Block-Multifield, like in the tests? This would give us a way to move from dof partitions to matrix partitions (since having identical PRanges is for now discarded as a solution). Or we could just not solve the issue, since it is already present for non-block assembly as well.

Other pains/doubts about the implementation can be found in gridap/GridapSolvers.jl#29.

@JordiManyer JordiManyer changed the base branch from partitioned_arrays_v0.3 to master August 15, 2023 05:50
@JordiManyer JordiManyer mentioned this pull request Aug 15, 2023
3 tasks
@codecov-commenter
Copy link

codecov-commenter commented Aug 22, 2023

Codecov Report

Merging #124 (90df49b) into master (234646e) will not change coverage.
The diff coverage is 0.00%.

❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

@@           Coverage Diff           @@
##           master    #124    +/-   ##
=======================================
  Coverage    0.00%   0.00%            
=======================================
  Files          11      12     +1     
  Lines        2082    2448   +366     
=======================================
- Misses       2082    2448   +366     
Files Coverage Δ
src/Adaptivity.jl 0.00% <ø> (ø)
src/DivConformingFESpaces.jl 0.00% <ø> (ø)
src/FESpaces.jl 0.00% <0.00%> (ø)
src/MultiField.jl 0.00% <0.00%> (ø)
src/BlockPartitionedArrays.jl 0.00% <0.00%> (ø)
src/Algebra.jl 0.00% <0.00%> (ø)

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@JordiManyer
Copy link
Member Author

Hey @amartinhuertas , I think I'm ready to merge this. Any final thougts?

@amartinhuertas
Copy link
Member

Hey @amartinhuertas , I think I'm ready to merge this. Any final thougts?

No. Please go ahead.

@JordiManyer JordiManyer merged commit 3c2245c into master Oct 2, 2023
6 checks passed
@JordiManyer JordiManyer deleted the block-assemblers-v0.3 branch October 2, 2023 13:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants