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
56 type(eigen_chebyshev_t), protected :: default_chebyshev_params = eigen_chebyshev_t(5, 25, m_half, 5, .true.)
57
59 private
60 type(wfs_elec_t), pointer :: batch
61 end type batch_pointer_t
62
63 public :: &
65 default_chebyshev_params, &
67
68contains
69
70#include "real.F90"
71#include "eigen_chebyshev_inc.F90"
72#include "undef.F90"
73
74#include "complex.F90"
75#include "eigen_chebyshev_inc.F90"
76#include "undef.F90"
77
78end 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 dchebyshev_filter_solver(namespace, sdiag, mesh, st, hm, ik, subspace_tol, filter_params, scf_iter, prior_residuals)
Driver for Chebyshev filter-based solver.
real(real64), parameter, public m_half
Definition: global.F90:193
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)