Octopus
eigensolver_oct_m Module Reference

Data Types

type  eigensolver_t
 

Functions/Subroutines

subroutine, public eigensolver_init (eigens, namespace, gr, st, mc, space)
 
subroutine, public eigensolver_end (eigens)
 
subroutine eigensolver_run (eigens, namespace, gr, st, hm, iter, conv, nstconv)
 
logical function eigensolver_parallel_in_states (this)
 
logical function eigensolver_has_progress_bar (this)
 
subroutine deigensolver_run (eigens, namespace, mesh, st, hm, iter, ik)
 
subroutine deigensolver_plan (namespace, mesh, st, hm, pre, tol, niter, converged, ik, diff)
 This subroutine implements the preconditioned Lanczos eigensolver as described in the paper: More...
 
subroutine deigensolver_evolution (namespace, mesh, st, hm, te, tol, niter, converged, ik, diff, tau)
 
subroutine zeigensolver_run (eigens, namespace, mesh, st, hm, iter, ik)
 
subroutine zeigensolver_plan (namespace, mesh, st, hm, pre, tol, niter, converged, ik, diff)
 This subroutine implements the preconditioned Lanczos eigensolver as described in the paper: More...
 
subroutine zeigensolver_evolution (namespace, mesh, st, hm, te, tol, niter, converged, ik, diff, tau)
 

Variables

integer, parameter, public rs_plan = 11
 
integer, parameter, public rs_cg = 5
 
integer, parameter, public rs_evo = 9
 
integer, parameter, public rs_rmmdiis = 10
 
integer, parameter, public rs_chebyshev = 12
 

Function/Subroutine Documentation

◆ eigensolver_init()

subroutine, public eigensolver_oct_m::eigensolver_init ( type(eigensolver_t), intent(out)  eigens,
type(namespace_t), intent(in)  namespace,
type(grid_t), intent(in)  gr,
type(states_elec_t), intent(in)  st,
type(multicomm_t), intent(in)  mc,
class(space_t), intent(in)  space 
)

Definition at line 212 of file eigensolver.F90.

◆ eigensolver_end()

subroutine, public eigensolver_oct_m::eigensolver_end ( type(eigensolver_t), intent(inout)  eigens)

Definition at line 562 of file eigensolver.F90.

◆ eigensolver_run()

subroutine eigensolver_oct_m::eigensolver_run ( class(eigensolver_t), intent(inout)  eigens,
type(namespace_t), intent(in)  namespace,
type(grid_t), intent(in)  gr,
type(states_elec_t), intent(inout)  st,
type(hamiltonian_elec_t), intent(inout)  hm,
integer, intent(in)  iter,
logical, intent(out), optional  conv,
integer, intent(in), optional  nstconv 
)
private
Parameters
[in]nstconvNumber of states considered for

Definition at line 580 of file eigensolver.F90.

◆ eigensolver_parallel_in_states()

logical function eigensolver_oct_m::eigensolver_parallel_in_states ( type(eigensolver_t), intent(in)  this)
private

Definition at line 686 of file eigensolver.F90.

◆ eigensolver_has_progress_bar()

logical function eigensolver_oct_m::eigensolver_has_progress_bar ( type(eigensolver_t), intent(in)  this)
private

Definition at line 703 of file eigensolver.F90.

◆ deigensolver_run()

subroutine eigensolver_oct_m::deigensolver_run ( type(eigensolver_t), intent(inout)  eigens,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(inout)  st,
type(hamiltonian_elec_t), intent(inout)  hm,
integer, intent(in)  iter,
integer, intent(in)  ik 
)
private
Parameters
[in]iterCurrent SCF iteration
[in]ikk-point index

Definition at line 787 of file eigensolver.F90.

◆ deigensolver_plan()

subroutine eigensolver_oct_m::deigensolver_plan ( type(namespace_t), intent(in)  namespace,
type(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(inout)  st,
type(hamiltonian_elec_t), intent(in)  hm,
type(preconditioner_t), intent(in)  pre,
real(real64), intent(in)  tol,
integer, intent(inout)  niter,
integer, intent(out)  converged,
integer, intent(in)  ik,
real(real64), dimension(:), intent(out), optional  diff 
)
private

This subroutine implements the preconditioned Lanczos eigensolver as described in the paper:

Y. Saad, A. Stathopoulos, J. Chelikowsky, K. Wu and S. Ogut, "Solution of Large Eigenvalue Problems in Electronic Structure Calculations", BIT 36 563-578 (1996) doi:10.1007/BF01731934 .

We also implement the "smoothing" preconditioning described in that paper.

Parameters
[out]diff(1:stnst)

Definition at line 868 of file eigensolver.F90.

◆ deigensolver_evolution()

subroutine eigensolver_oct_m::deigensolver_evolution ( type(namespace_t), intent(in)  namespace,
type(mesh_t), intent(in), target  mesh,
type(states_elec_t), intent(inout)  st,
type(hamiltonian_elec_t), intent(inout), target  hm,
type(exponential_t), intent(inout)  te,
real(real64), intent(in)  tol,
integer, intent(inout)  niter,
integer, intent(inout)  converged,
integer, intent(in)  ik,
real(real64), dimension(:), intent(out), contiguous  diff,
real(real64), intent(in)  tau 
)
private
Parameters
[out]diff(1:stnst)

Definition at line 1208 of file eigensolver.F90.

◆ zeigensolver_run()

subroutine eigensolver_oct_m::zeigensolver_run ( type(eigensolver_t), intent(inout)  eigens,
type(namespace_t), intent(in)  namespace,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(inout)  st,
type(hamiltonian_elec_t), intent(inout)  hm,
integer, intent(in)  iter,
integer, intent(in)  ik 
)
private
Parameters
[in]iterCurrent SCF iteration
[in]ikk-point index

Definition at line 1439 of file eigensolver.F90.

◆ zeigensolver_plan()

subroutine eigensolver_oct_m::zeigensolver_plan ( type(namespace_t), intent(in)  namespace,
type(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(inout)  st,
type(hamiltonian_elec_t), intent(in)  hm,
type(preconditioner_t), intent(in)  pre,
real(real64), intent(in)  tol,
integer, intent(inout)  niter,
integer, intent(out)  converged,
integer, intent(in)  ik,
real(real64), dimension(:), intent(out), optional  diff 
)
private

This subroutine implements the preconditioned Lanczos eigensolver as described in the paper:

Y. Saad, A. Stathopoulos, J. Chelikowsky, K. Wu and S. Ogut, "Solution of Large Eigenvalue Problems in Electronic Structure Calculations", BIT 36 563-578 (1996) doi:10.1007/BF01731934 .

We also implement the "smoothing" preconditioning described in that paper.

Parameters
[out]diff(1:stnst)

Definition at line 1520 of file eigensolver.F90.

◆ zeigensolver_evolution()

subroutine eigensolver_oct_m::zeigensolver_evolution ( type(namespace_t), intent(in)  namespace,
type(mesh_t), intent(in), target  mesh,
type(states_elec_t), intent(inout)  st,
type(hamiltonian_elec_t), intent(inout), target  hm,
type(exponential_t), intent(inout)  te,
real(real64), intent(in)  tol,
integer, intent(inout)  niter,
integer, intent(inout)  converged,
integer, intent(in)  ik,
real(real64), dimension(:), intent(out), contiguous  diff,
real(real64), intent(in)  tau 
)
private
Parameters
[out]diff(1:stnst)

Definition at line 1860 of file eigensolver.F90.

Variable Documentation

◆ rs_plan

integer, parameter, public eigensolver_oct_m::rs_plan = 11

Definition at line 202 of file eigensolver.F90.

◆ rs_cg

integer, parameter, public eigensolver_oct_m::rs_cg = 5

Definition at line 202 of file eigensolver.F90.

◆ rs_evo

integer, parameter, public eigensolver_oct_m::rs_evo = 9

Definition at line 202 of file eigensolver.F90.

◆ rs_rmmdiis

integer, parameter, public eigensolver_oct_m::rs_rmmdiis = 10

Definition at line 202 of file eigensolver.F90.

◆ rs_chebyshev

integer, parameter, public eigensolver_oct_m::rs_chebyshev = 12

Definition at line 202 of file eigensolver.F90.