CompactBases.jl icon indicating copy to clipboard operation
CompactBases.jl copied to clipboard

Alternate BandedMatrix/BandedBlockBandedMatrix storage for FE-DVR operators

Open jagot opened this issue 5 years ago • 1 comments

b = A*x is not particularly fast for A isa BlockSkylineMatrix, at least not for the block sizes that commonly arise in FE-DVR. Maybe representing A as a BandedMatrix (thus explicitly storing structural zeros) could improve arithmetic performance due to cache-friendliness? When we get to distributed computing, we could similarly use a BandedBlockBandedMatrix, where each node essentially has a banded matrix with some number of finite elements stored in it, and the only communication between nodes would be the bridge function between two finite elements, i.e. a single scalar. I assume an incomplete factorization could be formed by factorizing each banded matrix, and this could be used as e.g. a preconditioner.

jagot avatar Sep 15 '20 07:09 jagot

You could even wrap the banded matrix in a PseudoBlockArray to preserve the block structure

dlfivefifty avatar Sep 15 '20 09:09 dlfivefifty