Line data Source code
1 : !--------------------------------------------------------------------------------------------------!
2 : ! CP2K: A general program to perform molecular dynamics simulations !
3 : ! Copyright 2000-2025 CP2K developers group <https://cp2k.org> !
4 : ! !
5 : ! SPDX-License-Identifier: GPL-2.0-or-later !
6 : !--------------------------------------------------------------------------------------------------!
7 :
8 : ! **************************************************************************************************
9 : !> \brief types for tblite
10 : !> \author JVP
11 : !> \history creation 09.2024
12 : ! **************************************************************************************************
13 :
14 : MODULE tblite_types
15 :
16 : #if defined(__TBLITE)
17 : USE mctc_io, ONLY: structure_type, new
18 : USE tblite_xtb_calculator, ONLY: xtb_calculator
19 : USE tblite_container, ONLY: container_cache
20 : USE tblite_wavefunction_type, ONLY: wavefunction_type
21 : USE tblite_scf_potential, ONLY: potential_type
22 : #endif
23 :
24 : USE cp_dbcsr_api, ONLY: dbcsr_p_type
25 : USE cp_dbcsr_operations, ONLY: dbcsr_deallocate_matrix_set
26 : USE kinds, ONLY: dp
27 :
28 : #include "./base/base_uses.f90"
29 : IMPLICIT NONE
30 :
31 : PRIVATE
32 :
33 : CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'tblite_types'
34 :
35 : PUBLIC :: tblite_type, deallocate_tblite_type, allocate_tblite_type
36 :
37 : TYPE tblite_type
38 :
39 : LOGICAL :: use_virial = .FALSE.
40 : INTEGER, ALLOCATABLE :: el_num(:)
41 :
42 : REAL(KIND=dp), DIMENSION(3, 3) :: sigma = -1.0_dp
43 : REAL(KIND=dp), ALLOCATABLE :: e_hal(:)
44 : REAL(KIND=dp), ALLOCATABLE :: e_rep(:)
45 : REAL(KIND=dp), ALLOCATABLE :: e_disp(:)
46 : REAL(KIND=dp), ALLOCATABLE :: e_scd(:)
47 : REAL(KIND=dp), ALLOCATABLE :: e_es(:)
48 : REAL(KIND=dp), ALLOCATABLE :: selfenergy(:)
49 : REAL(KIND=dp), ALLOCATABLE :: cn(:)
50 :
51 : REAL(KIND=dp), ALLOCATABLE :: grad(:, :)
52 : !derivatives w. r. t. coordination number
53 : REAL(KIND=dp), ALLOCATABLE :: dsedcn(:)
54 : REAL(KIND=dp), ALLOCATABLE :: dcndr(:, :, :)
55 : REAL(KIND=dp), ALLOCATABLE :: dcndL(:, :, :)
56 :
57 : TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: dipbra => Null(), &
58 : dipket => Null()
59 : TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: quadbra => Null(), &
60 : quadket => Null()
61 :
62 : #if defined(__TBLITE)
63 : TYPE(structure_type) :: mol = structure_type()
64 : TYPE(xtb_calculator) :: calc = xtb_calculator()
65 : TYPE(container_cache) :: cache = container_cache()
66 : TYPE(container_cache) :: dcache = container_cache()
67 : TYPE(wavefunction_type) :: wfn = wavefunction_type()
68 : TYPE(potential_type) :: pot = potential_type()
69 : #endif
70 :
71 : END TYPE tblite_type
72 :
73 : CONTAINS
74 :
75 : ! **************************************************************************************************
76 : !> \brief ...
77 : !> \param tb_tblite ...
78 : ! **************************************************************************************************
79 0 : SUBROUTINE allocate_tblite_type(tb_tblite)
80 :
81 : TYPE(tblite_type), POINTER :: tb_tblite
82 :
83 0 : CALL deallocate_tblite_type(tb_tblite)
84 :
85 0 : ALLOCATE (tb_tblite)
86 :
87 0 : END SUBROUTINE allocate_tblite_type
88 :
89 : ! **************************************************************************************************
90 : !> \brief ...
91 : !> \param tb_tblite ...
92 : ! **************************************************************************************************
93 0 : SUBROUTINE deallocate_tblite_type(tb_tblite)
94 :
95 : TYPE(tblite_type), POINTER :: tb_tblite
96 :
97 0 : IF (ASSOCIATED(tb_tblite)) THEN
98 0 : IF (ALLOCATED(tb_tblite%el_num)) DEALLOCATE (tb_tblite%el_num)
99 :
100 0 : IF (ALLOCATED(tb_tblite%e_hal)) DEALLOCATE (tb_tblite%e_hal)
101 0 : IF (ALLOCATED(tb_tblite%e_rep)) DEALLOCATE (tb_tblite%e_rep)
102 0 : IF (ALLOCATED(tb_tblite%e_disp)) DEALLOCATE (tb_tblite%e_disp)
103 0 : IF (ALLOCATED(tb_tblite%e_scd)) DEALLOCATE (tb_tblite%e_scd)
104 0 : IF (ALLOCATED(tb_tblite%e_es)) DEALLOCATE (tb_tblite%e_es)
105 0 : IF (ALLOCATED(tb_tblite%selfenergy)) DEALLOCATE (tb_tblite%selfenergy)
106 0 : IF (ALLOCATED(tb_tblite%cn)) DEALLOCATE (tb_tblite%cn)
107 :
108 0 : IF (ALLOCATED(tb_tblite%grad)) DEALLOCATE (tb_tblite%grad)
109 0 : IF (ALLOCATED(tb_tblite%dsedcn)) DEALLOCATE (tb_tblite%dsedcn)
110 0 : IF (ALLOCATED(tb_tblite%dcndr)) DEALLOCATE (tb_tblite%dcndr)
111 0 : IF (ALLOCATED(tb_tblite%dcndL)) DEALLOCATE (tb_tblite%dcndL)
112 :
113 0 : IF (ASSOCIATED(tb_tblite%dipbra)) &
114 0 : CALL dbcsr_deallocate_matrix_set(tb_tblite%dipbra)
115 0 : IF (ASSOCIATED(tb_tblite%dipket)) &
116 0 : CALL dbcsr_deallocate_matrix_set(tb_tblite%dipket)
117 0 : IF (ASSOCIATED(tb_tblite%quadbra)) &
118 0 : CALL dbcsr_deallocate_matrix_set(tb_tblite%quadbra)
119 0 : IF (ASSOCIATED(tb_tblite%quadket)) &
120 0 : CALL dbcsr_deallocate_matrix_set(tb_tblite%quadket)
121 :
122 0 : DEALLOCATE (tb_tblite)
123 : END IF
124 :
125 0 : END SUBROUTINE deallocate_tblite_type
126 :
127 0 : END MODULE tblite_types
|