1!--------------------------------------------------------------------------------------------------!
2!   CP2K: A general program to perform molecular dynamics simulations                              !
3!   Copyright (C) 2000 - 2019  CP2K developers group                                               !
4!--------------------------------------------------------------------------------------------------!
5
6! **************************************************************************************************
7!> \brief Allocatable vectors for NEGF based quantum transport calculations.
8! **************************************************************************************************
9
10MODULE negf_alloc_types
11   USE kinds,                           ONLY: dp
12#include "./base/base_uses.f90"
13
14   IMPLICIT NONE
15   PRIVATE
16
17   CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'negf_alloc_types'
18
19   PUBLIC :: negf_allocatable_ivector, negf_allocatable_rvector, &
20             negf_allocatable_imatrix, negf_allocatable_rmatrix
21
22! **************************************************************************************************
23!> \brief Allocatable 1-D integer vector
24! **************************************************************************************************
25   TYPE negf_allocatable_ivector
26      !> allocatable 1-D real vector
27      INTEGER, ALLOCATABLE, DIMENSION(:)                 :: vector
28   END TYPE negf_allocatable_ivector
29
30! **************************************************************************************************
31!> \brief Allocatable 1-D real vector
32! **************************************************************************************************
33   TYPE negf_allocatable_rvector
34      !> allocatable 1-D real vector
35      REAL(kind=dp), ALLOCATABLE, DIMENSION(:)           :: vector
36   END TYPE negf_allocatable_rvector
37
38! **************************************************************************************************
39!> \brief Allocatable 2-D integer matrix
40! **************************************************************************************************
41   TYPE negf_allocatable_imatrix
42      !> allocatable 2-D integer matrix
43      INTEGER, ALLOCATABLE, DIMENSION(:, :)              :: matrix
44   END TYPE negf_allocatable_imatrix
45
46! **************************************************************************************************
47!> \brief Allocatable 2-D real matrix
48! **************************************************************************************************
49   TYPE negf_allocatable_rmatrix
50      !> allocatable 2-D real matrix
51      REAL(kind=dp), ALLOCATABLE, DIMENSION(:, :)        :: matrix
52   END TYPE negf_allocatable_rmatrix
53
54END MODULE negf_alloc_types
55