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
139 env%use_occ_orbs = .true.
140 env%use_virt_orbs = .false.
141 env%occ_orbs_orthogonal = .false.
142 env%virt_orbs_orthogonal = .false.
144 env%neglect_quadratic_term = .false.
145 env%calculate_energy_corr = .true.
146 env%update_p = .false.
147 env%update_q = .false.
148 env%pp_preconditioner_full = .true.
149 env%qq_preconditioner_full = .false.
151 env%eps_convergence = 1.0e-8_dp
152 env%eps_filter = 1.0e-8_dp
154 env%order_lanczos = 3
155 env%eps_lancsoz = 1.0e-4_dp
156 env%max_iter_lanczos = 40
158 env%converged = .false.
161 NULLIFY (env%p_index_up)
162 NULLIFY (env%p_index_down)
163 NULLIFY (env%q_index_up)
164 NULLIFY (env%q_index_down)
166 NULLIFY (env%matrix_ks)
167 NULLIFY (env%matrix_p)
168 NULLIFY (env%matrix_t)
169 NULLIFY (env%matrix_v)
170 NULLIFY (env%matrix_x_guess)
171 NULLIFY (env%matrix_qp_template)
172 NULLIFY (env%matrix_pq_template)
210 occ_orbs_orthogonal, virt_orbs_orthogonal, neglect_quadratic_term, &
211 update_p, update_q, eps_convergence, eps_filter, max_iter, &
212 p_index_up, p_index_down, q_index_up, q_index_down, matrix_ks, matrix_p, &
213 matrix_qp_template, matrix_pq_template, &
214 matrix_t, matrix_v, copy_matrix_x, energy_correction, calculate_energy_corr, &
215 converged, qq_preconditioner_full, pp_preconditioner_full)
218 LOGICAL,
OPTIONAL :: use_occ_orbs, use_virt_orbs
219 INTEGER,
OPTIONAL :: tensor_type
220 LOGICAL,
OPTIONAL :: occ_orbs_orthogonal, &
221 virt_orbs_orthogonal, &
222 neglect_quadratic_term, update_p, &
224 REAL(kind=
dp),
OPTIONAL :: eps_convergence, eps_filter
225 INTEGER,
OPTIONAL :: max_iter
226 TYPE(
dbcsr_type),
OPTIONAL,
POINTER :: p_index_up, p_index_down, q_index_up, q_index_down, &
227 matrix_ks, matrix_p, matrix_qp_template, matrix_pq_template, matrix_t, matrix_v
229 REAL(kind=
dp),
OPTIONAL :: energy_correction
230 LOGICAL,
OPTIONAL :: calculate_energy_corr, converged, &
231 qq_preconditioner_full, &
232 pp_preconditioner_full
250 IF (
PRESENT(use_occ_orbs)) use_occ_orbs = env%use_occ_orbs
251 IF (
PRESENT(use_virt_orbs)) use_virt_orbs = env%use_virt_orbs
252 IF (
PRESENT(occ_orbs_orthogonal)) occ_orbs_orthogonal = &
253 env%occ_orbs_orthogonal
254 IF (
PRESENT(virt_orbs_orthogonal)) virt_orbs_orthogonal = &
255 env%virt_orbs_orthogonal
256 IF (
PRESENT(tensor_type)) tensor_type = env%tensor_type
257 IF (
PRESENT(neglect_quadratic_term)) neglect_quadratic_term = &
258 env%neglect_quadratic_term
259 IF (
PRESENT(calculate_energy_corr)) calculate_energy_corr = &
260 env%calculate_energy_corr
261 IF (
PRESENT(update_p)) update_p = env%update_p
262 IF (
PRESENT(update_q)) update_q = env%update_q
263 IF (
PRESENT(pp_preconditioner_full)) pp_preconditioner_full = &
264 env%pp_preconditioner_full
265 IF (
PRESENT(qq_preconditioner_full)) qq_preconditioner_full = &
266 env%qq_preconditioner_full
267 IF (
PRESENT(eps_convergence)) eps_convergence = env%eps_convergence
268 IF (
PRESENT(eps_filter)) eps_filter = env%eps_filter
269 IF (
PRESENT(max_iter)) max_iter = env%max_iter
271 IF (
PRESENT(matrix_ks)) matrix_ks => env%matrix_ks
272 IF (
PRESENT(matrix_p)) matrix_p => env%matrix_p
273 IF (
PRESENT(matrix_t)) matrix_t => env%matrix_t
274 IF (
PRESENT(matrix_v)) matrix_v => env%matrix_v
275 IF (
PRESENT(matrix_qp_template)) matrix_qp_template => &
276 env%matrix_qp_template
277 IF (
PRESENT(matrix_pq_template)) matrix_pq_template => &
278 env%matrix_pq_template
279 IF (
PRESENT(p_index_up)) p_index_up => env%p_index_up
280 IF (
PRESENT(q_index_up)) q_index_up => env%q_index_up
281 IF (
PRESENT(p_index_down)) p_index_down => env%p_index_down
282 IF (
PRESENT(q_index_down)) q_index_down => env%q_index_down
283 IF (
PRESENT(copy_matrix_x))
THEN
290 IF (
PRESENT(energy_correction)) energy_correction = env%energy_correction
291 IF (
PRESENT(converged)) converged = env%converged
328 use_virt_orbs, tensor_type, &
329 occ_orbs_orthogonal, virt_orbs_orthogonal, neglect_quadratic_term, &
330 update_p, update_q, eps_convergence, eps_filter, max_iter, &
331 p_index_up, p_index_down, q_index_up, q_index_down, matrix_ks, matrix_p, &
332 matrix_qp_template, matrix_pq_template, &
333 matrix_t, matrix_v, matrix_x_guess, calculate_energy_corr, conjugator, &
334 qq_preconditioner_full, pp_preconditioner_full)
339 LOGICAL,
OPTIONAL :: use_occ_orbs, use_virt_orbs
340 INTEGER,
OPTIONAL :: tensor_type
341 LOGICAL,
OPTIONAL :: occ_orbs_orthogonal, &
342 virt_orbs_orthogonal, &
343 neglect_quadratic_term, update_p, &
345 REAL(kind=
dp),
OPTIONAL :: eps_convergence, eps_filter
346 INTEGER,
OPTIONAL :: max_iter
347 TYPE(
dbcsr_type),
OPTIONAL,
TARGET :: p_index_up, p_index_down, q_index_up, q_index_down, &
348 matrix_ks, matrix_p, matrix_qp_template, matrix_pq_template, matrix_t, matrix_v, &
350 LOGICAL,
OPTIONAL :: calculate_energy_corr
351 INTEGER,
OPTIONAL :: conjugator
352 LOGICAL,
OPTIONAL :: qq_preconditioner_full, &
353 pp_preconditioner_full
369 env%para_env => para_env
370 env%blacs_env => blacs_env
372 IF (
PRESENT(use_occ_orbs)) env%use_occ_orbs = use_occ_orbs
373 IF (
PRESENT(use_virt_orbs)) env%use_virt_orbs = use_virt_orbs
374 IF (
PRESENT(occ_orbs_orthogonal)) env%occ_orbs_orthogonal = &
376 IF (
PRESENT(virt_orbs_orthogonal)) env%virt_orbs_orthogonal = &
378 IF (
PRESENT(tensor_type)) env%tensor_type = tensor_type
379 IF (
PRESENT(neglect_quadratic_term)) env%neglect_quadratic_term = &
380 neglect_quadratic_term
381 IF (
PRESENT(calculate_energy_corr)) env%calculate_energy_corr = &
382 calculate_energy_corr
383 IF (
PRESENT(update_p)) env%update_p = update_p
384 IF (
PRESENT(update_q)) env%update_q = update_q
385 IF (
PRESENT(pp_preconditioner_full)) env%pp_preconditioner_full = &
386 pp_preconditioner_full
387 IF (
PRESENT(qq_preconditioner_full)) env%qq_preconditioner_full = &
388 qq_preconditioner_full
389 IF (
PRESENT(eps_convergence)) env%eps_convergence = eps_convergence
390 IF (
PRESENT(eps_filter)) env%eps_filter = eps_filter
391 IF (
PRESENT(max_iter)) env%max_iter = max_iter
393 IF (
PRESENT(conjugator)) env%conjugator = conjugator
394 IF (
PRESENT(matrix_ks)) env%matrix_ks => matrix_ks
395 IF (
PRESENT(matrix_p)) env%matrix_p => matrix_p
396 IF (
PRESENT(matrix_t)) env%matrix_t => matrix_t
397 IF (
PRESENT(matrix_v)) env%matrix_v => matrix_v
398 IF (
PRESENT(matrix_x_guess)) env%matrix_x_guess => matrix_x_guess
399 IF (
PRESENT(matrix_qp_template)) env%matrix_qp_template => &
401 IF (
PRESENT(matrix_pq_template)) env%matrix_pq_template => &
403 IF (
PRESENT(p_index_up)) env%p_index_up => p_index_up
404 IF (
PRESENT(q_index_up)) env%q_index_up => q_index_up
405 IF (
PRESENT(p_index_down)) env%p_index_down => p_index_down
406 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)
...