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)))) &
125 cpabort(
"Restart PAO parametrization does not match")
128 DO ikind = 1,
SIZE(
kinds)
133 IF (
SIZE(positions, 1) /= natoms) &
134 cpabort(
"Number of atoms do not match")
138 IF (atom2kind(iatom) /= particle_set(iatom)%atomic_kind%kind_number) &
139 cpabort(
"Restart atomic kinds do not match.")
145 diff = max(diff, maxval(abs(positions(iatom, :) - particle_set(iatom)%r)))
147 cpwarn_if(diff > 1e-10,
"Restarting from different atom positions")
153 CALL dbcsr_get_info(pao%matrix_X, row_blk_size=row_blk_sizes, col_blk_size=col_blk_sizes)
155 ALLOCATE (buffer(row_blk_sizes(iatom), col_blk_sizes(iatom)))
156 IF (para_env%is_source())
THEN
157 cpassert(row_blk_sizes(iatom) ==
SIZE(xblocks(iatom)%p, 1))
158 cpassert(col_blk_sizes(iatom) ==
SIZE(xblocks(iatom)%p, 2))
159 buffer = xblocks(iatom)%p
161 CALL para_env%bcast(buffer)
162 CALL dbcsr_get_block_p(matrix=pao%matrix_X, row=iatom, col=iatom, block=block_x, found=found)
163 IF (
ASSOCIATED(block_x)) &
183 SUBROUTINE pao_read_raw(filename, param, hmat, kinds, atom2kind, positions, xblocks, ml_range)
184 CHARACTER(LEN=default_path_length),
INTENT(IN) :: filename
185 CHARACTER(LEN=default_string_length),
INTENT(OUT) :: param
186 REAL(
dp),
ALLOCATABLE,
DIMENSION(:, :) :: hmat
188 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atom2kind
189 REAL(
dp),
ALLOCATABLE,
DIMENSION(:, :) :: positions
191 INTEGER,
DIMENSION(2),
INTENT(OUT),
OPTIONAL :: ml_range
193 CHARACTER(LEN=default_string_length) :: label, str_in
194 INTEGER :: i1, i2, iatom, ikind, ipot, natoms, &
195 nkinds, nparams, unit_nr, xblocks_read
197 REAL(
dp),
DIMENSION(3) :: pos_in
198 REAL(
dp),
DIMENSION(3, 3) :: hmat_angstrom
200 cpassert(.NOT.
ALLOCATED(hmat))
201 cpassert(.NOT.
ALLOCATED(
kinds))
202 cpassert(.NOT.
ALLOCATED(atom2kind))
203 cpassert(.NOT.
ALLOCATED(positions))
204 cpassert(.NOT.
ALLOCATED(xblocks))
210 CALL open_file(file_name=filename, file_status=
"OLD", file_form=
"FORMATTED", &
211 file_action=
"READ", unit_number=unit_nr)
214 READ (unit_nr, fmt=*) label, i1
215 IF (trim(label) /=
"Version") &
216 cpabort(
"PAO restart file appears to be corrupted.")
217 IF (i1 /= file_format_version) cpabort(
"Restart PAO file format version is wrong")
220 READ (unit_nr, fmt=*) label
223 IF (trim(label) ==
"Parametrization")
THEN
224 READ (unit_nr, fmt=*) label, str_in
227 ELSE IF (trim(label) ==
"Cell")
THEN
228 READ (unit_nr, fmt=*) label, hmat_angstrom
229 ALLOCATE (hmat(3, 3))
230 hmat(:, :) = hmat_angstrom(:, :)/
angstrom
232 ELSE IF (trim(label) ==
"Nkinds")
THEN
233 READ (unit_nr, fmt=*) label, nkinds
234 ALLOCATE (
kinds(nkinds))
236 ELSE IF (trim(label) ==
"Kind")
THEN
237 READ (unit_nr, fmt=*) label, ikind, str_in, i1
238 cpassert(
ALLOCATED(
kinds))
239 kinds(ikind)%name = str_in
242 ELSE IF (trim(label) ==
"PrimBasis")
THEN
243 READ (unit_nr, fmt=*) label, ikind, i1, str_in
244 cpassert(
ALLOCATED(
kinds))
245 kinds(ikind)%prim_basis_size = i1
246 kinds(ikind)%prim_basis_name = str_in
248 ELSE IF (trim(label) ==
"PaoBasis")
THEN
249 READ (unit_nr, fmt=*) label, ikind, i1
250 cpassert(
ALLOCATED(
kinds))
251 kinds(ikind)%pao_basis_size = i1
253 ELSE IF (trim(label) ==
"NPaoPotentials")
THEN
254 READ (unit_nr, fmt=*) label, ikind, i1
255 cpassert(
ALLOCATED(
kinds))
256 ALLOCATE (
kinds(ikind)%pao_potentials(i1))
258 ELSE IF (trim(label) ==
"PaoPotential")
THEN
259 READ (unit_nr, fmt=*) label, ikind, ipot, i1, i2, r1, r2
260 cpassert(
ALLOCATED(
kinds(ikind)%pao_potentials))
261 kinds(ikind)%pao_potentials(ipot)%maxl = i1
262 kinds(ikind)%pao_potentials(ipot)%max_projector = i2
263 kinds(ikind)%pao_potentials(ipot)%beta = r1
264 kinds(ikind)%pao_potentials(ipot)%weight = r2
266 ELSE IF (trim(label) ==
"NParams")
THEN
267 READ (unit_nr, fmt=*) label, ikind, i1
268 cpassert(
ALLOCATED(
kinds))
269 kinds(ikind)%nparams = i1
271 ELSE IF (trim(label) ==
"Natoms")
THEN
272 READ (unit_nr, fmt=*) label, natoms
273 ALLOCATE (positions(natoms, 3), atom2kind(natoms), xblocks(natoms))
274 positions = 0.0_dp; atom2kind = -1
275 IF (
PRESENT(ml_range)) ml_range = [1, natoms]
277 ELSE IF (trim(label) ==
"MLRange")
THEN
281 READ (unit_nr, fmt=*) label, i1, i2
282 IF (
PRESENT(ml_range)) ml_range = [i1, i2]
284 ELSE IF (trim(label) ==
"Atom")
THEN
285 READ (unit_nr, fmt=*) label, iatom, str_in, pos_in
286 cpassert(
ALLOCATED(
kinds))
288 IF (trim(
kinds(ikind)%name) == trim(str_in))
EXIT
290 cpassert(
ALLOCATED(atom2kind) .AND.
ALLOCATED(positions))
291 atom2kind(iatom) = ikind
292 positions(iatom, :) = pos_in/
angstrom
294 ELSE IF (trim(label) ==
"Xblock")
THEN
295 READ (unit_nr, fmt=*) label, iatom
296 cpassert(
ALLOCATED(
kinds) .AND.
ALLOCATED(atom2kind))
297 ikind = atom2kind(iatom)
298 nparams =
kinds(ikind)%nparams
299 cpassert(nparams >= 0)
300 ALLOCATE (xblocks(iatom)%p(nparams, 1))
302 READ (unit_nr, fmt=*) label, iatom, xblocks(iatom)%p
303 xblocks_read = xblocks_read + 1
304 cpassert(iatom == xblocks_read)
306 ELSE IF (trim(label) ==
"THE_END")
THEN
310 READ (unit_nr, fmt=*) label
315 cpassert(xblocks_read == natoms)
329 INTEGER,
INTENT(IN) :: ikind
332 CHARACTER(LEN=default_string_length) :: name
333 INTEGER :: ipot, nparams, pao_basis_size, z
337 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
340 atomic_kind_set=atomic_kind_set, &
341 qs_kind_set=qs_kind_set)
343 IF (ikind >
SIZE(atomic_kind_set) .OR. ikind >
SIZE(qs_kind_set)) &
344 cpabort(
"Some kinds are missing.")
348 basis_set=basis_set, &
349 pao_basis_size=pao_basis_size, &
353 IF (pao_kind%nparams /= nparams) &
354 cpabort(
"Number of parameters do not match")
355 IF (trim(pao_kind%name) /= trim(name)) &
356 cpabort(
"Kind names do not match")
357 IF (pao_kind%z /= z) &
358 cpabort(
"Atomic numbers do not match")
359 IF (trim(pao_kind%prim_basis_name) /= trim(basis_set%name)) &
360 cpabort(
"Primary Basis-set name does not match")
361 IF (pao_kind%prim_basis_size /= basis_set%nsgf) &
362 cpabort(
"Primary Basis-set size does not match")
363 IF (pao_kind%pao_basis_size /= pao_basis_size) &
364 cpabort(
"PAO basis size does not match")
366 cpabort(
"Number of PAO_POTENTIALS does not match")
369 IF (pao_kind%pao_potentials(ipot)%maxl /=
pao_potentials(ipot)%maxl)
THEN
370 cpabort(
"PAO_POT_MAXL does not match")
372 IF (pao_kind%pao_potentials(ipot)%max_projector /=
pao_potentials(ipot)%max_projector)
THEN
373 cpabort(
"PAO_POT_MAX_PROJECTOR does not match")
375 IF (pao_kind%pao_potentials(ipot)%beta /=
pao_potentials(ipot)%beta)
THEN
376 cpwarn(
"PAO_POT_BETA does not match")
378 IF (pao_kind%pao_potentials(ipot)%weight /=
pao_potentials(ipot)%weight)
THEN
379 cpwarn(
"PAO_POT_WEIGHT does not match")
396 CHARACTER(len=*),
PARAMETER :: printkey_section =
'DFT%LS_SCF%PAO%PRINT%RESTART', &
397 routinen =
'pao_write_restart'
399 INTEGER :: handle, unit_max, unit_nr
404 CALL timeset(routinen, handle)
407 CALL get_qs_env(qs_env, input=input, para_env=para_env)
414 file_action=
"WRITE", &
415 file_position=
"REWIND", &
416 file_status=
"UNKNOWN", &
421 CALL para_env%max(unit_max)
422 IF (unit_max > 0)
THEN
423 IF (pao%iw > 0)
WRITE (pao%iw,
'(A,A)')
" PAO| Writing restart file."
425 CALL write_restart_header(pao, qs_env, energy, unit_nr)
427 CALL pao_write_diagonal_blocks(para_env, pao%matrix_X,
"Xblock", unit_nr)
432 IF (unit_nr > 0)
WRITE (unit_nr,
'(A)')
"THE_END"
435 CALL timestop(handle)
445 SUBROUTINE pao_write_diagonal_blocks(para_env, matrix, label, unit_nr)
448 CHARACTER(LEN=*),
INTENT(IN) :: label
449 INTEGER,
INTENT(IN) :: unit_nr
451 INTEGER :: iatom, natoms
452 INTEGER,
DIMENSION(:),
POINTER :: col_blk_sizes, row_blk_sizes
454 REAL(
dp),
DIMENSION(:, :),
POINTER :: local_block, mpi_buffer
457 CALL dbcsr_get_info(matrix, row_blk_size=row_blk_sizes, col_blk_size=col_blk_sizes)
458 cpassert(
SIZE(row_blk_sizes) ==
SIZE(col_blk_sizes))
459 natoms =
SIZE(row_blk_sizes)
462 ALLOCATE (mpi_buffer(row_blk_sizes(iatom), col_blk_sizes(iatom)))
463 NULLIFY (local_block)
464 CALL dbcsr_get_block_p(matrix=matrix, row=iatom, col=iatom, block=local_block, found=found)
465 IF (
ASSOCIATED(local_block))
THEN
466 IF (
SIZE(local_block) > 0) &
467 mpi_buffer(:, :) = local_block(:, :)
469 mpi_buffer(:, :) = 0.0_dp
472 CALL para_env%sum(mpi_buffer)
473 IF (unit_nr > 0)
THEN
474 WRITE (unit_nr, fmt=
"(A,1X,I10,1X)", advance=
'no') label, iatom
475 WRITE (unit_nr, *) mpi_buffer
477 DEALLOCATE (mpi_buffer)
481 IF (unit_nr > 0)
FLUSH (unit_nr)
483 END SUBROUTINE pao_write_diagonal_blocks
492 SUBROUTINE write_restart_header(pao, qs_env, energy, unit_nr)
496 INTEGER,
INTENT(IN) :: unit_nr
498 CHARACTER(LEN=default_string_length) :: kindname
499 INTEGER :: iatom, ikind, ipot, nparams, &
506 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
510 particle_set=particle_set, &
511 atomic_kind_set=atomic_kind_set, &
512 qs_kind_set=qs_kind_set)
514 WRITE (unit_nr,
"(A,5X,I0)")
"Version", file_format_version
515 WRITE (unit_nr,
"(A,5X,F20.10)")
"Energy", energy
516 WRITE (unit_nr,
"(A,5X,I0)")
"Step", pao%istep
517 WRITE (unit_nr,
"(A,5X,A)")
"Parametrization",
id2str(pao%parameterization)
520 WRITE (unit_nr,
"(A,5X,I0)")
"Nkinds",
SIZE(atomic_kind_set)
521 DO ikind = 1,
SIZE(atomic_kind_set)
524 pao_basis_size=pao_basis_size, &
528 WRITE (unit_nr,
"(A,5X,I10,1X,A,1X,I3)")
"Kind", ikind, trim(kindname), z
529 WRITE (unit_nr,
"(A,5X,I10,1X,I3)")
"NParams", ikind, nparams
530 WRITE (unit_nr,
"(A,5X,I10,1X,I10,1X,A)")
"PrimBasis", ikind, basis_set%nsgf, trim(basis_set%name)
531 WRITE (unit_nr,
"(A,5X,I10,1X,I3)")
"PaoBasis", ikind, pao_basis_size
532 WRITE (unit_nr,
"(A,5X,I10,1X,I3)")
"NPaoPotentials", ikind,
SIZE(
pao_potentials)
534 WRITE (unit_nr,
"(A,5X,I10,1X,I3)", advance=
'no')
"PaoPotential", ikind, ipot
535 WRITE (unit_nr,
"(1X,I3)", advance=
'no')
pao_potentials(ipot)%maxl
536 WRITE (unit_nr,
"(1X,I3)", advance=
'no')
pao_potentials(ipot)%max_projector
537 WRITE (unit_nr,
"(1X,F20.16)", advance=
'no')
pao_potentials(ipot)%beta
543 WRITE (unit_nr, fmt=
"(A,5X)", advance=
'no')
"Cell"
544 WRITE (unit_nr, *) cell%hmat*
angstrom
547 WRITE (unit_nr,
"(A,5X,I0)")
"Natoms",
SIZE(particle_set)
548 DO iatom = 1,
SIZE(particle_set)
549 kindname = particle_set(iatom)%atomic_kind%name
550 WRITE (unit_nr, fmt=
"(A,5X,I10,5X,A,1X)", advance=
'no')
"Atom ", iatom, trim(kindname)
551 WRITE (unit_nr, *) particle_set(iatom)%r*
angstrom
554 END SUBROUTINE write_restart_header
566 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_write_ks_matrix_csr'
568 CHARACTER(LEN=default_path_length) :: file_name, fileformat
569 INTEGER :: handle, ispin, output_unit, unit_nr
570 LOGICAL :: bin, do_kpoints, do_ks_csr_write, uptr
571 REAL(kind=
dp) :: thld
573 TYPE(dbcsr_csr_type) :: ks_mat_csr
577 CALL timeset(routinen, handle)
579 NULLIFY (dft_section)
590 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
592 IF (do_ks_csr_write .AND. (.NOT. do_kpoints))
THEN
598 fileformat =
"UNFORMATTED"
600 fileformat =
"FORMATTED"
603 DO ispin = 1,
SIZE(ls_scf_env%matrix_ks)
608 CALL dbcsr_copy(matrix_ks_nosym, ls_scf_env%matrix_ks(ispin))
614 WRITE (file_name,
'(A,I0)')
"PAO_KS_SPIN_", ispin
616 extension=
".csr", middle_name=trim(file_name), &
617 file_status=
"REPLACE", file_form=fileformat)
618 CALL dbcsr_csr_write(ks_mat_csr, unit_nr, upper_triangle=uptr, threshold=thld, binary=bin)
622 CALL dbcsr_csr_destroy(ks_mat_csr)
627 CALL timestop(handle)
641 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_write_s_matrix_csr'
643 CHARACTER(LEN=default_path_length) :: file_name, fileformat
644 INTEGER :: handle, output_unit, unit_nr
645 LOGICAL :: bin, do_kpoints, do_s_csr_write, uptr
646 REAL(kind=
dp) :: thld
648 TYPE(dbcsr_csr_type) :: s_mat_csr
652 CALL timeset(routinen, handle)
654 NULLIFY (dft_section)
665 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
667 IF (do_s_csr_write .AND. (.NOT. do_kpoints))
THEN
673 fileformat =
"UNFORMATTED"
675 fileformat =
"FORMATTED"
681 CALL dbcsr_copy(matrix_s_nosym, ls_scf_env%matrix_s)
687 WRITE (file_name,
'(A,I0)')
"PAO_S"
689 extension=
".csr", middle_name=trim(file_name), &
690 file_status=
"REPLACE", file_form=fileformat)
691 CALL dbcsr_csr_write(s_mat_csr, unit_nr, upper_triangle=uptr, threshold=thld, binary=bin)
695 CALL dbcsr_csr_destroy(s_mat_csr)
699 CALL timestop(handle)
713 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_write_hcore_matrix_csr'
715 INTEGER :: handle, output_unit
716 LOGICAL :: do_h_csr_write, do_kpoints
720 mark_used(ls_scf_env)
722 CALL timeset(routinen, handle)
724 NULLIFY (dft_section)
735 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
737 IF (do_h_csr_write .AND. (.NOT. do_kpoints))
THEN
738 CALL cp_warn(__location__,
"Writing the PAO Core Hamiltonian matrix in CSR format NYA")
741 CALL timestop(handle)
755 CHARACTER(len=*),
PARAMETER :: routinen =
'pao_write_p_matrix_csr'
757 INTEGER :: handle, output_unit
758 LOGICAL :: do_kpoints, do_p_csr_write
762 mark_used(ls_scf_env)
764 CALL timeset(routinen, handle)
766 NULLIFY (dft_section)
777 CALL get_qs_env(qs_env=qs_env, do_kpoints=do_kpoints)
779 IF (do_p_csr_write .AND. (.NOT. do_kpoints))
THEN
780 CALL cp_warn(__location__,
"Writing the PAO density matrix in CSR format NYA")
783 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, 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, 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, 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, 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.