19 USE dbcsr_api,
ONLY: dbcsr_p_type,&
22 #include "./base/base_uses.f90"
27 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
28 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_diis_types'
30 PUBLIC :: qs_diis_buffer_type
32 PUBLIC :: qs_diis_buffer_type_sparse, &
34 qs_diis_buffer_type_kp, &
43 TYPE qs_diis_buffer_type
44 INTEGER :: nbuffer = -1
46 TYPE(cp_fm_type),
DIMENSION(:, :),
POINTER :: error => null()
47 TYPE(cp_fm_type),
DIMENSION(:, :),
POINTER :: param => null()
48 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: b_matrix => null()
49 END TYPE qs_diis_buffer_type
58 TYPE qs_diis_buffer_p_type
59 TYPE(qs_diis_buffer_type),
POINTER :: diis_buffer => null()
60 END TYPE qs_diis_buffer_p_type
69 TYPE qs_diis_buffer_type_sparse
70 INTEGER :: nbuffer = -1
72 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: error => null()
73 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: param => null()
74 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: b_matrix => null()
75 END TYPE qs_diis_buffer_type_sparse
77 TYPE qs_diis_buffer_p_type_sparse
78 TYPE(qs_diis_buffer_type_sparse),
POINTER :: diis_buffer => null()
79 END TYPE qs_diis_buffer_p_type_sparse
88 TYPE qs_diis_buffer_type_kp
89 INTEGER :: nbuffer = -1
91 TYPE(cp_cfm_type),
DIMENSION(:),
POINTER :: smat => null()
92 TYPE(cp_cfm_type),
DIMENSION(:, :, :),
POINTER :: param => null()
93 TYPE(cp_cfm_type),
DIMENSION(:, :, :),
POINTER :: error => null()
94 COMPLEX(KIND=dp),
DIMENSION(:, :),
POINTER :: b_matrix => null()
95 END TYPE qs_diis_buffer_type_kp
97 TYPE qs_diis_buffer_p_type_kp
98 TYPE(qs_diis_buffer_type_kp),
POINTER :: diis_buffer => null()
99 END TYPE qs_diis_buffer_p_type_kp
111 TYPE(qs_diis_buffer_type),
INTENT(INOUT) :: diis_buffer
113 IF (
ASSOCIATED(diis_buffer%b_matrix))
THEN
114 DEALLOCATE (diis_buffer%b_matrix)
116 CALL cp_fm_release(diis_buffer%error)
117 CALL cp_fm_release(diis_buffer%param)
130 TYPE(qs_diis_buffer_type_sparse),
INTENT(INOUT) :: diis_buffer
134 IF (
ASSOCIATED(diis_buffer%b_matrix))
THEN
135 DEALLOCATE (diis_buffer%b_matrix)
137 IF (
ASSOCIATED(diis_buffer%error))
THEN
138 DO j = 1,
SIZE(diis_buffer%error, 2)
139 DO i = 1,
SIZE(diis_buffer%error, 1)
140 CALL dbcsr_release(diis_buffer%error(i, j)%matrix)
141 DEALLOCATE (diis_buffer%error(i, j)%matrix)
144 DEALLOCATE (diis_buffer%error)
146 IF (
ASSOCIATED(diis_buffer%param))
THEN
147 DO j = 1,
SIZE(diis_buffer%param, 2)
148 DO i = 1,
SIZE(diis_buffer%param, 1)
149 CALL dbcsr_release(diis_buffer%param(i, j)%matrix)
150 DEALLOCATE (diis_buffer%param(i, j)%matrix)
153 DEALLOCATE (diis_buffer%param)
162 TYPE(qs_diis_buffer_type_kp),
INTENT(INOUT) :: diis_buffer
166 IF (
ASSOCIATED(diis_buffer%b_matrix))
THEN
167 DEALLOCATE (diis_buffer%b_matrix)
169 IF (
ASSOCIATED(diis_buffer%smat))
THEN
170 DO i = 1,
SIZE(diis_buffer%smat)
173 DEALLOCATE (diis_buffer%smat)
175 IF (
ASSOCIATED(diis_buffer%error))
THEN
176 DO k = 1,
SIZE(diis_buffer%error, 3)
177 DO j = 1,
SIZE(diis_buffer%error, 2)
178 DO i = 1,
SIZE(diis_buffer%error, 1)
183 DEALLOCATE (diis_buffer%error)
185 IF (
ASSOCIATED(diis_buffer%param))
THEN
186 DO k = 1,
SIZE(diis_buffer%param, 3)
187 DO j = 1,
SIZE(diis_buffer%param, 2)
188 DO i = 1,
SIZE(diis_buffer%param, 1)
193 DEALLOCATE (diis_buffer%param)
Represents a complex full matrix distributed on many processors.
subroutine, public cp_cfm_release(matrix)
Releases a full matrix.
represent a full matrix distributed on many processors
Defines the basic variable types.
integer, parameter, public dp
buffer for the diis of the scf
subroutine, public qs_diis_b_release_kp(diis_buffer)
releases the given diis KP buffer
subroutine, public qs_diis_b_release(diis_buffer)
releases the given diis buffer (see doc/ReferenceCounting.html)
subroutine, public qs_diis_b_release_sparse(diis_buffer)
releases the given diis buffer (see doc/ReferenceCounting.html)