19 dbcsr_csr_dbcsr_blkrow_dist, dbcsr_csr_destroy, dbcsr_csr_type, dbcsr_csr_write, &
49#include "./base/base_uses.f90"
55 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'pao_io'
65 REAL(
dp),
DIMENSION(:, :),
ALLOCATABLE :: p
69 CHARACTER(LEN=default_string_length) :: name =
""
71 CHARACTER(LEN=default_string_length) :: prim_basis_name =
""
72 INTEGER :: prim_basis_size = -1
73 INTEGER :: pao_basis_size = -1
74 INTEGER :: nparams = -1
78 INTEGER,
PARAMETER,
PRIVATE :: file_format_version = 4
91 CHARACTER(LEN=default_string_length) :: param
92 INTEGER :: iatom, ikind, natoms
93 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atom2kind
94 INTEGER,
DIMENSION(:),
POINTER :: col_blk_sizes, row_blk_sizes
97 REAL(
dp),
ALLOCATABLE,
DIMENSION(:, :) :: hmat, positions
98 REAL(
dp),
DIMENSION(:, :),
POINTER :: block_x, buffer
105 cpassert(len_trim(pao%restart_file) > 0)
106 IF (pao%iw > 0)
WRITE (pao%iw,
'(A,A)')
" PAO| Reading matrix_X from restart file: ", trim(pao%restart_file)
112 particle_set=particle_set)
115 IF (para_env%is_source())
THEN
116 CALL pao_read_raw(pao%restart_file, param, hmat,
kinds, atom2kind, positions, xblocks)
119 IF (maxval(abs(hmat - cell%hmat)) > 1e-10)
THEN
120 cpwarn(
"Restarting from different cell")
124 IF (trim(param) /= trim(adjustl(
id2str(pao%parameterization))))
THEN
125 cpabort(
"Restart PAO parametrization does not match")
129 DO ikind = 1,
SIZE(
kinds)
134 IF (
SIZE(positions, 1) /= natoms)
THEN
135 cpabort(
"Number of atoms do not match")
140 IF (atom2kind(iatom) /= particle_set(iatom)%atomic_kind%kind_number)
THEN
141 cpabort(
"Restart atomic kinds do not match.")
148 diff = max(diff, maxval(abs(positions(iatom, :) - particle_set(iatom)%r)))
150 cpwarn_if(diff > 1e-10,
"Restarting from different atom positions")
156 CALL dbcsr_get_info(pao%matrix_X, row_blk_size=row_blk_sizes, col_blk_size=col_blk_sizes)
158 ALLOCATE (buffer(row_blk_sizes(iatom), col_blk_sizes(iatom)))
159 IF (para_env%is_source())
THEN
160 cpassert(row_blk_sizes(iatom) ==
SIZE(xblocks(iatom)%p, 1))
161 cpassert(col_blk_sizes(iatom) ==
SIZE(xblocks(iatom)%p, 2))
162 buffer = xblocks(iatom)%p
164 CALL para_env%bcast(buffer)
165 CALL dbcsr_get_block_p(matrix=pao%matrix_X, row=iatom, col=iatom, block=block_x, found=found)
166 IF (
ASSOCIATED(block_x))
THEN
187 SUBROUTINE pao_read_raw(filename, param, hmat, kinds, atom2kind, positions, xblocks, ml_range)
188 CHARACTER(LEN=default_path_length),
INTENT(IN) :: filename
189 CHARACTER(LEN=default_string_length),
INTENT(OUT) :: param
190 REAL(
dp),
ALLOCATABLE,
DIMENSION(:, :) :: hmat
192 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atom2kind
193 REAL(
dp),
ALLOCATABLE,
DIMENSION(:, :) :: positions
195 INTEGER,
DIMENSION(2),
INTENT(OUT),
OPTIONAL :: ml_range
197 CHARACTER(LEN=default_string_length) :: label, str_in
198 INTEGER :: i1, i2, iatom, ikind, ipot, natoms, &
199 nkinds, nparams, unit_nr, xblocks_read
201 REAL(
dp),
DIMENSION(3) :: pos_in
202 REAL(
dp),
DIMENSION(3, 3) :: hmat_angstrom
204 cpassert(.NOT.
ALLOCATED(hmat))
205 cpassert(.NOT.
ALLOCATED(
kinds))
206 cpassert(.NOT.
ALLOCATED(atom2kind))
207 cpassert(.NOT.
ALLOCATED(positions))
208 cpassert(.NOT.
ALLOCATED(xblocks))
214 CALL open_file(file_name=filename, file_status=
"OLD", file_form=
"FORMATTED", &
215 file_action=
"READ", unit_number=unit_nr)
218 READ (unit_nr, fmt=*) label, i1
219 IF (trim(label) /=
"Version")
THEN
220 cpabort(
"PAO restart file appears to be corrupted.")
222 IF (i1 /= file_format_version) cpabort(
"Restart PAO file format version is wrong")
225 READ (unit_nr, fmt=*) label
228 IF (trim(label) ==
"Parametrization")
THEN
229 READ (unit_nr, fmt=*) label, str_in
232 ELSE IF (trim(label) ==
"Cell")
THEN
233 READ (unit_nr, fmt=*) label, hmat_angstrom
234 ALLOCATE (hmat(3, 3))
235 hmat(:, :) = hmat_angstrom(:, :)/
angstrom
237 ELSE IF (trim(label) ==
"Nkinds")
THEN
238 READ (unit_nr, fmt=*) label, nkinds
239 ALLOCATE (
kinds(nkinds))
241 ELSE IF (trim(label) ==
"Kind")
THEN
242 READ (unit_nr, fmt=*) label, ikind, str_in, i1
243 cpassert(
ALLOCATED(
kinds))
244 kinds(ikind)%name = str_in
247 ELSE IF (trim(label) ==
"PrimBasis")
THEN
248 READ (unit_nr, fmt=*) label, ikind, i1, str_in
249 cpassert(
ALLOCATED(
kinds))
250 kinds(ikind)%prim_basis_size = i1
251 kinds(ikind)%prim_basis_name = str_in
253 ELSE IF (trim(label) ==
"PaoBasis")
THEN
254 READ (unit_nr, fmt=*) label, ikind, i1
255 cpassert(
ALLOCATED(
kinds))
256 kinds(ikind)%pao_basis_size = i1
258 ELSE IF (trim(label) ==
"NPaoPotentials")
THEN
259 READ (unit_nr, fmt=*) label, ikind, i1
260 cpassert(
ALLOCATED(
kinds))
261 ALLOCATE (
kinds(ikind)%pao_potentials(i1))
263 ELSE IF (trim(label) ==
"PaoPotential")
THEN
264 READ (unit_nr, fmt=*) label, ikind, ipot, i1, i2, r1, r2
265 cpassert(
ALLOCATED(
kinds(ikind)%pao_potentials))
266 kinds(ikind)%pao_potentials(ipot)%maxl = i1
267 kinds(ikind)%pao_potentials(ipot)%max_projector = i2
268 kinds(ikind)%pao_potentials(ipot)%beta = r1
269 kinds(ikind)%pao_potentials(ipot)%weight = r2
271 ELSE IF (trim(label) ==
"NParams")
THEN
272 READ (unit_nr, fmt=*) label, ikind, i1
273 cpassert(
ALLOCATED(
kinds))
274 kinds(ikind)%nparams = i1
276 ELSE IF (trim(label) ==
"Natoms")
THEN
277 READ (unit_nr, fmt=*) label, natoms
278 ALLOCATE (positions(natoms, 3), atom2kind(natoms), xblocks(natoms))
279 positions = 0.0_dp; atom2kind = -1
280 IF (
PRESENT(ml_range)) ml_range = [1, natoms]
282 ELSE IF (trim(label) ==
"MLRange")
THEN
286 READ (unit_nr, fmt=*) label, i1, i2
287 IF (
PRESENT(ml_range)) ml_range = [i1, i2]
289 ELSE IF (trim(label) ==
"Atom")
THEN
290 READ (unit_nr, fmt=*) label, iatom, str_in, pos_in
291 cpassert(
ALLOCATED(
kinds))
293 IF (trim(
kinds(ikind)%name) == trim(str_in))
EXIT
295 cpassert(
ALLOCATED(atom2kind) .AND.
ALLOCATED(positions))
296 atom2kind(iatom) = ikind
297 positions(iatom, :) = pos_in/
angstrom
299 ELSE IF (trim(label) ==
"Xblock")
THEN
300 READ (unit_nr, fmt=*) label, iatom
301 cpassert(
ALLOCATED(
kinds) .AND.
ALLOCATED(atom2kind))
302 ikind = atom2kind(iatom)
303 nparams =
kinds(ikind)%nparams
304 cpassert(nparams >= 0)
305 ALLOCATE (xblocks(iatom)%p(nparams, 1))
307 READ (unit_nr, fmt=*) label, iatom, xblocks(iatom)%p
308 xblocks_read = xblocks_read + 1
309 cpassert(iatom == xblocks_read)
311 ELSE IF (trim(label) ==
"THE_END")
THEN
315 READ (unit_nr, fmt=*) label
320 cpassert(xblocks_read == natoms)
334 INTEGER,
INTENT(IN) :: ikind
337 CHARACTER(LEN=default_string_length) :: name
338 INTEGER :: ipot, nparams, pao_basis_size, z
342 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
345 atomic_kind_set=atomic_kind_set, &
346 qs_kind_set=qs_kind_set)
348 IF (ikind >
SIZE(atomic_kind_set) .OR. ikind >
SIZE(qs_kind_set))
THEN
349 cpabort(
"Some kinds are missing.")
354 basis_set=basis_set, &
355 pao_basis_size=pao_basis_size, &
359 IF (pao_kind%nparams /= nparams)
THEN
360 cpabort(
"Number of parameters do not match")
362 IF (trim(pao_kind%name) /= trim(name))
THEN
363 cpabort(
"Kind names do not match")
365 IF (pao_kind%z /= z)
THEN
366 cpabort(
"Atomic numbers do not match")
368 IF (trim(pao_kind%prim_basis_name) /= trim(basis_set%name))
THEN
369 cpabort(
"Primary Basis-set name does not match")
371 IF (pao_kind%prim_basis_size /= basis_set%nsgf)
THEN
372 cpabort(
"Primary Basis-set size does not match")
374 IF (pao_kind%pao_basis_size /= pao_basis_size)
THEN
375 cpabort(
"PAO basis size does not match")
378 cpabort(
"Number of PAO_POTENTIALS does not match")
382 IF (pao_kind%pao_potentials(ipot)%maxl /=
pao_potentials(ipot)%maxl)
THEN
383 cpabort(
"PAO_POT_MAXL does not match")
385 IF (pao_kind%pao_potentials(ipot)%max_projector /=
pao_potentials(ipot)%max_projector)
THEN
386 cpabort(
"PAO_POT_MAX_PROJECTOR does not match")
388 IF (pao_kind%pao_potentials(ipot)%beta /=
pao_potentials(ipot)%beta)
THEN
389 cpwarn(
"PAO_POT_BETA does not match")
391 IF (pao_kind%pao_potentials(ipot)%weight /=
pao_potentials(ipot)%weight)
THEN
392 cpwarn(
"PAO_POT_WEIGHT does not match")
409 CHARACTER(len=*),
PARAMETER :: printkey_section =
'DFT%LS_SCF%PAO%PRINT%RESTART', &
410 routinen =
'pao_write_restart'
412 INTEGER :: handle, unit_max, unit_nr
417 CALL timeset(routinen, handle)
420 CALL get_qs_env(qs_env, input=input, para_env=para_env)
427 file_action=
"WRITE", &
428 file_position=
"REWIND", &
429 file_status=
"UNKNOWN", &
434 CALL para_env%max(unit_max)
435 IF (unit_max > 0)
THEN
436 IF (pao%iw > 0)
WRITE (pao%iw,
'(A,A)')
" PAO| Writing restart file."
437 IF (unit_nr > 0)
THEN
438 CALL write_restart_header(pao, qs_env, energy, unit_nr)
441 CALL pao_write_diagonal_blocks(para_env, pao%matrix_X,
"Xblock", unit_nr)
446 IF (unit_nr > 0)
WRITE (unit_nr,
'(A)')
"THE_END"
449 CALL timestop(handle)
459 SUBROUTINE pao_write_diagonal_blocks(para_env, matrix, label, unit_nr)
462 CHARACTER(LEN=*),
INTENT(IN) :: label
463 INTEGER,
INTENT(IN) :: unit_nr
465 INTEGER :: iatom, natoms
466 INTEGER,
DIMENSION(:),
POINTER :: col_blk_sizes, row_blk_sizes
468 REAL(
dp),
DIMENSION(:, :),
POINTER :: local_block, mpi_buffer
471 CALL dbcsr_get_info(matrix, row_blk_size=row_blk_sizes, col_blk_size=col_blk_sizes)
472 cpassert(
SIZE(row_blk_sizes) ==
SIZE(col_blk_sizes))
473 natoms =
SIZE(row_blk_sizes)
476 ALLOCATE (mpi_buffer(row_blk_sizes(iatom), col_blk_sizes(iatom)))
477 NULLIFY (local_block)
478 CALL dbcsr_get_block_p(matrix=matrix, row=iatom, col=iatom, block=local_block, found=found)
479 IF (
ASSOCIATED(local_block))
THEN
480 IF (
SIZE(local_block) > 0)
THEN
482 mpi_buffer(:, :) = local_block(:, :)
485 mpi_buffer(:, :) = 0.0_dp
488 CALL para_env%sum(mpi_buffer)
489 IF (unit_nr > 0)
THEN
490 WRITE (unit_nr, fmt=
"(A,1X,I10,1X)", advance=
'no') label, iatom
491 WRITE (unit_nr, *) mpi_buffer
493 DEALLOCATE (mpi_buffer)
497 IF (unit_nr > 0)
FLUSH (unit_nr)
499 END SUBROUTINE pao_write_diagonal_blocks
508 SUBROUTINE write_restart_header(pao, qs_env, energy, unit_nr)
512 INTEGER,
INTENT(IN) :: unit_nr
514 CHARACTER(LEN=default_string_length) :: kindname
515 INTEGER :: iatom, ikind, ipot, nparams, &
522 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
526 particle_set=particle_set, &
527 atomic_kind_set=atomic_kind_set, &
528 qs_kind_set=qs_kind_set)
530 WRITE (unit_nr,
"(A,5X,I0)")
"Version", file_format_version
531 WRITE (unit_nr,
"(A,5X,F20.10)")
"Energy", energy
532 WRITE (unit_nr,
"(A,5X,I0)")
"Step", pao%istep
533 WRITE (unit_nr,
"(A,5X,A)")
"Parametrization",
id2str(pao%parameterization)
536 WRITE (unit_nr,
"(A,5X,I0)")
"Nkinds",
SIZE(atomic_kind_set)
537 DO ikind = 1,
SIZE(atomic_kind_set)
540 pao_basis_size=pao_basis_size, &
544 WRITE (unit_nr,
"(A,5X,I10,1X,A,1X,I3)")
"Kind", ikind, trim(kindname), z
545 WRITE (unit_nr,
"(A,5X,I10,1X,I3)")
"NParams", ikind, nparams
546 WRITE (unit_nr,
"(A,5X,I10,1X,I10,1X,A)")
"PrimBasis", ikind, basis_set%nsgf, trim(basis_set%name)
547 WRITE (unit_nr,
"(A,5X,I10,1X,I3)")
"PaoBasis", ikind, pao_basis_size
548 WRITE (unit_nr,
"(A,5X,I10,1X,I3)")
"NPaoPotentials", ikind,
SIZE(
pao_potentials)
550 WRITE (unit_nr,
"(A,5X,I10,1X,I3)", advance=
'no')
"PaoPotential", ikind, ipot
551 WRITE (unit_nr,
"(1X,I3)", advance=
'no')
pao_potentials(ipot)%maxl
552 WRITE (unit_nr,
"(1X,I3)", advance=
'no')
pao_potentials(ipot)%max_projector
553 WRITE (unit_nr,
"(1X,F20.16)", advance=
'no')
pao_potentials(ipot)%beta
559 WRITE (unit_nr, fmt=
"(A,5X)", advance=
'no')
"Cell"
560 WRITE (unit_nr, *) cell%hmat*
angstrom
563 WRITE (unit_nr,
"(A,5X,I0)")
"Natoms",
SIZE(particle_set)
564 DO iatom = 1,
SIZE(particle_set)
565 kindname = particle_set(iatom)%atomic_kind%name
566 WRITE (unit_nr, fmt=
"(A,5X,I10,5X,A,1X)", advance=
'no')
"Atom ", iatom, trim(kindname)
567 WRITE (unit_nr, *) particle_set(iatom)%r*
angstrom
570 END SUBROUTINE write_restart_header
582 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_write_ks_matrix_csr'
584 CHARACTER(LEN=default_path_length) :: file_name, fileformat
585 INTEGER :: handle, ispin, output_unit, unit_nr
586 LOGICAL :: bin, do_kpoints, do_ks_csr_write, uptr
587 REAL(kind=
dp) :: thld
589 TYPE(dbcsr_csr_type) :: ks_mat_csr
593 CALL timeset(routinen, handle)
595 NULLIFY (dft_section)
606 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
608 IF (do_ks_csr_write .AND. (.NOT. do_kpoints))
THEN
614 fileformat =
"UNFORMATTED"
616 fileformat =
"FORMATTED"
619 DO ispin = 1,
SIZE(ls_scf_env%matrix_ks)
624 CALL dbcsr_copy(matrix_ks_nosym, ls_scf_env%matrix_ks(ispin))
630 WRITE (file_name,
'(A,I0)')
"PAO_KS_SPIN_", ispin
632 extension=
".csr", middle_name=trim(file_name), &
633 file_status=
"REPLACE", file_form=fileformat)
634 CALL dbcsr_csr_write(ks_mat_csr, unit_nr, upper_triangle=uptr, threshold=thld, binary=bin)
638 CALL dbcsr_csr_destroy(ks_mat_csr)
643 CALL timestop(handle)
657 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_write_s_matrix_csr'
659 CHARACTER(LEN=default_path_length) :: file_name, fileformat
660 INTEGER :: handle, output_unit, unit_nr
661 LOGICAL :: bin, do_kpoints, do_s_csr_write, uptr
662 REAL(kind=
dp) :: thld
664 TYPE(dbcsr_csr_type) :: s_mat_csr
668 CALL timeset(routinen, handle)
670 NULLIFY (dft_section)
681 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
683 IF (do_s_csr_write .AND. (.NOT. do_kpoints))
THEN
689 fileformat =
"UNFORMATTED"
691 fileformat =
"FORMATTED"
697 CALL dbcsr_copy(matrix_s_nosym, ls_scf_env%matrix_s)
703 WRITE (file_name,
'(A,I0)')
"PAO_S"
705 extension=
".csr", middle_name=trim(file_name), &
706 file_status=
"REPLACE", file_form=fileformat)
707 CALL dbcsr_csr_write(s_mat_csr, unit_nr, upper_triangle=uptr, threshold=thld, binary=bin)
711 CALL dbcsr_csr_destroy(s_mat_csr)
715 CALL timestop(handle)
729 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_write_hcore_matrix_csr'
731 INTEGER :: handle, output_unit
732 LOGICAL :: do_h_csr_write, do_kpoints
736 mark_used(ls_scf_env)
738 CALL timeset(routinen, handle)
740 NULLIFY (dft_section)
751 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
753 IF (do_h_csr_write .AND. (.NOT. do_kpoints))
THEN
754 CALL cp_warn(__location__,
"Writing the PAO Core Hamiltonian matrix in CSR format NYA")
757 CALL timestop(handle)
771 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_write_p_matrix_csr'
773 INTEGER :: handle, output_unit
774 LOGICAL :: do_kpoints, do_p_csr_write
778 mark_used(ls_scf_env)
780 CALL timeset(routinen, handle)
782 NULLIFY (dft_section)
793 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
795 IF (do_p_csr_write .AND. (.NOT. do_kpoints))
THEN
796 CALL cp_warn(__location__,
"Writing the PAO density matrix in CSR format NYA")
799 CALL timestop(handle)
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
Handles all functions related to the CELL.
logical function, public dbcsr_has_symmetry(matrix)
...
subroutine, public dbcsr_convert_dbcsr_to_csr(dbcsr_mat, csr_mat)
...
subroutine, public dbcsr_desymmetrize(matrix_a, matrix_b)
...
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
subroutine, public dbcsr_get_block_p(matrix, row, col, block, found, row_size, col_size)
...
subroutine, public dbcsr_get_info(matrix, nblkrows_total, nblkcols_total, nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, my_prow, my_pcol, local_rows, local_cols, proc_row_dist, proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, distribution, name, matrix_type, group)
...
subroutine, public dbcsr_csr_create_from_dbcsr(dbcsr_mat, csr_mat, dist_format, csr_sparsity, numnodes)
...
subroutine, public dbcsr_release(matrix)
...
Utility routines to open and close files. Tracking of preconnections.
subroutine, public open_file(file_name, file_status, file_form, file_action, file_position, file_pad, unit_number, debug, skip_get_unit_number, file_access)
Opens the requested file using a free unit number.
subroutine, public close_file(unit_number, file_status, keep_preconnection)
Close an open file given by its logical unit number. Optionally, keep the file and unit preconnected.
various routines to log and control the output. The idea is that decisions about where to log should ...
integer function, public cp_logger_get_default_io_unit(logger)
returns the unit nr for the ionode (-1 on all other processors) skips as well checks if the procs cal...
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,...
integer, parameter, public cp_p_file
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
Types needed for a linear scaling quickstep SCF run based on the density matrix.
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
integer, parameter, public default_path_length
Interface to the message passing library MPI.
Routines for reading and writing restart files.
subroutine, public pao_write_p_matrix_csr(qs_env, ls_scf_env)
writing the density matrix (NYA)
subroutine, public pao_write_hcore_matrix_csr(qs_env, ls_scf_env)
writing the core Hamiltonian matrix (NYA)
subroutine, public pao_kinds_ensure_equal(pao, qs_env, ikind, pao_kind)
Ensure that the kind read from the restart is equal to the kind curretly in use.
subroutine, public pao_write_restart(pao, qs_env, energy)
Writes restart file.
subroutine, public pao_write_ks_matrix_csr(qs_env, ls_scf_env)
writing the KS matrix (in terms of the PAO basis) in csr format into a file
subroutine, public pao_read_raw(filename, param, hmat, kinds, atom2kind, positions, xblocks, ml_range)
Reads a restart file into temporary datastructures.
subroutine, public pao_write_s_matrix_csr(qs_env, ls_scf_env)
writing the overlap matrix (in terms of the PAO basis) in csr format into a file
subroutine, public pao_read_restart(pao, qs_env)
Reads restart file.
Front-End for any PAO parametrization.
subroutine, public pao_param_count(pao, qs_env, ikind, nparams)
Returns the number of parameters for given atomic kind.
Factory routines for potentials used e.g. by pao_param_exp and pao_ml.
Types used by the PAO machinery.
Define the data structure for the particle information.
Definition of physical constants:
real(kind=dp), parameter, public angstrom
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, mimic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_vhxc, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, rhoz_cneo_set, ecoul_1c, rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, harris_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, wanniercentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs, do_rixs, tb_tblite)
Get the QUICKSTEP environment.
Define the quickstep kind type and their sub types.
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, cneo_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zatom, zeff, elec_conf, mao, lmax_dftb, alpha_core_charge, ccore_charge, core_charge, core_charge_radius, paw_proj_set, paw_atom, hard_radius, hard0_radius, max_rad_local, covalent_radius, vdw_radius, gpw_type_forced, harmonics, max_iso_not0, max_s_harm, grid_atom, ngrid_ang, ngrid_rad, lmax_rho0, dft_plus_u_atom, l_of_dft_plus_u, n_of_dft_plus_u, u_minus_j, hund_j, u_of_dft_plus_u, j_of_dft_plus_u, alpha_of_dft_plus_u, beta_of_dft_plus_u, j0_of_dft_plus_u, occupation_of_dft_plus_u, dispersion, bs_occupation, magnetization, no_optimize, addel, laddel, naddel, orbitals, max_scf, eps_scf, smear, u_ramping, u_minus_j_target, eps_u_ramping, proj_shell_charge, lr_atom, do_mtlr, u_j_loop, ao_coef, init_u_ramping_each_scf, reltmat, ghost, monovalent, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
stores all the informations relevant to an mpi environment
Holds information about a PAO potential.
Provides all information about a quickstep kind.