49 TYPE(
dbcsr_p_type),
POINTER,
DIMENSION(:) :: inverse_history => null()
52 INTEGER :: in_use = -1, solver = -1, ihistory = -1, cholesky_use = -1
53 REAL(kind=
dp),
DIMENSION(:),
POINTER :: occ_evals => null(), full_evals => null()
54 REAL(kind=
dp) :: energy_gap = -1.0_dp
55 REAL(kind=
dp) :: condition_num = -1.0_dp
91 NULLIFY (preconditioner_env%sparse_matrix)
92 NULLIFY (preconditioner_env%fm)
93 NULLIFY (preconditioner_env%dbcsr_matrix)
94 NULLIFY (preconditioner_env%occ_evals)
95 NULLIFY (preconditioner_env%full_evals)
96 NULLIFY (preconditioner_env%inverse_history)
97 NULLIFY (preconditioner_env%max_ev_vector)
98 NULLIFY (preconditioner_env%min_ev_vector)
100 preconditioner_env%para_env => para_env
101 preconditioner_env%ctxt => blacs_env
104 preconditioner_env%condition_num = -1.0_dp
105 preconditioner_env%ihistory = 0
107 CALL preconditioner_env%para_env%retain()
108 CALL preconditioner_env%ctxt%retain()
120 CHARACTER(len=*),
PARAMETER :: routinen =
'destroy_preconditioner'
124 CALL timeset(routinen, handle)
126 IF (
ASSOCIATED(preconditioner_env%sparse_matrix))
THEN
128 NULLIFY (preconditioner_env%sparse_matrix)
131 IF (
ASSOCIATED(preconditioner_env%fm))
THEN
133 DEALLOCATE (preconditioner_env%fm)
134 NULLIFY (preconditioner_env%fm)
136 IF (
ASSOCIATED(preconditioner_env%dbcsr_matrix))
THEN
139 IF (
ASSOCIATED(preconditioner_env%max_ev_vector))
THEN
142 IF (
ASSOCIATED(preconditioner_env%min_ev_vector))
THEN
145 IF (
ASSOCIATED(preconditioner_env%occ_evals))
THEN
146 DEALLOCATE (preconditioner_env%occ_evals)
148 IF (
ASSOCIATED(preconditioner_env%full_evals))
THEN
149 DEALLOCATE (preconditioner_env%full_evals)
151 IF (
ASSOCIATED(preconditioner_env%inverse_history))
THEN
152 DO i = 1,
SIZE(preconditioner_env%inverse_history)
155 DEALLOCATE (preconditioner_env%inverse_history)
160 preconditioner_env%in_use = 0
163 CALL timestop(handle)