# Software

#### This part is research code, most of them are attached to my research publications.

### ELSI [webpage]

ELSI provides and enhances scalable, open-source software library solutions for electronic structure calculations in materials science, condensed matter physics, chemistry, molecular biochemistry, and many other fields. ELSI focuses on methods that solve or circumvent the Kohn-Sham eigenvalue problem in density-functional theory. The ELSI infrastructure should also be useful for other challenging eigenvalue problems. Currently, I am in charge of the maintainance of libOMM and the development of the reverse communication interface.

### FastBF [github]

Fast Butterfly Factorization, which is also known as the interpolative butterfly factorization (IBF), gives a data-sparse representation of matrices that satisfy the complementary low-rank property. Given the explicit expression of the kernel, IBF factorizes the kernel matrix in $\mathcal{O}(N\log N)$ operations. And the final factorization admits $\mathcal{O}(N\log N)$ operations and memory complexity with nearly optimal prefactor. This code supports the interpolative butterfly factorization of any dimensional problems with and without singularity. Several examples are provided in the test folders. This is joint work with Haizhao Yang.

### BF [github]

Butterfly Factorization (BF) gives a data-sparse representation of matrices that satisfy the complementary low-rank property. The factorization approximates such a kernel matrix of size $N\times N$ with a product of $\mathcal{O}(\log N)$ sparse matrices, each of which contains $\mathcal{O}(N)$ nonzero entries. Hence the application only requires $\mathcal{O}(N\log N)$ operations and memory. This code supports the butterfly factorization of $d$ dimensional matrices for $d\leq 2$. Several examples are provided in the test folders. This is joint work with Haizhao Yang, Eileen Martin(one dimensional code), Kenneth L. Ho(one dimensional code), and Lexing Ying.

### MBA [github]

Multiscale Butterfly Algorithm (MBA) is a code for the fast evaluation of Fourier Integral Operators (FIOs). Both 2D and 3D FIOs can be fast evaluated via this code. Several examples are provided in the test folders. This is joint work with Haizhao Yang and Lexing Ying.

### DMHM [bitbucket]

Distributed-Memory Hierarchical Matrices (DMHM) is a code for mpi based hierarchical matrix algebra. This code support both 2D and 3D $\mathcal{H}$-matrices. $\mathcal{H}$-matrix application, composition, addition and inversion are completed. This is joint work with Jack Poulson and Lexing Ying.

# Code

#### This part is research related code, while none of them is attached to any specific paper.

### MuFiM [github]

MuFiM is code for the MultiFrontal method for general sparse matrices in Matlab. This code currently supports the fast factorization of symmetric matrices, Hermitian matrices, and pattern symmetric matrices. The complexity analysis of the algorithm is available if the sparse matrix is discretized from PDEs with a local numerical scheme. For two-dimensional problems, the factorization and solving/application are of complexities $\mathcal{O}(N^{3/2})$ and $\mathcal{O}(N\log N)$ respectively. For three-dimensional problems, the factorization and solving/application are of complexities $\mathcal{O}(N^2)$ and $\mathcal{O}(N^{4/3})$ respectively. The factorization phase of MuFiM is about 4 times slower than Matlab default "/" or "\" operation. While once the factors are available, the solving/application is of lower complexity than Matlab default solving. In practice, the running time is also much faster.

### meshpart [github]

Meshpart is a Matlab toolbox for several graph and mesh partitioning methods, including geometric, spectral, geometric spectral, and coordinate bisections. It also has routines to generate recursive multiway partitions, vertex separators, and nested dissection orderings. It functions similar to MetisMex, but purely in Matlab. This is joint work with John R. Gilbert and Shang-Hua Teng.

### MetisMex [github]

Metis Mex is mex files for METIS. This code currently supports 64-bit Linux and Mac. If any support for 32-bit computer or PC is needed, please email me.

### FastSpecialMat [github]

Fast Special Matrices is code for fast application of special matrices. This code currently supports the fast application of circulant matrices, Hankel matrices, Hankel circulant matrices, Toeplitz matrices and Toeplitz symmetric matrices. The complexities of all these applications are $\mathcal{O}(N \log N)$ for $N$ by $N$ matrices.