Skip to content

Latest commit

 

History

History
60 lines (48 loc) · 3.03 KB

README.md

File metadata and controls

60 lines (48 loc) · 3.03 KB

SLiSe: Framework to design rational filters for contour-based eigensolvers

We herein present a Julia implementation of SLiSe, a framework for the design of rational filters for contour-based eigensolvers.

The highlights include

  • Unlimited degrees of freedom within the design of rational filters,
  • Quick convergence with SLiSe filters through minimization of worst-case convergence rate,
  • First toolkit to provide support for box-constraints, for fast convergence within contour-based eigensolvers with iterative linear solvers, and
  • Fast, ready-to-use rational filters included.

Installation

First, add this repository to Julia via

Pkg.clone("https://github.com/SimLabQuantumMaterials/SLiSeFilters.jl")

Afterwards, add the L-BFGS-B wrapper

Pkg.clone("https://github.com/jey/Lbfgsb.jl")

and run

Pkg.build("Lbfgsb")

to compile the original Fortran library.

Usage

To obtain filters with small worst-case convergence rate, type into Julia:

import SLiSeFilters

# Choose poles per quadrant and gap size
p = 4
G = 0.95

# Starting filter
z, a   = SLiSeFilters.points( "zolo" , p );

# Starting weight function with shift
ws = SLiSeFilters.createWS(  [ sqrt(G),  sqrt(G)^-1, 1.4, 10 ],
                  BitVector( [ 0,    0,   1,  1 ] ) , # free vars within minimization
                             [ 1,  .01,  10, 20 ]   ,
                  BitVector( [ 0,    1,   1,  1 ] ) )   # free vars within minimization

# Compute filter with reduced worst-case convergence rate
z2, a2  = SLiSeFilters.wise( ws, z, a, G )

You find resulting, ready-to-use rational filters in the docs/ folder, as well as Gauss-Legendre filters with reduced worst-case convergence rate.

A Jupyter notebook to demo the underlying SLiSe framework is available in the docs/ folder.

Related packages

A large set of benchmark eigenproblems for the FEAST eigensolver can be obtained from the SpectrumSlicingTestSuite.jl Julia package.

References