A research implementation of quadrature coupled RS-S from Sushnikova et al., "FMM-LU: A fast direct solver for multiscale boundary integral equations in three dimensions", arXiv. This work is based on the previous work of Minden et al., " A recursive skeletonization factorization based on strong admissibility", arXiv.
Original contributors: Victor Minden, Ken L. Ho, Anil Damle, Lexing Ying.
Modifications by: Daria Sushnikova, Mike O'Neil, Leslie Greengard, and Manas Rachh.
- Download the repository and run startup.m
- Download the FLAM library and run startup.m in the repository to add the relevant files to path.
- Download the FMM3D library and run
make install PREFIX=(FMM3DINSTALLDIR)
in the main directory - Download the fmm3dbie library and run
make install LIBNAME=fmm3dbie_matlab PREFIX=(FMM3DBIEINSTALLDIR) PREFIX_FMM=(FMM3DINSTALLDIR) BLAS_64=ON
and copy over - Go to fortran_src in this repository, and update the compile_script.make file to update FMM3DINSTALLDIR and FMM3DBIEINSTALLDIR and run make -f compile_script.make
- This should generate a mex file. To test a successful installation, run test1.m in the fortran_src folder
- For mac machines, we recommend setting PREFIX and PREFIX_FMM to blank or to
/usr/local/lib
and then FMM3DINSTALLDIR and FMM3DBIEINSTALLDIR to/usr/local/lib
as well - On linux machines, make sure that FMMINSTALLDIR and FMM3DINSTALLDIR are in the
LD_LIBRARY_PATH
environment variable
Built on the FLAM library by Ken L. Ho, this research code implements the factorizations described in "A recursive skeletonization factorization based on strong admissibility" by Minden et al.
The main functions provided are as follows:
srskelf.m
: the strong recursive skeletonization factorization (aka "RS-S") for symmetric matrices. This function uses Cholesky factorizations of diagonal subblocks that can be assumed positive-definite in exact arithmetic.srskelf_asym.m
: RS-S for asymmetric matrices. This function uses LU factorizations wheresrskelf.m
uses Cholesky.srskelf_hybrid.m
: the hybrid recursive skeletonization factorization (aka "RS-WS") for symmetric matrices. This function is likesrskelf.m
, but additionally interlaces levels of standard ("weak") skeletonization.srskelf_asymhybrid.m
: RS-WS for asymmetric matrices. This function is likesrskelf_asym.m
, but additionally interlaces levels of standard ("weak") skeletonization.srskelf_asym_new.m
: RS-S for asymmetric matrices, where the proxy points per level are chosen based on the size of the box in wavelengths
Tests are available as MATLAB functions in the directory "test" and may be run with no arguments, assuming that FLAM and the strong-skel directories are in your MATLAB path. The tests provided are as follows:
ie_square.m
: The setup of Example 1 as described in Minden et al.ie_cube.m
: The setup of Example 2 as described in Minden et al.ie_sphere.m
: The setup of Example 3 as described in Minden et al.ie_fmm3dbie_sqrtscaling.m
: Setup for solving Helmholtz equation with combined field representation and square root scaled matrix entries, where the near quadrature is generated using fmm3dbie.