37 INTEGER :: nbuffer = 0
39 INTEGER :: nstored = 0
40 INTEGER :: last_status = 0
41 LOGICAL :: last_restart = .false.
42 LOGICAL :: use_combined_fock = .false.
43 LOGICAL :: diis_state_valid = .false.
44 REAL(kind=
dp) :: last_objective = 0.0_dp
46 REAL(kind=
dp) :: last_old_fock_weight = 0.0_dp
47 REAL(kind=
dp) :: diis_weight = 0.0_dp
48 TYPE(
dbcsr_p_type),
DIMENSION(:, :, :),
POINTER :: density => null()
50 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: combined_fock => null()
51 INTEGER,
DIMENSION(:),
ALLOCATABLE :: generation
52 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: pf_metric
53 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: coefficients, state_energy
66 INTEGER,
INTENT(IN) :: nbuffer
68 buffer%nbuffer = max(nbuffer, 0)
71 buffer%last_status = 0
72 buffer%last_restart = .false.
73 buffer%use_combined_fock = .false.
74 buffer%diis_state_valid = .false.
75 buffer%last_objective = 0.0_dp
76 buffer%last_old_fock_weight = 0.0_dp
77 buffer%diis_weight = 0.0_dp
78 NULLIFY (buffer%density, buffer%fock, buffer%combined_fock)
92 buffer%last_status = 0
93 buffer%last_restart = .false.
94 buffer%use_combined_fock = .false.
95 buffer%diis_state_valid = .false.
96 buffer%last_objective = 0.0_dp
97 buffer%last_old_fock_weight = 0.0_dp
98 buffer%diis_weight = 0.0_dp
99 IF (
ALLOCATED(buffer%generation)) buffer%generation = 0
100 IF (
ALLOCATED(buffer%pf_metric)) buffer%pf_metric = 0.0_dp
101 IF (
ALLOCATED(buffer%coefficients)) buffer%coefficients = 0.0_dp
102 IF (
ALLOCATED(buffer%state_energy)) buffer%state_energy = huge(1.0_dp)
114 INTEGER :: icell, islot, ispin
116 IF (
ASSOCIATED(buffer%density))
THEN
117 DO icell = 1,
SIZE(buffer%density, 3)
118 DO ispin = 1,
SIZE(buffer%density, 2)
119 DO islot = 1,
SIZE(buffer%density, 1)
120 IF (
ASSOCIATED(buffer%density(islot, ispin, icell)%matrix))
THEN
126 DEALLOCATE (buffer%density)
129 IF (
ASSOCIATED(buffer%fock))
THEN
130 DO icell = 1,
SIZE(buffer%fock, 3)
131 DO ispin = 1,
SIZE(buffer%fock, 2)
132 DO islot = 1,
SIZE(buffer%fock, 1)
133 IF (
ASSOCIATED(buffer%fock(islot, ispin, icell)%matrix))
THEN
139 DEALLOCATE (buffer%fock)
142 IF (
ASSOCIATED(buffer%combined_fock))
THEN
143 DO icell = 1,
SIZE(buffer%combined_fock, 2)
144 DO ispin = 1,
SIZE(buffer%combined_fock, 1)
145 IF (
ASSOCIATED(buffer%combined_fock(ispin, icell)%matrix))
THEN
150 DEALLOCATE (buffer%combined_fock)
153 IF (
ALLOCATED(buffer%generation))
DEALLOCATE (buffer%generation)
154 IF (
ALLOCATED(buffer%pf_metric))
DEALLOCATE (buffer%pf_metric)
155 IF (
ALLOCATED(buffer%coefficients))
DEALLOCATE (buffer%coefficients)
156 IF (
ALLOCATED(buffer%state_energy))
DEALLOCATE (buffer%state_energy)