46#include "./base/base_uses.f90"
52 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'kpoint_types'
79 INTEGER :: nkpoint = -1
80 REAL(kind=
dp) :: wkp = 0.0_dp
81 REAL(kind=
dp),
DIMENSION(3) :: xkp = 0.0_dp
82 LOGICAL :: is_local = .false.
84 TYPE(
cp_fm_type),
DIMENSION(:, :),
POINTER :: pmat => null()
85 TYPE(
cp_fm_type),
DIMENSION(:, :),
POINTER :: wmat => null()
86 TYPE(
cp_fm_type),
DIMENSION(:, :),
POINTER :: smat => null()
87 TYPE(
cp_fm_type),
DIMENSION(:, :),
POINTER :: amat => null()
102 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rmat => null()
115 LOGICAL :: apply_symmetry = .false.
116 INTEGER :: nwght = -1
117 INTEGER :: nwred = -1
118 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: xkp => null()
119 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: rot => null()
120 INTEGER,
DIMENSION(:),
POINTER :: rotp => null()
121 INTEGER,
DIMENSION(:, :),
POINTER :: f0 => null()
124 TYPE kpoint_sym_p_type
126 END TYPE kpoint_sym_p_type
158 CHARACTER(LEN=default_string_length) :: kp_scheme =
""
159 INTEGER,
DIMENSION(3) :: nkp_grid = -1
160 REAL(kind=
dp),
DIMENSION(3) :: kp_shift = 0.0_dp
162 LOGICAL :: symmetry = .false.
163 LOGICAL :: full_grid = .false.
164 LOGICAL :: verbose = .false.
165 REAL(kind=
dp) :: eps_geo = 0.0_dp
166 INTEGER :: parallel_group_size = -1
168 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: xkp => null()
169 REAL(kind=
dp),
DIMENSION(:),
POINTER :: wkp => null()
174 para_env_inter_kp => null()
175 LOGICAL :: iogrp = .false.
176 INTEGER :: nkp_groups = -1
177 INTEGER,
DIMENSION(:, :),
POINTER :: kp_dist => null()
178 INTEGER,
DIMENSION(2) :: kp_range = -1
180 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index => null()
181 INTEGER,
DIMENSION(:, :),
POINTER :: index_to_cell => null()
183 DIMENSION(:),
POINTER :: sab_nl => null(), &
184 sab_nl_nosym => null()
187 POINTER :: kp_env => null()
189 POINTER :: kp_aux_env => null()
191 TYPE(kpoint_sym_p_type),
DIMENSION(:), &
192 POINTER :: kp_sym => null()
193 INTEGER,
DIMENSION(:),
POINTER :: atype => null()
194 INTEGER,
DIMENSION(:),
POINTER :: ibrot => null()
196 POINTER :: kind_rotmat => null()
215 cpassert(.NOT.
ASSOCIATED(kpoint))
219 kpoint%kp_scheme =
""
221 kpoint%kp_shift = 0.0_dp
222 kpoint%symmetry = .false.
223 kpoint%verbose = .false.
224 kpoint%full_grid = .false.
225 kpoint%use_real_wfn = .false.
226 kpoint%eps_geo = 1.0e-6_dp
227 kpoint%parallel_group_size = -1
231 NULLIFY (kpoint%xkp, kpoint%wkp)
232 NULLIFY (kpoint%kp_dist)
234 NULLIFY (kpoint%para_env)
235 NULLIFY (kpoint%blacs_env_all)
236 NULLIFY (kpoint%para_env_kp, kpoint%para_env_inter_kp)
237 NULLIFY (kpoint%blacs_env)
238 kpoint%nkp_groups = 0
239 kpoint%iogrp = .false.
242 NULLIFY (kpoint%kp_env)
243 NULLIFY (kpoint%mpools)
245 ALLOCATE (kpoint%cell_to_index(0:0, 0:0, 0:0))
246 kpoint%cell_to_index(:, :, :) = 1
248 ALLOCATE (kpoint%index_to_cell(0:0, 0:0))
249 kpoint%index_to_cell(:, :) = 0
263 IF (
ASSOCIATED(kpoint))
THEN
265 IF (
ASSOCIATED(kpoint%xkp))
THEN
266 DEALLOCATE (kpoint%xkp)
268 IF (
ASSOCIATED(kpoint%wkp))
THEN
269 DEALLOCATE (kpoint%wkp)
271 IF (
ASSOCIATED(kpoint%kp_dist))
THEN
272 DEALLOCATE (kpoint%kp_dist)
285 IF (
ASSOCIATED(kpoint%cell_to_index))
DEALLOCATE (kpoint%cell_to_index)
286 IF (
ASSOCIATED(kpoint%index_to_cell))
DEALLOCATE (kpoint%index_to_cell)
288 IF (
ASSOCIATED(kpoint%kp_env))
THEN
289 DO ik = 1,
SIZE(kpoint%kp_env)
290 CALL kpoint_env_release(kpoint%kp_env(ik)%kpoint_env)
292 DEALLOCATE (kpoint%kp_env)
295 IF (
ASSOCIATED(kpoint%kp_aux_env))
THEN
296 DO ik = 1,
SIZE(kpoint%kp_aux_env)
297 CALL kpoint_env_release(kpoint%kp_aux_env(ik)%kpoint_env)
299 DEALLOCATE (kpoint%kp_aux_env)
302 IF (
ASSOCIATED(kpoint%kp_sym))
THEN
303 DO ik = 1,
SIZE(kpoint%kp_sym)
304 CALL kpoint_sym_release(kpoint%kp_sym(ik)%kpoint_sym)
306 DEALLOCATE (kpoint%kp_sym)
309 IF (
ASSOCIATED(kpoint%atype))
DEALLOCATE (kpoint%atype)
310 IF (
ASSOCIATED(kpoint%ibrot))
DEALLOCATE (kpoint%ibrot)
312 IF (
ASSOCIATED(kpoint%kind_rotmat))
THEN
313 DO i = 1,
SIZE(kpoint%kind_rotmat, 1)
314 DO j = 1,
SIZE(kpoint%kind_rotmat, 2)
315 IF (
ASSOCIATED(kpoint%kind_rotmat(i, j)%rmat))
THEN
316 DEALLOCATE (kpoint%kind_rotmat(i, j)%rmat)
320 DEALLOCATE (kpoint%kind_rotmat)
323 IF (
ASSOCIATED(kpoint%scf_diis_buffer))
THEN
325 DEALLOCATE (kpoint%scf_diis_buffer)
367 SUBROUTINE get_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, &
368 full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, &
369 para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, &
370 kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, &
371 sab_nl, sab_nl_nosym)
373 CHARACTER(LEN=*),
OPTIONAL :: kp_scheme
374 INTEGER,
DIMENSION(3),
OPTIONAL :: nkp_grid
375 REAL(kind=
dp),
DIMENSION(3),
OPTIONAL :: kp_shift
376 LOGICAL,
OPTIONAL :: symmetry, verbose, full_grid, &
378 REAL(kind=
dp),
OPTIONAL :: eps_geo
379 INTEGER,
OPTIONAL :: parallel_group_size
380 INTEGER,
DIMENSION(2),
OPTIONAL :: kp_range
381 INTEGER,
OPTIONAL :: nkp
382 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: xkp
383 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL,
POINTER :: wkp
389 POINTER :: kp_env, kp_aux_env
391 LOGICAL,
OPTIONAL :: iogrp
392 INTEGER,
OPTIONAL :: nkp_groups
393 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: kp_dist
394 INTEGER,
DIMENSION(:, :, :),
OPTIONAL,
POINTER :: cell_to_index
395 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: index_to_cell
397 OPTIONAL,
POINTER :: sab_nl, sab_nl_nosym
399 IF (
PRESENT(kp_scheme)) kp_scheme = kpoint%kp_scheme
400 IF (
PRESENT(nkp_grid)) nkp_grid = kpoint%nkp_grid
401 IF (
PRESENT(kp_shift)) kp_shift = kpoint%kp_shift
402 IF (
PRESENT(symmetry)) symmetry = kpoint%symmetry
403 IF (
PRESENT(verbose)) verbose = kpoint%verbose
404 IF (
PRESENT(full_grid)) full_grid = kpoint%full_grid
406 IF (
PRESENT(eps_geo)) eps_geo = kpoint%eps_geo
407 IF (
PRESENT(parallel_group_size)) parallel_group_size = kpoint%parallel_group_size
409 IF (
PRESENT(nkp)) nkp = kpoint%nkp
410 IF (
PRESENT(wkp)) wkp => kpoint%wkp
411 IF (
PRESENT(xkp)) xkp => kpoint%xkp
413 IF (
PRESENT(para_env)) para_env => kpoint%para_env
414 IF (
PRESENT(para_env_kp)) para_env_kp => kpoint%para_env_kp
415 IF (
PRESENT(para_env_inter_kp)) para_env_inter_kp => kpoint%para_env_inter_kp
416 IF (
PRESENT(blacs_env_all)) blacs_env_all => kpoint%blacs_env_all
417 IF (
PRESENT(blacs_env)) blacs_env => kpoint%blacs_env
419 IF (
PRESENT(iogrp)) iogrp = kpoint%iogrp
420 IF (
PRESENT(kp_range)) kp_range = kpoint%kp_range
421 IF (
PRESENT(nkp_groups)) nkp_groups = kpoint%nkp_groups
422 IF (
PRESENT(kp_dist)) kp_dist => kpoint%kp_dist
424 IF (
PRESENT(kp_env)) kp_env => kpoint%kp_env
425 IF (
PRESENT(kp_aux_env)) kp_aux_env => kpoint%kp_aux_env
426 IF (
PRESENT(mpools)) mpools => kpoint%mpools
428 IF (
PRESENT(cell_to_index)) cell_to_index => kpoint%cell_to_index
429 IF (
PRESENT(index_to_cell)) index_to_cell => kpoint%index_to_cell
430 IF (
PRESENT(sab_nl)) sab_nl => kpoint%sab_nl
431 IF (
PRESENT(sab_nl_nosym)) sab_nl_nosym => kpoint%sab_nl_nosym
468 SUBROUTINE set_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, &
469 full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, &
470 para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, &
471 kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, &
472 sab_nl, sab_nl_nosym)
474 CHARACTER(LEN=*),
OPTIONAL :: kp_scheme
475 INTEGER,
DIMENSION(3),
OPTIONAL :: nkp_grid
476 REAL(kind=
dp),
DIMENSION(3),
OPTIONAL :: kp_shift
477 LOGICAL,
OPTIONAL :: symmetry, verbose, full_grid, &
479 REAL(kind=
dp),
OPTIONAL :: eps_geo
480 INTEGER,
OPTIONAL :: parallel_group_size
481 INTEGER,
DIMENSION(2),
OPTIONAL :: kp_range
482 INTEGER,
OPTIONAL :: nkp
483 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: xkp
484 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL,
POINTER :: wkp
490 POINTER :: kp_env, kp_aux_env
492 LOGICAL,
OPTIONAL :: iogrp
493 INTEGER,
OPTIONAL :: nkp_groups
494 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: kp_dist
495 INTEGER,
DIMENSION(:, :, :),
OPTIONAL,
POINTER :: cell_to_index
496 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: index_to_cell
498 OPTIONAL,
POINTER :: sab_nl, sab_nl_nosym
500 IF (
PRESENT(kp_scheme)) kpoint%kp_scheme = kp_scheme
501 IF (
PRESENT(nkp_grid)) kpoint%nkp_grid = nkp_grid
502 IF (
PRESENT(kp_shift)) kpoint%kp_shift = kp_shift
503 IF (
PRESENT(symmetry)) kpoint%symmetry = symmetry
504 IF (
PRESENT(verbose)) kpoint%verbose = verbose
505 IF (
PRESENT(full_grid)) kpoint%full_grid = full_grid
507 IF (
PRESENT(eps_geo)) kpoint%eps_geo = eps_geo
508 IF (
PRESENT(parallel_group_size)) kpoint%parallel_group_size = parallel_group_size
510 IF (
PRESENT(nkp)) kpoint%nkp = nkp
511 IF (
PRESENT(wkp)) kpoint%wkp => wkp
512 IF (
PRESENT(xkp)) kpoint%xkp => xkp
514 IF (
PRESENT(para_env)) kpoint%para_env => para_env
515 IF (
PRESENT(para_env_kp)) kpoint%para_env_kp => para_env_kp
516 IF (
PRESENT(para_env_inter_kp)) kpoint%para_env_inter_kp => para_env_inter_kp
517 IF (
PRESENT(blacs_env_all)) kpoint%blacs_env_all => blacs_env_all
518 IF (
PRESENT(blacs_env)) kpoint%blacs_env => blacs_env
520 IF (
PRESENT(iogrp)) kpoint%iogrp = iogrp
521 IF (
PRESENT(kp_range)) kpoint%kp_range = kp_range
522 IF (
PRESENT(nkp_groups)) kpoint%nkp_groups = nkp_groups
523 IF (
PRESENT(kp_dist)) kpoint%kp_dist => kp_dist
525 IF (
PRESENT(kp_env)) kpoint%kp_env => kp_env
526 IF (
PRESENT(kp_env)) kpoint%kp_aux_env => kp_aux_env
527 IF (
PRESENT(mpools)) kpoint%mpools => mpools
528 IF (
PRESENT(sab_nl)) kpoint%sab_nl => sab_nl
529 IF (
PRESENT(sab_nl_nosym)) kpoint%sab_nl_nosym => sab_nl_nosym
531 IF (
PRESENT(cell_to_index))
THEN
532 IF (
ASSOCIATED(kpoint%cell_to_index))
DEALLOCATE (kpoint%cell_to_index)
533 kpoint%cell_to_index => cell_to_index
536 IF (
PRESENT(index_to_cell))
THEN
537 IF (
ASSOCIATED(kpoint%index_to_cell))
DEALLOCATE (kpoint%index_to_cell)
538 kpoint%index_to_cell => index_to_cell
553 REAL(kind=
dp),
DIMENSION(3, 3),
INTENT(IN) :: a_vec
555 CHARACTER(LEN=default_string_length) :: ustr
556 CHARACTER(LEN=default_string_length), &
557 DIMENSION(:),
POINTER :: tmpstringlist
558 INTEGER :: i, n_rep, nval, wfntype
561 REAL(kind=
dp),
DIMENSION(:),
POINTER :: reallist
567 nval =
SIZE(tmpstringlist)
569 kpoint%kp_scheme = tmpstringlist(1)
573 SELECT CASE (kpoint%kp_scheme)
578 CASE (
"MONKHORST-PACK")
581 READ (tmpstringlist(i), *) kpoint%nkp_grid(i - 1)
586 READ (tmpstringlist(i), *) kpoint%nkp_grid(i - 1)
589 READ (tmpstringlist(i), *) kpoint%kp_shift(i - 4)
596 ALLOCATE (kpoint%xkp(3, n_rep), kpoint%wkp(n_rep))
600 nval =
SIZE(reallist)
604 kpoint%xkp(1:3, i) = reallist(1:3)
605 CASE (
"CART_ANGSTROM")
606 kpoint%xkp(1:3, i) = (reallist(1)*a_vec(1, 1:3) + &
607 reallist(2)*a_vec(2, 1:3) + &
610 kpoint%xkp(1:3, i) = (reallist(1)*a_vec(1, 1:3) + &
611 reallist(2)*a_vec(2, 1:3) + &
612 reallist(3)*a_vec(3, 1:3))/
twopi
614 cpabort(
"Unknown Unit for kpoint definition")
616 kpoint%wkp(i) = reallist(4)
618 ff = 1.0_dp/sum(kpoint%wkp(:))
619 kpoint%wkp(:) = ff*kpoint%wkp(:)
630 i_val=kpoint%parallel_group_size)
631 SELECT CASE (wfntype)
633 kpoint%use_real_wfn = .true.
635 kpoint%use_real_wfn = .false.
641 kpoint%kp_scheme =
"NONE"
655 INTEGER,
INTENT(IN),
OPTIONAL :: iounit
664 IF (
PRESENT(dft_section))
THEN
666 ELSE IF (
PRESENT(iounit))
THEN
674 IF (kpoint%kp_scheme /=
"NONE")
THEN
675 WRITE (punit,
'(/," ",79("*"),/,T37,A,/," ",79("*"))')
"Kpoints"
677 SELECT CASE (kpoint%kp_scheme)
681 WRITE (punit,
'(A,T57,A)')
' BRILLOUIN|',
' Gamma-point calculation'
682 CASE (
"MONKHORST-PACK")
683 WRITE (punit,
'(A,T61,A20)')
' BRILLOUIN| K-point scheme ',
' Monkhorst-Pack'
684 WRITE (punit,
'(A,T66,3I5)')
' BRILLOUIN| K-Point grid', kpoint%nkp_grid
685 WRITE (punit,
'(A,T66,G15.6)')
' BRILLOUIN| Accuracy in Symmetry determination', kpoint%eps_geo
687 WRITE (punit,
'(A,T71,A10)')
' BRILLOUIN| K-point scheme ',
' MacDonald'
688 WRITE (punit,
'(A,T66,3I5)')
' BRILLOUIN| K-Point grid', kpoint%nkp_grid
689 WRITE (punit,
'(A,T51,3F10.4)')
' BRILLOUIN| K-Point shift', kpoint%kp_shift
690 WRITE (punit,
'(A,T66,G15.6)')
' BRILLOUIN| Accuracy in Symmetry determination', kpoint%eps_geo
692 WRITE (punit,
'(A,T71,A10)')
' BRILLOUIN| K-point scheme ',
' General'
696 IF (kpoint%kp_scheme /=
"NONE")
THEN
697 IF (kpoint%symmetry)
THEN
698 WRITE (punit,
'(A,T76,A)')
' BRILLOUIN| K-Point point group symmetrization',
' ON'
700 WRITE (punit,
'(A,T76,A)')
' BRILLOUIN| K-Point point group symmetrization',
' OFF'
702 IF (kpoint%use_real_wfn)
THEN
703 WRITE (punit,
'(A,T76,A)')
' BRILLOUIN| Wavefunction type',
' REAL'
705 WRITE (punit,
'(A,T73,A)')
' BRILLOUIN| Wavefunction type',
' COMPLEX'
707 IF (kpoint%full_grid)
THEN
708 WRITE (punit,
'(A,T76,A)')
' BRILLOUIN| Use full k-point grid '
710 IF (kpoint%kp_scheme /=
"GAMMA")
THEN
711 WRITE (punit,
'(A,T71,I10)')
' BRILLOUIN| List of Kpoints [2 Pi/Bohr]', kpoint%nkp
712 WRITE (punit,
'(A,T30,A,T48,A,T63,A,T78,A)') &
713 ' BRILLOUIN| Number ',
'Weight',
'X',
'Y',
'Z'
715 WRITE (punit,
'(A,I5,3X,4F15.5)')
' BRILLOUIN| ', i, kpoint%wkp(i), &
716 kpoint%xkp(1, i), kpoint%xkp(2, i), kpoint%xkp(3, i)
719 WRITE (punit,
'(" ",79("*"))')
724 IF (
PRESENT(dft_section))
THEN
738 cpassert(.NOT.
ASSOCIATED(kp_env))
745 kp_env%is_local = .false.
748 NULLIFY (kp_env%pmat)
749 NULLIFY (kp_env%wmat)
750 NULLIFY (kp_env%smat)
751 NULLIFY (kp_env%amat)
760 SUBROUTINE kpoint_env_release(kp_env)
765 IF (
ASSOCIATED(kp_env))
THEN
767 IF (
ASSOCIATED(kp_env%mos))
THEN
768 DO is = 1,
SIZE(kp_env%mos, 2)
769 DO ic = 1,
SIZE(kp_env%mos, 1)
773 DEALLOCATE (kp_env%mos)
788 END SUBROUTINE kpoint_env_release
802 INTEGER,
OPTIONAL :: nkpoint
803 REAL(kind=
dp),
OPTIONAL :: wkp
804 REAL(kind=
dp),
DIMENSION(3),
OPTIONAL :: xkp
805 LOGICAL,
OPTIONAL :: is_local
809 IF (
PRESENT(nkpoint)) nkpoint = kpoint_env%nkpoint
810 IF (
PRESENT(wkp)) wkp = kpoint_env%wkp
811 IF (
PRESENT(xkp)) xkp = kpoint_env%xkp
812 IF (
PRESENT(is_local)) is_local = kpoint_env%is_local
813 IF (
PRESENT(mos)) mos => kpoint_env%mos
825 cpassert(.NOT.
ASSOCIATED(kp_sym))
831 kp_sym%apply_symmetry = .false.
835 NULLIFY (kp_sym%rotp)
845 SUBROUTINE kpoint_sym_release(kp_sym)
848 IF (
ASSOCIATED(kp_sym))
THEN
850 IF (
ASSOCIATED(kp_sym%rot))
THEN
851 DEALLOCATE (kp_sym%rot)
853 IF (
ASSOCIATED(kp_sym%xkp))
THEN
854 DEALLOCATE (kp_sym%xkp)
856 IF (
ASSOCIATED(kp_sym%f0))
THEN
857 DEALLOCATE (kp_sym%f0)
859 IF (
ASSOCIATED(kp_sym%rotp))
THEN
860 DEALLOCATE (kp_sym%rotp)
867 END SUBROUTINE kpoint_sym_release
methods related to the blacs parallel environment
subroutine, public cp_blacs_env_release(blacs_env)
releases the given blacs_env
Represents a complex full matrix distributed on many processors.
subroutine, public cp_cfm_release(matrix)
Releases a full matrix.
represent a full matrix distributed on many processors
various routines to log and control the output. The idea is that decisions about where to log should ...
recursive integer function, public cp_logger_get_default_unit_nr(logger, local, skip_not_ionode)
asks the default unit number of the given logger. try to use cp_logger_get_unit_nr
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Types and basic routines needed for a kpoint calculation.
subroutine, public read_kpoint_section(kpoint, kpoint_section, a_vec)
Read the kpoint input section.
subroutine, public kpoint_sym_create(kp_sym)
Create a single kpoint symmetry environment.
subroutine, public set_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, sab_nl, sab_nl_nosym)
Set information in a kpoint environment.
subroutine, public get_kpoint_env(kpoint_env, nkpoint, wkp, xkp, is_local, mos)
Get information from a single kpoint environment.
subroutine, public kpoint_env_create(kp_env)
Create a single kpoint environment.
subroutine, public write_kpoint_info(kpoint, iounit, dft_section)
Write information on the kpoints to output.
subroutine, public kpoint_release(kpoint)
Release a kpoint environment, deallocate all data.
subroutine, public kpoint_create(kpoint)
Create a kpoint environment.
subroutine, public get_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, sab_nl, sab_nl_nosym)
Retrieve information from a kpoint environment.
Definition of mathematical constants and functions.
real(kind=dp), parameter, public twopi
Interface to the message passing library MPI.
subroutine, public mp_para_env_release(para_env)
releases the para object (to be called when you don't want anymore the shared copy of this object)
Definition of physical constants:
real(kind=dp), parameter, public angstrom
buffer for the diis of the scf
subroutine, public qs_diis_b_release_kp(diis_buffer)
releases the given diis KP buffer
wrapper for the pools of matrixes
subroutine, public mpools_release(mpools)
releases the given mpools
Definition and initialisation of the mo data type.
subroutine, public deallocate_mo_set(mo_set)
Deallocate a wavefunction data structure.
Define the neighbor list data types and the corresponding functionality.
Utilities for string manipulations.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
Represent a complex full matrix.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
Rotation matrices for basis sets.
Keeps information about a specific k-point.
Keeps symmetry information about a specific k-point.
Contains information about kpoints.
stores all the informations relevant to an mpi environment
build arrau of pointers to diis buffers in the k-point (complex full matrices) case
container for the pools of matrixes used by qs