Commit 9014c7af authored by Yingzhou Li's avatar Yingzhou Li Committed by Victor Yu

Added Chebyshev Filtering Method

parent 209b1d00
......@@ -9,7 +9,8 @@ LIST(APPEND elsi_rci_src
Davidson/elsi_rci_davidson.f90
OMM/elsi_rci_omm.f90
OMM/rci_omm_cubic.f90
PPCG/elsi_rci_ppcg.f90)
PPCG/elsi_rci_ppcg.f90
ChebFilter/elsi_rci_chebfilter.f90)
ADD_LIBRARY(elsi_rci ${elsi_rci_src})
......
This diff is collapsed.
......@@ -19,6 +19,7 @@ module ELSI_RCI_CONSTANTS
integer(i4), parameter :: RCI_SOLVER_DAVIDSON = 1
integer(i4), parameter :: RCI_SOLVER_OMM = 2
integer(i4), parameter :: RCI_SOLVER_PPCG = 3
integer(i4), parameter :: RCI_SOLVER_CHEBFILTER = 4
! Constant of ijob
integer(i4), parameter :: RCI_INIT_IJOB = -1
......
......@@ -65,6 +65,11 @@ module ELSI_RCI_DATATYPE
integer(i4) :: ppcg_rrstep
real(r8) :: ppcg_tol_lock
! ChebFilter
real(r8) :: est_lb
real(r8) :: est_ub
integer(i4) :: max_inneriter
end type
end module ELSI_RCI_DATATYPE
......@@ -17,6 +17,7 @@ module ELSI_RCI
use ELSI_RCI_DAVIDSON
use ELSI_RCI_OMM
use ELSI_RCI_PPCG
use ELSI_RCI_CHEBFILTER
implicit none
......@@ -43,6 +44,8 @@ contains
call rci_omm_allocate(r_h, ijob, iS, task)
case (RCI_SOLVER_PPCG)
call rci_ppcg_allocate(r_h, ijob, iS, task)
case (RCI_SOLVER_CHEBFILTER)
call rci_chebfilter_allocate(r_h, ijob, iS, task)
end select
end subroutine
......@@ -68,6 +71,8 @@ contains
call rci_omm_deallocate(r_h, ijob, iS, task)
case (RCI_SOLVER_PPCG)
call rci_ppcg_deallocate(r_h, ijob, iS, task)
case (RCI_SOLVER_CHEBFILTER)
call rci_chebfilter_deallocate(r_h, ijob, iS, task)
end select
end subroutine
......@@ -94,6 +99,8 @@ contains
call rci_omm(r_h, ijob, iS, task, resvec)
case (RCI_SOLVER_PPCG)
call rci_ppcg(r_h, ijob, iS, task, resvec)
case (RCI_SOLVER_CHEBFILTER)
call rci_chebfilter(r_h, ijob, iS, task, resvec)
end select
end subroutine
......
......@@ -47,6 +47,11 @@ contains
r_h%ppcg_sbsize = min(8,n_state)
r_h%ppcg_rrstep = min(5,max_iter)
! ChebFilter default
r_h%est_lb = 0
r_h%est_ub = 1000
r_h%max_inneriter = 10
select case (solver)
case (RCI_SOLVER_DAVIDSON)
r_h%n_res = min(4*n_state,n_basis)
......@@ -57,6 +62,9 @@ contains
case (RCI_SOLVER_PPCG)
r_h%n_res = max(n_state,3*r_h%ppcg_sbsize)
r_h%max_n = max(n_state,3*r_h%ppcg_sbsize)
case (RCI_SOLVER_CHEBFILTER)
r_h%n_res = n_state
r_h%max_n = n_state
end select
end subroutine
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment