(git:ccc2433)
ct_types.F
Go to the documentation of this file.
1 !--------------------------------------------------------------------------------------------------!
2 ! CP2K: A general program to perform molecular dynamics simulations !
3 ! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4 ! !
5 ! SPDX-License-Identifier: GPL-2.0-or-later !
6 !--------------------------------------------------------------------------------------------------!
7 
8 ! **************************************************************************************************
9 !> \brief Types for all cayley transformation methods
10 !> \par History
11 !> 2011.06 created [Rustam Z Khaliullin]
12 !> \author Rustam Z Khaliullin
13 ! **************************************************************************************************
14 MODULE ct_types
15  USE cp_blacs_env, ONLY: cp_blacs_env_type
16  USE dbcsr_api, ONLY: dbcsr_copy,&
17  dbcsr_release,&
18  dbcsr_type
21  USE kinds, ONLY: dp
22  USE message_passing, ONLY: mp_para_env_type
23 #include "./base/base_uses.f90"
24 
25  IMPLICIT NONE
26 
27  PRIVATE
28 
29  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'ct_types'
30 
31  ! Public types
32  PUBLIC :: ct_step_env_type
33 
34  ! Public subroutines
36 
37  TYPE ct_step_env_type
38 
39  ! this type contains options for cayley transformation routines
40 
41  ! use orbitals or projectors?
42  LOGICAL :: use_occ_orbs = .false., use_virt_orbs = .false.
43  LOGICAL :: occ_orbs_orthogonal = .false., virt_orbs_orthogonal = .false.
44  ! tensor properties of matrix indeces:
45  ! tensor_up_down, tensor_orthogonal
46  INTEGER :: tensor_type = 0
47  ! neglect the quadratic term in riccati equations?
48  LOGICAL :: neglect_quadratic_term = .false.
49  ! what kind of output do we produce?
50  LOGICAL :: update_p = .false., update_q = .false., calculate_energy_corr = .false.
51  ! variety of conjugate gradient
52  INTEGER :: conjugator = 0
53 
54  ! type of preconditioner
55  LOGICAL :: pp_preconditioner_full = .false., &
56  qq_preconditioner_full = .false.
57 
58  REAL(KIND=dp) :: eps_convergence = 0.0_dp
59  REAL(KIND=dp) :: eps_filter = 0.0_dp
60  INTEGER :: max_iter = 0
61  !INTEGER :: nspins
62  LOGICAL :: converged = .false.
63  INTEGER :: order_lanczos = 0
64  REAL(KIND=dp) :: eps_lancsoz = 0.0_dp
65  INTEGER :: max_iter_lanczos = 0
66 
67  REAL(KIND=dp) :: energy_correction = 0.0_dp
68 
69 !SPIN!!! ! metric matrices for covariant to contravariant transformations
70 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER :: p_index_up=>NULL()
71 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER :: p_index_down=>NULL()
72 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER :: q_index_up=>NULL()
73 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER :: q_index_down=>NULL()
74 !SPIN!!!
75 !SPIN!!! ! kohn-sham, covariant-covariant representation
76 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER :: matrix_ks=>NULL()
77 !SPIN!!! ! density, contravariant-contravariant representation
78 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER :: matrix_p=>NULL()
79 !SPIN!!! ! occ orbitals, contravariant-covariant representation
80 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER :: matrix_t=>NULL()
81 !SPIN!!! ! virt orbitals, contravariant-covariant representation
82 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER :: matrix_v=>NULL()
83 !SPIN!!!
84 !SPIN!!! ! to avoid building Occ-by-N and Virt-vy-N matrices inside
85 !SPIN!!! ! the ct routines get them from the external code
86 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER :: matrix_qp_template=>NULL()
87 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER :: matrix_pq_template=>NULL()
88 !SPIN!!!
89 !SPIN!!! ! single excitation amplitudes
90 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), ALLOCATABLE :: matrix_x
91 !SPIN!!! ! residuals
92 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), ALLOCATABLE :: matrix_res
93 
94  ! metric matrices for covariant to contravariant transformations
95  TYPE(dbcsr_type), POINTER :: p_index_up => null()
96  TYPE(dbcsr_type), POINTER :: p_index_down => null()
97  TYPE(dbcsr_type), POINTER :: q_index_up => null()
98  TYPE(dbcsr_type), POINTER :: q_index_down => null()
99 
100  ! kohn-sham, covariant-covariant representation
101  TYPE(dbcsr_type), POINTER :: matrix_ks => null()
102  ! density, contravariant-contravariant representation
103  TYPE(dbcsr_type), POINTER :: matrix_p => null()
104  ! occ orbitals, contravariant-covariant representation
105  TYPE(dbcsr_type), POINTER :: matrix_t => null()
106  ! virt orbitals, contravariant-covariant representation
107  TYPE(dbcsr_type), POINTER :: matrix_v => null()
108 
109  ! to avoid building Occ-by-N and Virt-vy-N matrices inside
110  ! the ct routines get them from the external code
111  TYPE(dbcsr_type), POINTER :: matrix_qp_template => null()
112  TYPE(dbcsr_type), POINTER :: matrix_pq_template => null()
113 
114  ! guess for single excitation amplitudes
115  ! it is used exclusively as a guess, not modified
116  ! it should be given in the up_down representation
117  TYPE(dbcsr_type), POINTER :: matrix_x_guess => null()
118 
119  ! single excitation amplitudes
120  TYPE(dbcsr_type) :: matrix_x
121  ! residuals
122  TYPE(dbcsr_type) :: matrix_res
123 
124  TYPE(mp_para_env_type), POINTER :: para_env => null()
125  TYPE(cp_blacs_env_type), POINTER :: blacs_env => null()
126 
127  END TYPE
128 
129 CONTAINS
130 
131 ! **************************************************************************************************
132 !> \brief ...
133 !> \param env ...
134 ! **************************************************************************************************
135  SUBROUTINE ct_step_env_init(env)
136 
137  TYPE(ct_step_env_type) :: env
138 
139  env%use_occ_orbs = .true.
140  env%use_virt_orbs = .false.
141  env%occ_orbs_orthogonal = .false.
142  env%virt_orbs_orthogonal = .false.
143  env%tensor_type = tensor_orthogonal
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.
150 
151  env%eps_convergence = 1.0e-8_dp
152  env%eps_filter = 1.0e-8_dp
153  env%max_iter = 400
154  env%order_lanczos = 3
155  env%eps_lancsoz = 1.0e-4_dp
156  env%max_iter_lanczos = 40
157  !env%nspins = -1
158  env%converged = .false.
159  env%conjugator = cg_polak_ribiere
160 
161  NULLIFY (env%p_index_up)
162  NULLIFY (env%p_index_down)
163  NULLIFY (env%q_index_up)
164  NULLIFY (env%q_index_down)
165 
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)
173 
174  !RZK-warning read_parameters_from_input
175 
176  END SUBROUTINE ct_step_env_init
177 
178 ! **************************************************************************************************
179 !> \brief ...
180 !> \param env ...
181 !> \param use_occ_orbs ...
182 !> \param use_virt_orbs ...
183 !> \param tensor_type ...
184 !> \param occ_orbs_orthogonal ...
185 !> \param virt_orbs_orthogonal ...
186 !> \param neglect_quadratic_term ...
187 !> \param update_p ...
188 !> \param update_q ...
189 !> \param eps_convergence ...
190 !> \param eps_filter ...
191 !> \param max_iter ...
192 !> \param p_index_up ...
193 !> \param p_index_down ...
194 !> \param q_index_up ...
195 !> \param q_index_down ...
196 !> \param matrix_ks ...
197 !> \param matrix_p ...
198 !> \param matrix_qp_template ...
199 !> \param matrix_pq_template ...
200 !> \param matrix_t ...
201 !> \param matrix_v ...
202 !> \param copy_matrix_x ...
203 !> \param energy_correction ...
204 !> \param calculate_energy_corr ...
205 !> \param converged ...
206 !> \param qq_preconditioner_full ...
207 !> \param pp_preconditioner_full ...
208 ! **************************************************************************************************
209  SUBROUTINE ct_step_env_get(env, use_occ_orbs, use_virt_orbs, tensor_type, &
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)
216 
217  TYPE(ct_step_env_type) :: env
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, &
223  update_q
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
228  TYPE(dbcsr_type), OPTIONAL :: copy_matrix_x
229  REAL(kind=dp), OPTIONAL :: energy_correction
230  LOGICAL, OPTIONAL :: calculate_energy_corr, converged, &
231  qq_preconditioner_full, &
232  pp_preconditioner_full
233 
234 !INTEGER , OPTIONAL :: nspins
235 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: p_index_up
236 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: p_index_down
237 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: q_index_up
238 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: q_index_down
239 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: matrix_ks
240 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: matrix_p
241 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: matrix_t
242 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: matrix_v
243 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: matrix_qp_template
244 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: matrix_pq_template
245 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), POINTER, OPTIONAL :: matrix_x
246 !SPIN!!!
247 !SPIN!!! TYPE(dbcsr_type), DIMENSION(:), OPTIONAL :: copy_matrix_x
248 !INTEGER :: ispin
249 
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
270  !IF (PRESENT(nspins)) nspins = env%nspins
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
284  !DO ispin=1,env%nspins
285  !CALL dbcsr_copy(copy_matrix_x(ispin),env%matrix_x(ispin))
286  CALL dbcsr_copy(copy_matrix_x, env%matrix_x)
287  !ENDDO
288  END IF
289  !IF (PRESENT(matrix_x)) matrix_x => env%matrix_x
290  IF (PRESENT(energy_correction)) energy_correction = env%energy_correction
291  IF (PRESENT(converged)) converged = env%converged
292 
293  END SUBROUTINE ct_step_env_get
294 
295 ! **************************************************************************************************
296 !> \brief ...
297 !> \param env ...
298 !> \param para_env ...
299 !> \param blacs_env ...
300 !> \param use_occ_orbs ...
301 !> \param use_virt_orbs ...
302 !> \param tensor_type ...
303 !> \param occ_orbs_orthogonal ...
304 !> \param virt_orbs_orthogonal ...
305 !> \param neglect_quadratic_term ...
306 !> \param update_p ...
307 !> \param update_q ...
308 !> \param eps_convergence ...
309 !> \param eps_filter ...
310 !> \param max_iter ...
311 !> \param p_index_up ...
312 !> \param p_index_down ...
313 !> \param q_index_up ...
314 !> \param q_index_down ...
315 !> \param matrix_ks ...
316 !> \param matrix_p ...
317 !> \param matrix_qp_template ...
318 !> \param matrix_pq_template ...
319 !> \param matrix_t ...
320 !> \param matrix_v ...
321 !> \param matrix_x_guess ...
322 !> \param calculate_energy_corr ...
323 !> \param conjugator ...
324 !> \param qq_preconditioner_full ...
325 !> \param pp_preconditioner_full ...
326 ! **************************************************************************************************
327  SUBROUTINE ct_step_env_set(env, para_env, blacs_env, use_occ_orbs, &
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)
335 
336  TYPE(ct_step_env_type) :: env
337  TYPE(mp_para_env_type), POINTER :: para_env
338  TYPE(cp_blacs_env_type), POINTER :: blacs_env
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, &
344  update_q
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, &
349  matrix_x_guess
350  LOGICAL, OPTIONAL :: calculate_energy_corr
351  INTEGER, OPTIONAL :: conjugator
352  LOGICAL, OPTIONAL :: qq_preconditioner_full, &
353  pp_preconditioner_full
354 
355 !INTEGER , OPTIONAL :: nspins
356 !SPIN!!! TYPE(dbcsr_type), TARGET, DIMENSION(:), OPTIONAL :: p_index_up
357 !SPIN!!! TYPE(dbcsr_type), TARGET, DIMENSION(:), OPTIONAL :: p_index_down
358 !SPIN!!! TYPE(dbcsr_type), TARGET, DIMENSION(:), OPTIONAL :: q_index_up
359 !SPIN!!! TYPE(dbcsr_type), TARGET, DIMENSION(:), OPTIONAL :: q_index_down
360 !SPIN!!! TYPE(dbcsr_type), TARGET, DIMENSION(:), OPTIONAL :: matrix_ks
361 !SPIN!!! TYPE(dbcsr_type), TARGET, DIMENSION(:), OPTIONAL :: matrix_p
362 !SPIN!!! TYPE(dbcsr_type), TARGET, DIMENSION(:), OPTIONAL :: matrix_t
363 !SPIN!!! TYPE(dbcsr_type), TARGET, DIMENSION(:), OPTIONAL :: matrix_v
364 !SPIN!!! TYPE(dbcsr_type), TARGET, DIMENSION(:), OPTIONAL :: matrix_qp_template
365 !SPIN!!! TYPE(dbcsr_type), TARGET, DIMENSION(:), OPTIONAL :: matrix_pq_template
366 ! set para_env and blacs_env which are needed to operate with full matrices
367 ! it would be nice to have everything with cp_dbcsr matrices, well maybe later
368 
369  env%para_env => para_env
370  env%blacs_env => blacs_env
371 
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 = &
375  occ_orbs_orthogonal
376  IF (PRESENT(virt_orbs_orthogonal)) env%virt_orbs_orthogonal = &
377  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
392  !IF (PRESENT(nspins)) env%nspins = nspins
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 => &
400  matrix_qp_template
401  IF (PRESENT(matrix_pq_template)) env%matrix_pq_template => &
402  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
407 
408  END SUBROUTINE ct_step_env_set
409 
410 ! **************************************************************************************************
411 !> \brief ...
412 !> \param env ...
413 ! **************************************************************************************************
414  SUBROUTINE ct_step_env_clean(env)
415 
416  TYPE(ct_step_env_type) :: env
417 
418 !INTEGER :: ispin
419 
420  NULLIFY (env%para_env)
421  NULLIFY (env%blacs_env)
422 
423  !DO ispin=1,env%nspins
424  CALL dbcsr_release(env%matrix_x)
425  CALL dbcsr_release(env%matrix_res)
426  !CALL dbcsr_release(env%matrix_x(ispin))
427  !CALL dbcsr_release(env%matrix_res(ispin))
428  !ENDDO
429  !DEALLOCATE(env%matrix_x,env%matrix_res)
430 
431  NULLIFY (env%p_index_up)
432  NULLIFY (env%p_index_down)
433  NULLIFY (env%q_index_up)
434  NULLIFY (env%q_index_down)
435 
436  NULLIFY (env%matrix_ks)
437  NULLIFY (env%matrix_p)
438  NULLIFY (env%matrix_t)
439  NULLIFY (env%matrix_v)
440  NULLIFY (env%matrix_x_guess)
441  NULLIFY (env%matrix_qp_template)
442  NULLIFY (env%matrix_pq_template)
443 
444  END SUBROUTINE ct_step_env_clean
445 
446 END MODULE ct_types
447 
methods related to the blacs parallel environment
Definition: cp_blacs_env.F:15
Types for all cayley transformation methods.
Definition: ct_types.F:14
subroutine, public ct_step_env_clean(env)
...
Definition: ct_types.F:415
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)
...
Definition: ct_types.F:335
subroutine, public ct_step_env_init(env)
...
Definition: ct_types.F:136
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)
...
Definition: ct_types.F:216
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public tensor_orthogonal
integer, parameter, public cg_polak_ribiere
Defines the basic variable types.
Definition: kinds.F:23
integer, parameter, public dp
Definition: kinds.F:34
Interface to the message passing library MPI.