42 LOGICAL :: use_occ_orbs = .false., use_virt_orbs = .false.
43 LOGICAL :: occ_orbs_orthogonal = .false., virt_orbs_orthogonal = .false.
46 INTEGER :: tensor_type = 0
48 LOGICAL :: neglect_quadratic_term = .false.
50 LOGICAL :: update_p = .false., update_q = .false., calculate_energy_corr = .false.
52 INTEGER :: conjugator = 0
55 LOGICAL :: pp_preconditioner_full = .false., &
56 qq_preconditioner_full = .false.
58 REAL(kind=
dp) :: eps_convergence = 0.0_dp
59 REAL(kind=
dp) :: eps_filter = 0.0_dp
60 INTEGER :: max_iter = 0
62 LOGICAL :: converged = .false.
63 INTEGER :: order_lanczos = 0
64 REAL(kind=
dp) :: eps_lancsoz = 0.0_dp
65 INTEGER :: max_iter_lanczos = 0
67 REAL(kind=
dp) :: energy_correction = 0.0_dp
86 TYPE(
dbcsr_type),
POINTER :: matrix_qp_template => null()
87 TYPE(
dbcsr_type),
POINTER :: matrix_pq_template => null()
114 env%use_occ_orbs = .true.
115 env%use_virt_orbs = .false.
116 env%occ_orbs_orthogonal = .false.
117 env%virt_orbs_orthogonal = .false.
119 env%neglect_quadratic_term = .false.
120 env%calculate_energy_corr = .true.
121 env%update_p = .false.
122 env%update_q = .false.
123 env%pp_preconditioner_full = .true.
124 env%qq_preconditioner_full = .false.
126 env%eps_convergence = 1.0e-8_dp
127 env%eps_filter = 1.0e-8_dp
129 env%order_lanczos = 3
130 env%eps_lancsoz = 1.0e-4_dp
131 env%max_iter_lanczos = 40
132 env%converged = .false.
135 NULLIFY (env%p_index_up)
136 NULLIFY (env%p_index_down)
137 NULLIFY (env%q_index_up)
138 NULLIFY (env%q_index_down)
140 NULLIFY (env%matrix_ks)
141 NULLIFY (env%matrix_p)
142 NULLIFY (env%matrix_t)
143 NULLIFY (env%matrix_v)
144 NULLIFY (env%matrix_x_guess)
145 NULLIFY (env%matrix_qp_template)
146 NULLIFY (env%matrix_pq_template)
184 occ_orbs_orthogonal, virt_orbs_orthogonal, neglect_quadratic_term, &
185 update_p, update_q, eps_convergence, eps_filter, max_iter, &
186 p_index_up, p_index_down, q_index_up, q_index_down, matrix_ks, matrix_p, &
187 matrix_qp_template, matrix_pq_template, &
188 matrix_t, matrix_v, copy_matrix_x, energy_correction, calculate_energy_corr, &
189 converged, qq_preconditioner_full, pp_preconditioner_full)
192 LOGICAL,
OPTIONAL :: use_occ_orbs, use_virt_orbs
193 INTEGER,
OPTIONAL :: tensor_type
194 LOGICAL,
OPTIONAL :: occ_orbs_orthogonal, &
195 virt_orbs_orthogonal, &
196 neglect_quadratic_term, update_p, &
198 REAL(kind=
dp),
OPTIONAL :: eps_convergence, eps_filter
199 INTEGER,
OPTIONAL :: max_iter
200 TYPE(
dbcsr_type),
OPTIONAL,
POINTER :: p_index_up, p_index_down, q_index_up, q_index_down, &
201 matrix_ks, matrix_p, matrix_qp_template, matrix_pq_template, matrix_t, matrix_v
203 REAL(kind=
dp),
OPTIONAL :: energy_correction
204 LOGICAL,
OPTIONAL :: calculate_energy_corr, converged, &
205 qq_preconditioner_full, &
206 pp_preconditioner_full
208 IF (
PRESENT(use_occ_orbs)) use_occ_orbs = env%use_occ_orbs
209 IF (
PRESENT(use_virt_orbs)) use_virt_orbs = env%use_virt_orbs
210 IF (
PRESENT(occ_orbs_orthogonal)) occ_orbs_orthogonal = &
211 env%occ_orbs_orthogonal
212 IF (
PRESENT(virt_orbs_orthogonal)) virt_orbs_orthogonal = &
213 env%virt_orbs_orthogonal
214 IF (
PRESENT(tensor_type)) tensor_type = env%tensor_type
215 IF (
PRESENT(neglect_quadratic_term)) neglect_quadratic_term = &
216 env%neglect_quadratic_term
217 IF (
PRESENT(calculate_energy_corr)) calculate_energy_corr = &
218 env%calculate_energy_corr
219 IF (
PRESENT(update_p)) update_p = env%update_p
220 IF (
PRESENT(update_q)) update_q = env%update_q
221 IF (
PRESENT(pp_preconditioner_full)) pp_preconditioner_full = &
222 env%pp_preconditioner_full
223 IF (
PRESENT(qq_preconditioner_full)) qq_preconditioner_full = &
224 env%qq_preconditioner_full
225 IF (
PRESENT(eps_convergence)) eps_convergence = env%eps_convergence
226 IF (
PRESENT(eps_filter)) eps_filter = env%eps_filter
227 IF (
PRESENT(max_iter)) max_iter = env%max_iter
228 IF (
PRESENT(matrix_ks)) matrix_ks => env%matrix_ks
229 IF (
PRESENT(matrix_p)) matrix_p => env%matrix_p
230 IF (
PRESENT(matrix_t)) matrix_t => env%matrix_t
231 IF (
PRESENT(matrix_v)) matrix_v => env%matrix_v
232 IF (
PRESENT(matrix_qp_template)) matrix_qp_template => &
233 env%matrix_qp_template
234 IF (
PRESENT(matrix_pq_template)) matrix_pq_template => &
235 env%matrix_pq_template
236 IF (
PRESENT(p_index_up)) p_index_up => env%p_index_up
237 IF (
PRESENT(q_index_up)) q_index_up => env%q_index_up
238 IF (
PRESENT(p_index_down)) p_index_down => env%p_index_down
239 IF (
PRESENT(q_index_down)) q_index_down => env%q_index_down
240 IF (
PRESENT(copy_matrix_x))
THEN
243 IF (
PRESENT(energy_correction)) energy_correction = env%energy_correction
244 IF (
PRESENT(converged)) converged = env%converged
281 use_virt_orbs, tensor_type, &
282 occ_orbs_orthogonal, virt_orbs_orthogonal, neglect_quadratic_term, &
283 update_p, update_q, eps_convergence, eps_filter, max_iter, &
284 p_index_up, p_index_down, q_index_up, q_index_down, matrix_ks, matrix_p, &
285 matrix_qp_template, matrix_pq_template, &
286 matrix_t, matrix_v, matrix_x_guess, calculate_energy_corr, conjugator, &
287 qq_preconditioner_full, pp_preconditioner_full)
292 LOGICAL,
OPTIONAL :: use_occ_orbs, use_virt_orbs
293 INTEGER,
OPTIONAL :: tensor_type
294 LOGICAL,
OPTIONAL :: occ_orbs_orthogonal, &
295 virt_orbs_orthogonal, &
296 neglect_quadratic_term, update_p, &
298 REAL(kind=
dp),
OPTIONAL :: eps_convergence, eps_filter
299 INTEGER,
OPTIONAL :: max_iter
300 TYPE(
dbcsr_type),
OPTIONAL,
TARGET :: p_index_up, p_index_down, q_index_up, q_index_down, &
301 matrix_ks, matrix_p, matrix_qp_template, matrix_pq_template, matrix_t, matrix_v, &
303 LOGICAL,
OPTIONAL :: calculate_energy_corr
304 INTEGER,
OPTIONAL :: conjugator
305 LOGICAL,
OPTIONAL :: qq_preconditioner_full, &
306 pp_preconditioner_full
308 env%para_env => para_env
309 env%blacs_env => blacs_env
311 IF (
PRESENT(use_occ_orbs)) env%use_occ_orbs = use_occ_orbs
312 IF (
PRESENT(use_virt_orbs)) env%use_virt_orbs = use_virt_orbs
313 IF (
PRESENT(occ_orbs_orthogonal)) env%occ_orbs_orthogonal = &
315 IF (
PRESENT(virt_orbs_orthogonal)) env%virt_orbs_orthogonal = &
317 IF (
PRESENT(tensor_type)) env%tensor_type = tensor_type
318 IF (
PRESENT(neglect_quadratic_term)) env%neglect_quadratic_term = &
319 neglect_quadratic_term
320 IF (
PRESENT(calculate_energy_corr)) env%calculate_energy_corr = &
321 calculate_energy_corr
322 IF (
PRESENT(update_p)) env%update_p = update_p
323 IF (
PRESENT(update_q)) env%update_q = update_q
324 IF (
PRESENT(pp_preconditioner_full)) env%pp_preconditioner_full = &
325 pp_preconditioner_full
326 IF (
PRESENT(qq_preconditioner_full)) env%qq_preconditioner_full = &
327 qq_preconditioner_full
328 IF (
PRESENT(eps_convergence)) env%eps_convergence = eps_convergence
329 IF (
PRESENT(eps_filter)) env%eps_filter = eps_filter
330 IF (
PRESENT(max_iter)) env%max_iter = max_iter
331 IF (
PRESENT(conjugator)) env%conjugator = conjugator
332 IF (
PRESENT(matrix_ks)) env%matrix_ks => matrix_ks
333 IF (
PRESENT(matrix_p)) env%matrix_p => matrix_p
334 IF (
PRESENT(matrix_t)) env%matrix_t => matrix_t
335 IF (
PRESENT(matrix_v)) env%matrix_v => matrix_v
336 IF (
PRESENT(matrix_x_guess)) env%matrix_x_guess => matrix_x_guess
337 IF (
PRESENT(matrix_qp_template)) env%matrix_qp_template => &
339 IF (
PRESENT(matrix_pq_template)) env%matrix_pq_template => &
341 IF (
PRESENT(p_index_up)) env%p_index_up => p_index_up
342 IF (
PRESENT(q_index_up)) env%q_index_up => q_index_up
343 IF (
PRESENT(p_index_down)) env%p_index_down => p_index_down
344 IF (
PRESENT(q_index_down)) env%q_index_down => q_index_down
subroutine, public ct_step_env_set(env, para_env, blacs_env, use_occ_orbs, use_virt_orbs, tensor_type, occ_orbs_orthogonal, virt_orbs_orthogonal, neglect_quadratic_term, update_p, update_q, eps_convergence, eps_filter, max_iter, p_index_up, p_index_down, q_index_up, q_index_down, matrix_ks, matrix_p, matrix_qp_template, matrix_pq_template, matrix_t, matrix_v, matrix_x_guess, calculate_energy_corr, conjugator, qq_preconditioner_full, pp_preconditioner_full)
...
subroutine, public ct_step_env_get(env, use_occ_orbs, use_virt_orbs, tensor_type, occ_orbs_orthogonal, virt_orbs_orthogonal, neglect_quadratic_term, update_p, update_q, eps_convergence, eps_filter, max_iter, p_index_up, p_index_down, q_index_up, q_index_down, matrix_ks, matrix_p, matrix_qp_template, matrix_pq_template, matrix_t, matrix_v, copy_matrix_x, energy_correction, calculate_energy_corr, converged, qq_preconditioner_full, pp_preconditioner_full)
...