MPI-SCATCI 2.0
An MPI version of SCATCI
Loading...
Searching...
No Matches
Diagonalizer_module.f90
Go to the documentation of this file.
1! Copyright 2019
2!
3! For a comprehensive list of the developers that contributed to these codes
4! see the UK-AMOR website.
5!
6! This file is part of UKRmol-in (UKRmol+ suite).
7!
8! UKRmol-in is free software: you can redistribute it and/or modify
9! it under the terms of the GNU General Public License as published by
10! the Free Software Foundation, either version 3 of the License, or
11! (at your option) any later version.
12!
13! UKRmol-in is distributed in the hope that it will be useful,
14! but WITHOUT ANY WARRANTY; without even the implied warranty of
15! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16! GNU General Public License for more details.
17!
18! You should have received a copy of the GNU General Public License
19! along with UKRmol-in (in source/COPYING). Alternatively, you can also visit
20! <https://www.gnu.org/licenses/>.
21
22!> \brief Base type for all diagonalizers
23!> \authors A Al-Refaie
24!> \date 2017
25!>
26!> Individual specializations are included in the build depending on the CMake configuration flags.
27!>
28!> \note 16/01/2019 - Jakub Benda: Unifom coding style and expanded documentation.
29!>
30module diagonalizer_module
31
32 implicit none
33
34 type, abstract :: basediagonalizer
35 contains
36 procedure(generic_diagonalize), deferred :: diagonalize
37 end type basediagonalizer
38
39 abstract interface
40 subroutine generic_diagonalize(this, matrix_elements, num_eigenpair, dresult, all_procs, option, integrals)
41 use diagonalizerresult_module, only: diagonalizerresult
42 use baseintegral_module, only: baseintegral
43 use basematrix_module, only: basematrix
44 use options_module, only: options
45 use precisn, only: wp
46
47 import :: basediagonalizer
48
49 class(basediagonalizer) :: this
50 class(diagonalizerresult) :: dresult
51 class(basematrix), intent(in) :: matrix_elements
52 class(baseintegral), intent(in) :: integrals
53 type(options), intent(in) :: option
54 integer, intent(in) :: num_eigenpair
55 logical, intent(in) :: all_procs
56 end subroutine generic_diagonalize
57 end interface
58
59end module diagonalizer_module