Octopus
eigen_chebyshev.F90
Go to the documentation of this file.
1!! Copyright (C) 2023. A Buccheri.
2!!
3!! This Source Code Form is subject to the terms of the Mozilla Public
4!! License, v. 2.0. If a copy of the MPL was not distributed with this
5!! file, You can obtain one at https://mozilla.org/MPL/2.0/.
6!!
7#include "global.h"
8
10 use batch_oct_m
12 use comm_oct_m
13 use debug_oct_m
16 use global_oct_m
19 use, intrinsic :: iso_fortran_env
21 use loct_oct_m
22 use mesh_oct_m
26 use mpi_oct_m
33
34 implicit none
35 private
36
39 integer :: n_lanczos
40 integer :: degree
41 real(real64) :: bound_mixing
42 ! !< for approximation of the spectral filter''s lower bound:
43 ! !< lower_bound = bm * min(e_approx) + (bm - 1) * max(eig_approx)
44 ! !< such that bm = 0 => lower_bound = max(eig_approx)
45 ! !< bm = 1 => lower_bound = min(eig_approx)
46 integer :: n_iter
47 logical :: optimize_degree
48 end type eigen_chebyshev_t
49
60 type(eigen_chebyshev_t) :: default_chebyshev_params = eigen_chebyshev_t(5, 15, m_half, 5, .true.)
61
63 private
64 type(wfs_elec_t), pointer :: batch
65 end type batch_pointer_t
66
67 public :: &
69 default_chebyshev_params, &
73
74contains
75
76#include "real.F90"
77#include "eigen_chebyshev_inc.F90"
78#include "undef.F90"
79
80#include "complex.F90"
81#include "eigen_chebyshev_inc.F90"
82#include "undef.F90"
83
84end module eigen_chebyshev_oct_m
This module implements batches of mesh functions.
Definition: batch.F90:133
This module implements common operations on batches of mesh functions.
Definition: batch_ops.F90:116
subroutine, public zchebyshev_filter_solver(namespace, sdiag, mesh, st, hm, ik, subspace_tol, filter_params, scf_iter, prior_residuals)
Driver for Chebyshev filter-based solver.
subroutine, public zchebyshev_filter(namespace, mesh, st, hm, degree, bounds, ik, normalize)
Chebyshev Filter.
subroutine, public dchebyshev_filter_solver(namespace, sdiag, mesh, st, hm, ik, subspace_tol, filter_params, scf_iter, prior_residuals)
Driver for Chebyshev filter-based solver.
subroutine, public dchebyshev_filter(namespace, mesh, st, hm, degree, bounds, ik, normalize)
Chebyshev Filter.
real(real64), parameter, public m_half
Definition: global.F90:194
This module defines functions over batches of mesh functions.
Definition: mesh_batch.F90:116
This module defines various routines, operating on mesh functions.
This module defines the meshes, which are used in Octopus.
Definition: mesh.F90:118
int true(void)