60#include "./base/base_uses.f90"
65 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_chargemol'
66 LOGICAL,
PARAMETER :: debug_this_module = .false.
68 INTEGER,
PARAMETER :: chargemol_lmax = 5
83 CHARACTER(LEN=*),
PARAMETER :: routinen =
'write_wfx'
85 CHARACTER(LEN=12),
DIMENSION(:),
POINTER :: bcgf_symbol
86 CHARACTER(len=2) :: asym
87 CHARACTER(len=20),
ALLOCATABLE,
DIMENSION(:) :: atom_symbols
88 CHARACTER(LEN=6),
DIMENSION(:),
POINTER :: bsgf_symbol
89 CHARACTER(LEN=default_path_length) :: filename
90 CHARACTER(LEN=timestamp_length) :: timestamp
91 INTEGER :: handle, i, iatom, icgf, ico, ikind, iloop, imo, ipgf, irow, iset, isgf, ishell, &
92 ispin, iwfx, lshell, max_l, ncgf, ncol_global, nelec_alpha, nelec_beta, nkpoint, noccup, &
93 nrow_global, nset, nsgf, nspins, num_atoms, output_unit, roks_high, roks_low, tot_npgf
94 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atom_of_kind, atomic_numbers, kind_of
95 INTEGER,
DIMENSION(:),
POINTER :: lmax, npgf, nshell
96 INTEGER,
DIMENSION(:, :),
POINTER :: l
97 LOGICAL :: do_kpoints, newl, periodic, unrestricted
99 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: atoms_cart, cmatrix, smatrix
100 REAL(kind=
dp),
DIMENSION(:),
POINTER :: core_charges
101 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: zet
102 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: gcc
114 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
122 CALL timeset(routinen, handle)
127 IF (output_unit > 0)
THEN
128 WRITE (output_unit,
'(/,T2,A)') &
129 '!-----------------------------------------------------------------------------!'
130 WRITE (output_unit,
'(T32,A)')
"Writing Chargemol wfx file..."
131 WRITE (output_unit,
'(T2,A)') &
132 '!-----------------------------------------------------------------------------!'
136 cpassert(
ASSOCIATED(qs_env))
137 CALL get_qs_env(qs_env, cell=cell, mos=mos, particle_set=particle_set, &
138 qs_kind_set=qs_kind_set, scf_env=scf_env, scf_control=scf_control, &
139 dft_control=dft_control, energy=energy, force=force, subsys=subsys, &
140 atomic_kind_set=atomic_kind_set, do_kpoints=do_kpoints, &
141 kpoints=kpoint_env, matrix_s=matrix_s)
143 nkpoint = kpoint_env%nkp
145 IF (scf_control%use_ot)
THEN
146 cpabort(
"OT is incompatible with .wfx output. Switch off OT.")
149 IF (dft_control%roks)
THEN
150 CALL cp_abort(__location__,
"The output of chargemol .wfx files is currently "// &
151 "implemented only for (un)restricted HF and Kohn-Sham-like methods.")
154 IF (dft_control%lsd)
THEN
155 unrestricted = .true.
157 unrestricted = .false.
169 extension=
".wfx", my_local=.false.)
171 CALL open_file(filename, file_status=
"UNKNOWN", &
172 file_action=
"WRITE", &
180 IF (nspins == 1)
THEN
181 nelec_alpha = mos(1)%nelectron/2
182 nelec_beta = nelec_alpha
184 nelec_alpha = mos(1)%nelectron
185 nelec_beta = mos(2)%nelectron
188 IF (dft_control%roks)
THEN
189 IF (mos(1)%homo > mos(2)%homo)
THEN
201 num_atoms =
SIZE(particle_set)
202 ALLOCATE (atoms_cart(3, num_atoms))
203 ALLOCATE (atom_symbols(num_atoms))
204 ALLOCATE (atomic_numbers(num_atoms))
205 ALLOCATE (core_charges(num_atoms))
208 DO iatom = 1, num_atoms
209 NULLIFY (orb_basis_set)
210 atoms_cart(1:3, iatom) = particle_set(iatom)%r(1:3)
212 element_symbol=asym, kind_number=ikind)
213 atom_symbols(iatom) = asym
215 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set, &
216 core_charge=core_charges(iatom))
217 IF (
ASSOCIATED(orb_basis_set))
THEN
219 nset=nset, lmax=lmax)
222 max_l = max(max_l, lmax(iset))
225 cpabort(
"Unknown basis set type. ")
227 IF (max_l > chargemol_lmax)
THEN
228 CALL cp_abort(__location__,
"Chargemol supports basis sets with l"// &
229 " up to 5 only (h angular functions).")
236 WRITE (iwfx,
"(A)")
"# Chargemol input file generated by CP2K "
238 WRITE (iwfx,
"(A,/)")
"# Creation date "//timestamp(:19)
240 WRITE (iwfx,
"(A)")
"<Title>"
241 WRITE (iwfx, *) trim(logger%iter_info%project_name)
242 WRITE (iwfx,
"(A,/)")
"</Title>"
248 WRITE (iwfx,
"(A)")
"<Keywords>"
249 WRITE (iwfx,
"(A)")
"GTO"
250 WRITE (iwfx,
"(A,/)")
"</Keywords>"
255 WRITE (iwfx,
"(A)")
"#<Model>"
256 IF (unrestricted)
THEN
257 WRITE (iwfx,
"(A)")
"#Unrestricted Kohn-Sham"
259 WRITE (iwfx,
"(A)")
"#Restricted Kohn-Sham"
261 WRITE (iwfx,
"(A,/)")
"#</Model>"
266 WRITE (iwfx,
"(A)")
"<Number of Nuclei>"
267 WRITE (iwfx,
"(I6)") num_atoms
268 WRITE (iwfx,
"(A,/)")
"</Number of Nuclei>"
273 WRITE (iwfx,
"(A)")
"<Number of Occupied Molecular Orbitals>"
275 IF (dft_control%roks .AND. nspins == 2)
THEN
276 noccup = max(mos(1)%homo, mos(2)%homo)
278 DO ispin = 1, dft_control%nspins
279 noccup = noccup + mos(ispin)%homo
282 WRITE (iwfx,
"(2I6)") noccup
283 WRITE (iwfx,
"(A,/)")
"</Number of Occupied Molecular Orbitals>"
288 WRITE (iwfx,
"(A)")
"<Number of Perturbations>"
289 WRITE (iwfx,
"(I6)") 0
290 WRITE (iwfx,
"(A,/)")
"</Number of Perturbations>"
295 WRITE (iwfx,
"(A)")
"<Net Charge>"
296 WRITE (iwfx,
"(F8.4)") real(dft_control%charge, kind=
dp)
297 WRITE (iwfx,
"(A,/)")
"</Net Charge>"
302 WRITE (iwfx,
"(A)")
"<Number of Electrons>"
303 WRITE (iwfx,
"(I6)") scf_env%nelectron
304 WRITE (iwfx,
"(A,/)")
"</Number of Electrons>"
309 WRITE (iwfx,
"(A)")
"<Number of Alpha Electrons>"
310 WRITE (iwfx,
"(I6)") nelec_alpha
311 WRITE (iwfx,
"(A,/)")
"</Number of Alpha Electrons>"
316 WRITE (iwfx,
"(A)")
"<Number of Beta Electrons>"
317 WRITE (iwfx,
"(I6)") nelec_beta
318 WRITE (iwfx,
"(A,/)")
"</Number of Beta Electrons>"
323 WRITE (iwfx,
"(A)")
"<Electron Spin Multiplicity>"
324 WRITE (iwfx,
"(I4)") dft_control%multiplicity
325 WRITE (iwfx,
"(A,/)")
"</Electron Spin Multiplicity>"
330 WRITE (iwfx,
"(A)")
"<Number of Core Electrons>"
331 WRITE (iwfx,
"(F16.10)") sum(atomic_numbers) - sum(core_charges)
332 WRITE (iwfx,
"(A,/)")
"</Number of Core Electrons>"
337 WRITE (iwfx,
"(A)")
"<Nuclear Names>"
338 DO iatom = 1, num_atoms
339 WRITE (iwfx,
"(A4)") atom_symbols(iatom)
341 WRITE (iwfx,
"(A,/)")
"</Nuclear Names>"
346 WRITE (iwfx,
"(A)")
"<Atomic Numbers>"
347 DO iatom = 1, num_atoms
348 WRITE (iwfx,
"(I4)") atomic_numbers(iatom)
350 WRITE (iwfx,
"(A,/)")
"</Atomic Numbers>"
355 WRITE (iwfx,
"(A)")
"<Nuclear Charges>"
356 DO iatom = 1, num_atoms
357 WRITE (iwfx,
"(F12.8)") core_charges(iatom)
359 WRITE (iwfx,
"(A,/)")
"</Nuclear Charges>"
364 WRITE (iwfx,
"(A)")
"<Nuclear Cartesian Coordinates>"
365 DO iatom = 1, num_atoms
366 WRITE (iwfx,
"(3ES26.16E3)") atoms_cart(1:3, iatom)
368 WRITE (iwfx,
"(A,/)")
"</Nuclear Cartesian Coordinates>"
375 IF (sum(cell%perd) == 0)
THEN
376 CALL cp_warn(__location__,
"Writing of periodic cell information"// &
377 " requested in input, but system is not periodic, ignoring request.")
379 WRITE (iwfx,
"(A)")
"<Number of Translation Vectors>"
380 WRITE (iwfx,
"(I3)") sum(cell%perd)
381 WRITE (iwfx,
"(A,/)")
"</Number of Translation Vectors>"
383 WRITE (iwfx,
"(A)")
"<Translation Vectors>"
385 IF (cell%perd(iatom) == 1)
THEN
386 WRITE (iwfx,
"(3F12.6)") cell%hmat(1:3, iatom)
389 WRITE (iwfx,
"(A,/)")
"</Translation Vectors>"
391 WRITE (iwfx,
"(A)")
"<Number of Kpoints>"
392 WRITE (iwfx,
"(I3)") 1
393 WRITE (iwfx,
"(A,/)")
"</Number of Kpoints>"
394 WRITE (iwfx,
"(A)")
"<Kpoint Weights>"
395 WRITE (iwfx,
"(I3)") 1
396 WRITE (iwfx,
"(A,/)")
"</Kpoint Weights>"
397 WRITE (iwfx,
"(A)")
"<Kpoint Fractional Coordinates>"
398 WRITE (iwfx,
"(F8.6)") 0.0
399 WRITE (iwfx,
"(A,/)")
"</Kpoint Fractional Coordinates>"
405 WRITE (iwfx,
"(A)")
"<Primitive Centers>"
407 DO iatom = 1, num_atoms
409 NULLIFY (orb_basis_set)
410 CALL get_atomic_kind(particle_set(iatom)%atomic_kind, kind_number=ikind)
411 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
412 IF (
ASSOCIATED(orb_basis_set))
THEN
421 DO ishell = 1, nshell(iset)
422 lshell = l(ishell, iset)
423 DO ico = 1,
nco(lshell)
424 DO ipgf = 1, npgf(iset)
425 tot_npgf = tot_npgf + 1
426 IF (mod(iloop + 10, 10) /= 0)
THEN
427 WRITE (iwfx,
"(I4)", advance=
"no") iatom
430 WRITE (iwfx,
"(I4)") iatom
443 cpabort(
"Unknown basis set type. ")
446 WRITE (iwfx,
"(A,/)")
"</Primitive Centers>"
451 WRITE (iwfx,
"(A)")
"<Number of Primitives>"
452 WRITE (iwfx,
"(I8)") tot_npgf
453 WRITE (iwfx,
"(A,/)")
"</Number of Primitives>"
458 WRITE (iwfx,
"(A)")
"<Primitive Types>"
459 DO iatom = 1, num_atoms
461 NULLIFY (orb_basis_set)
462 NULLIFY (bcgf_symbol)
465 CALL get_atomic_kind(particle_set(iatom)%atomic_kind, kind_number=ikind)
466 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
467 IF (
ASSOCIATED(orb_basis_set))
THEN
481 DO ishell = 1, nshell(iset)
482 lshell = l(ishell, iset)
483 DO ico = 1,
nco(lshell)
484 DO ipgf = 1, orb_basis_set%npgf(iset)
485 IF (mod(iloop + 10, 10) /= 0)
THEN
486 WRITE (iwfx,
'(I6)', advance=
"no") &
487 pgf_type_chargemol(bcgf_symbol(icgf) (3:))
490 WRITE (iwfx,
'(I6)') &
491 pgf_type_chargemol(bcgf_symbol(icgf) (3:))
503 cpabort(
"Unknown basis set type.")
509 WRITE (iwfx,
"(A,/)")
"</Primitive Types>"
518 WRITE (iwfx,
"(A)")
"<Primitive Exponents>"
519 DO iatom = 1, num_atoms
520 NULLIFY (orb_basis_set)
525 CALL get_atomic_kind(particle_set(iatom)%atomic_kind, kind_number=ikind)
526 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
527 IF (
ASSOCIATED(orb_basis_set))
THEN
537 DO ishell = 1, nshell(iset)
538 lshell = l(ishell, iset)
539 DO ico = 1,
nco(lshell)
540 DO ipgf = 1, npgf(iset)
541 IF (mod(iloop + 5, 5) /= 0)
THEN
542 WRITE (iwfx,
"(ES20.10)", advance=
"no") zet(ipgf, iset)
545 WRITE (iwfx,
"(ES20.10)") zet(ipgf, iset)
558 cpabort(
"Unknown basis set type. ")
561 WRITE (iwfx,
"(A,/)")
"</Primitive Exponents>"
567 WRITE (iwfx,
"(A)")
"<Molecular Orbital Occupation Numbers>"
568 IF (.NOT. dft_control%roks)
THEN
570 DO imo = 1, mos(ispin)%homo
571 WRITE (iwfx,
"(f8.6)") &
572 mos(ispin)%occupation_numbers(imo)
576 DO imo = 1, mos(roks_low)%homo
577 WRITE (iwfx,
"(*(f8.6,1x))") &
578 mos(roks_low)%occupation_numbers(imo) &
579 + mos(roks_low)%occupation_numbers(imo)
581 DO imo = mos(roks_low)%homo + 1, mos(roks_high)%homo
582 WRITE (iwfx,
"(f8.6)") &
583 mos(roks_high)%occupation_numbers(imo)
586 WRITE (iwfx,
"(A,/)")
"</Molecular Orbital Occupation Numbers>"
591 WRITE (iwfx,
"(A)")
"<Molecular Orbital Energies>"
593 DO imo = 1, mos(ispin)%homo
594 WRITE (iwfx,
"(ES20.10)") mos(ispin)%eigenvalues(imo)
597 WRITE (iwfx,
"(A,/)")
"</Molecular Orbital Energies>"
603 WRITE (iwfx,
"(A)")
"<Molecular Orbital Spin Types>"
604 DO imo = 1, mos(1)%homo
605 IF (nspins == 1)
THEN
606 WRITE (iwfx,
'(A15)')
"Alpha and Beta"
607 ELSEIF (dft_control%uks)
THEN
608 WRITE (iwfx,
'(A6)')
"Alpha"
610 CALL cp_abort(__location__,
"This wavefunction type is currently"// &
611 " not supported by the chargemol interface.")
614 IF (nspins == 2)
THEN
615 DO imo = 1, mos(2)%homo
616 WRITE (iwfx,
'(A5)')
"Beta"
619 WRITE (iwfx,
"(A,/)")
"</Molecular Orbital Spin Types>"
625 WRITE (iwfx,
"(A)")
"<Kpoint Index for Orbitals>"
627 DO imo = 1, mos(ispin)%homo
628 WRITE (iwfx,
"(I6)") 1
631 WRITE (iwfx,
"(A,/)")
"</Kpoint Index for Orbitals>"
637 WRITE (iwfx,
"(A)")
"<Molecular Orbital Primitive Coefficients>"
638 NULLIFY (orb_basis_set)
641 IF (mos(1)%use_mo_coeff_b)
THEN
642 DO ispin = 1,
SIZE(mos)
643 IF (.NOT.
ASSOCIATED(mos(ispin)%mo_coeff_b))
THEN
653 nrow_global=nrow_global, &
654 ncol_global=ncol_global)
656 ALLOCATE (smatrix(nrow_global, ncol_global))
663 ALLOCATE (cmatrix(ncgf, ncol_global))
670 DO iatom = 1, num_atoms
671 NULLIFY (orb_basis_set)
672 CALL get_atomic_kind(particle_set(iatom)%atomic_kind, kind_number=ikind)
674 basis_set=orb_basis_set)
675 IF (
ASSOCIATED(orb_basis_set))
THEN
681 DO ishell = 1, nshell(iset)
682 lshell = l(ishell, iset)
683 CALL dgemm(
"T",
"N",
nco(lshell), mos(ispin)%nmo, &
684 nso(lshell), 1.0_dp, &
686 smatrix(isgf, 1), nsgf, 0.0_dp, &
687 cmatrix(icgf, 1), ncgf)
699 icgf = icgf +
nco(lshell)
700 isgf = isgf +
nso(lshell)
704 cpabort(
"Unknown basis set type. ")
709 DO imo = 1, mos(ispin)%homo
711 WRITE (iwfx,
"(A)")
"<MO Number>"
712 IF (nspins == 1 .OR. ispin == 1)
THEN
713 WRITE (iwfx,
"(I6)") imo
715 WRITE (iwfx,
"(I6)") imo + mos(1)%homo
717 WRITE (iwfx,
"(A)")
"</MO Number>"
721 DO iatom = 1, num_atoms
723 NULLIFY (orb_basis_set)
727 basis_set=orb_basis_set)
728 IF (
ASSOCIATED(orb_basis_set))
THEN
737 DO ishell = 1, nshell(iset)
738 lshell = orb_basis_set%l(ishell, iset)
740 DO ico = orb_basis_set%first_cgf(ishell, iset), &
741 orb_basis_set%last_cgf(ishell, iset)
744 DO ipgf = 1, orb_basis_set%npgf(iset)
746 zeta = orb_basis_set%zet(ipgf, iset)
748 IF (mod(iloop + 5, 5) /= 0)
THEN
749 WRITE (iwfx,
'(ES20.10)', advance=
"no") &
750 cmatrix(irow, imo)* &
751 orb_basis_set%norm_cgf(ico)* &
752 orb_basis_set%gcc(ipgf, ishell, iset)
755 WRITE (iwfx,
'(ES20.10)') &
756 cmatrix(irow, imo)* &
757 orb_basis_set%norm_cgf(ico)* &
758 orb_basis_set%gcc(ipgf, ishell, iset)
769 cpabort(
"Unknown basis set type.")
778 IF (
ALLOCATED(cmatrix))
DEALLOCATE (cmatrix)
779 IF (
ALLOCATED(smatrix))
DEALLOCATE (smatrix)
782 WRITE (iwfx,
"(A,/)")
"</Molecular Orbital Primitive Coefficients>"
787 WRITE (iwfx,
"(A)")
"<Energy>"
788 WRITE (iwfx,
"(ES26.16E3)") energy%total
789 WRITE (iwfx,
"(A,/)")
"</Energy>"
794 WRITE (iwfx,
"(A)")
"<Virial Ratio (-V/T)>"
795 WRITE (iwfx,
"(ES20.12)") - 1*(energy%total - energy%kinetic)/energy%kinetic
796 WRITE (iwfx,
"(A,/)")
"</Virial Ratio (-V/T)>"
802 IF (
ASSOCIATED(force) .AND. debug_this_module)
THEN
803 WRITE (iwfx,
"(A)")
"<Nuclear Cartesian Energy Gradients>"
805 CALL get_qs_env(qs_env, force=force, atomic_kind_set=atomic_kind_set)
806 ALLOCATE (atom_of_kind(num_atoms))
807 ALLOCATE (kind_of(num_atoms))
809 atom_of_kind=atom_of_kind, &
812 DO iatom = 1, num_atoms
813 ikind = kind_of(iatom)
814 i = atom_of_kind(iatom)
815 WRITE (iwfx,
"(3ES20.12E3)") force(ikind)%total(1:3, i)
818 WRITE (iwfx,
"(A,/)")
"<Nuclear Cartesian Energy Gradients>"
821 WRITE (iwfx,
"(A)")
"<Nuclear Virial of Energy-Gradient-Based Forces on Nuclei, W>"
822 WRITE (iwfx,
"(A)")
""
823 WRITE (iwfx,
"(A,/)")
"<Nuclear Virial of Energy-Gradient-Based Forces on Nuclei, W>"
826 WRITE (iwfx,
"(A)")
"<Full Virial Ratio, -(V - W)/T)>"
827 WRITE (iwfx,
"(A)")
""
828 WRITE (iwfx,
"(A,/)")
"</Full Virial Ratio, -(V - W)/T)>"
830 DEALLOCATE (atom_of_kind)
845 DEALLOCATE (atoms_cart)
846 DEALLOCATE (atom_symbols)
847 DEALLOCATE (atomic_numbers)
848 DEALLOCATE (core_charges)
854 IF (output_unit > 0)
THEN
855 WRITE (output_unit,
'(/,T2,A)') &
856 '!--------------------------- Chargemol wfx written ---------------------------!'
859 CALL timestop(handle)
868 INTEGER FUNCTION pgf_type_chargemol(l_symb)
RESULT(label)
870 CHARACTER(len=*),
INTENT(IN) :: l_symb
986 cpabort(
"The chargemol interface supports basis functions up to l=5 only")
990 END FUNCTION pgf_type_chargemol
static void dgemm(const char transa, const char transb, const int m, const int n, const int k, const double alpha, const double *a, const int lda, const double *b, const int ldb, const double beta, double *c, const int ldc)
Convenient wrapper to hide Fortran nature of dgemm_, swapping a and b.
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind_set(atomic_kind_set, atom_of_kind, kind_of, natom_of_kind, maxatom, natom, nshell, fist_potential_present, shell_present, shell_adiabatic, shell_check_distance, damping_present)
Get attributes of an atomic kind set.
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.
subroutine, public get_gto_basis_set(gto_basis_set, name, aliases, norm_type, kind_radius, ncgf, nset, nsgf, cgf_symbol, sgf_symbol, norm_cgf, set_radius, lmax, lmin, lx, ly, lz, m, ncgf_set, npgf, nsgf_set, nshell, cphi, pgf_radius, sphi, scon, zet, first_cgf, first_sgf, l, last_cgf, last_sgf, n, gcc, maxco, maxl, maxpgf, maxsgf_set, maxshell, maxso, nco_sum, npgf_sum, nshell_sum, maxder, short_kind_radius, npgf_seg_sum)
...
Handles all functions related to the CELL.
subroutine, public get_cell(cell, alpha, beta, gamma, deth, orthorhombic, abc, periodic, h, h_inv, symmetry_id, tag)
Get informations about a simulation cell.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
DBCSR operations in CP2K.
subroutine, public copy_dbcsr_to_fm(matrix, fm)
Copy a DBCSR matrix to a BLACS 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.
represent a full matrix distributed on many processors
subroutine, public cp_fm_get_info(matrix, name, nrow_global, ncol_global, nrow_block, ncol_block, nrow_local, ncol_local, row_indices, col_indices, local_data, context, nrow_locals, ncol_locals, matrix_struct, para_env)
returns all kind of information about the full matrix
subroutine, public cp_fm_get_submatrix(fm, target_m, start_row, start_col, n_rows, n_cols, transpose)
gets a submatrix of a full matrix op(target_m)(1:n_rows,1:n_cols) =fm(start_row:start_row+n_rows,...
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...
character(len=default_path_length) function, public cp_print_key_generate_filename(logger, print_key, middle_name, extension, my_local)
Utility function that returns a unit number to write the print key. Might open a file with a unique f...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_path_length
Types and basic routines needed for a kpoint calculation.
Machine interface based on Fortran 2003 and POSIX.
integer, parameter, public timestamp_length
subroutine, public m_timestamp(timestamp)
Returns a human readable timestamp.
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public nco
integer, dimension(:), allocatable, public nso
character(len=12) function, public cgf_symbol(n, lxyz)
Build a Cartesian orbital symbol (orbital labels for printing).
character(len=6) function, public sgf_symbol(n, l, m)
Build a spherical orbital symbol (orbital labels for printing).
Define the data structure for the particle information.
Periodic Table related data definitions.
subroutine, public get_ptable_info(symbol, number, amass, ielement, covalent_radius, metallic_radius, vdw_radius, found)
Pass information about the kind given the element symbol.
Write wfx file, works as interface to chargemol and multiwfn.
subroutine, public write_wfx(qs_env, dft_section)
...
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, 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, 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, ecoul_1c, rho0_s_rs, rho0_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, 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, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
subroutine, public get_qs_kind_set(qs_kind_set, all_potential_present, tnadd_potential_present, gth_potential_present, sgp_potential_present, paw_atom_present, dft_plus_u_atom_present, maxcgf, maxsgf, maxco, maxco_proj, maxgtops, maxlgto, maxlprj, maxnset, maxsgf_set, ncgf, npgf, nset, nsgf, nshell, maxpol, maxlppl, maxlppnl, maxppnl, nelectron, maxder, max_ngrid_rad, max_sph_harm, maxg_iso_not0, lmax_rho0, basis_rcut, basis_type, total_zeff_corr, npgf_seg)
Get attributes of an atomic kind set.
Definition and initialisation of the mo data type.
module that contains the definitions of the scf types
types that represent a quickstep subsys
parameters that control an scf iteration
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...
Contains information about kpoints.
Provides all information about a quickstep kind.