(git:374b731)
Loading...
Searching...
No Matches
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! **************************************************************************************************
16 USE dbcsr_api, ONLY: dbcsr_copy,&
17 dbcsr_release,&
18 dbcsr_type
21 USE kinds, ONLY: dp
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
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
129CONTAINS
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
446END MODULE ct_types
447
methods related to the blacs parallel environment
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.
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
stores all the informations relevant to an mpi environment