Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This library was created by Vaishnavi Gujjula, during the course of her Ph.D.

This library solves linear systems Ax=b, arising out of N-body problems in 2D. Such matrices A arising out of N-body problems are rank-structured. By exploiting this rank-structure, a fast direct sovler is built, that is termed Algebraic Inverse Fast Multipole Method (AIFMM).

For more details please refer[1].

The location of particles is to be defined in the userkernel class in the vector "gridPoints". Currently particles are distributed uniformly in the square [-L,L]^{2}.

The matrix entries are to be defined in the function "getMatrixEntry(i,j)" of the kernel.hpp file. Currently, 1/r and Hankel function are defined. Use DTYPE_FLAG in Makefile2D.mk to choose between 1/r and Hankel.

The rhs vector is to be defined in VectorXd "true_Ax" of the testAIFMM.cpp file. Currently for test purposes, it is defined as a vector containing ones and zeros at random locations.

The testAIFMM.cpp takes the following inputs at run time:

sqrtRootN: square root of N.

L: half side length of the computational square domain centered at 0

TOL_POW: the compression tolerance used by ACA routine

nParticlesInLeafAlong1D: maximum number of particles in leaf in a single dimension, i.e., in the process of creating hierarchical tree, a box is considered to be a leaf if it contains atmost nParticlesInLeafAlong1D*nParticlesInLeafAlong1D particles.

A sample output looks like this:

N: 10000

nLevelsUniform: 5

Max rank of compressible sub-matrices: 29

Assemble time: 1.79592

Factorization time: 11.9208

Solve time: 0.11616

Relative forward error in the solution: 1.68157e-05

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages