I’m thinking of using a kernel-independent FFM-like assembler to speed up EM simulation, such as [h2tools] (Bitbucket). To apply it, I need a function that calculates a submatrix of matrix A based on given rows and columns (sinks and sources in FMM terms). Does bempp support this interface or can it be implemented?
Hi, that’s difficult to do. We provide interfaces to Exafmm as FMM library. It uses the kernel-independent FMM. However, while it works for EM simulations, the performance is not yet optimal. At the moment, we need several FMM passes to evaluate a single Maxwell kernel. We are currently working on optimisiing this. If you have a simple e-field or m-field problem it does not matter much and is still fine. But for complex transmission problems with a number of operators involved, this puts a drag on performance.
Don`t you consider to use H2-matrices instead of FMM?
They also have linear complexity, but provides summation over the grid elements at the assembling stage. While FMM require repeat of summation at each application of the matrix to vector. For 6 quadrature points on barycentrically refinemented mesh application of H2-matrix can be more then 10 times faster in my opinion.