70#include "./base/base_uses.f90"
76 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_scf_post_se'
99 CHARACTER(len=*),
PARAMETER :: routinen =
'scf_post_calculation_se'
101 INTEGER :: handle, output_unit
102 LOGICAL :: explicit, my_localized_wfn
110 CALL timeset(routinen, handle)
113 CALL write_available_results(qs_env)
115 my_localized_wfn = .false.
116 NULLIFY (rho, subsys, particles, input, print_key, para_env)
121 cpassert(
ASSOCIATED(qs_env))
131 CALL qs_scf_post_charges(input, logger, qs_env, rho, para_env)
134 CALL qs_scf_post_moments(input, logger, qs_env)
138 subsection_name=
"DFT%PRINT%MO_CUBES")
140 cpwarn(
"Printing of MO cube files not implemented for Semi-Empirical method.")
145 subsection_name=
"DFT%PRINT%STM")
147 cpwarn(
"STM not implemented for Semi-Empirical method.")
152 subsection_name=
"DFT%PRINT%PLUS_U")
154 cpwarn(
"DFT+U not available for Semi-Empirical method.")
159 subsection_name=
"DFT%PRINT%KINETIC_ENERGY")
161 cpwarn(
"Kinetic energy not available for Semi-Empirical method.")
167 IF (explicit .AND. .NOT. qs_env%run_rtp)
THEN
168 cpwarn(
"Wavefunction mixing not implemented for Semi-Empirical method.")
173 subsection_name=
"DFT%PRINT%XRAY_DIFFRACTION_SPECTRUM")
175 cpwarn(
"XRAY_DIFFRACTION_SPECTRUM not implemented for Semi-Empirical calculations!")
180 subsection_name=
"DFT%PRINT%ELECTRIC_FIELD_GRADIENT")
182 cpwarn(
"ELECTRIC_FIELD_GRADIENT not implemented for Semi-Empirical calculations!")
187 subsection_name=
"DFT%PRINT%HYPERFINE_COUPLING_TENSOR")
190 cpwarn(
"HYPERFINE_COUPLING_TENSOR not implemented for Semi-Empirical calculations!")
193 CALL timestop(handle)
207 SUBROUTINE qs_scf_post_moments(input, logger, qs_env)
212 CHARACTER(LEN=default_string_length) :: description, dipole_type
213 COMPLEX(KIND=dp) :: dzeta, zeta
214 COMPLEX(KIND=dp),
DIMENSION(3) :: dggamma, dzphase, ggamma, zphase
215 INTEGER :: i, iat, iatom, ikind, ix, j, nat, natom, &
216 natorb, nkind, nspin, reference, &
218 LOGICAL :: do_berry, found
219 REAL(kind=
dp) :: charge_tot, ci(3), dci(3), dipole(3), dipole_deriv(3), drcc(3), dria(3), &
220 dtheta, gvec(3), q, rcc(3), ria(3), tcharge(2), theta, tmp(3), via(3), zeff
221 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: ncharge
222 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: mom
223 REAL(kind=
dp),
DIMENSION(:),
POINTER :: ref_point
224 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: pblock
232 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
242 extension=
".data", middle_name=
"se_dipole", log_filename=.false.)
247 description =
'[DIPOLE]'
253 NULLIFY (particle_set)
257 atomic_kind_set=atomic_kind_set, &
259 qs_kind_set=qs_kind_set, &
260 particle_set=particle_set, &
262 dft_control=dft_control)
265 nspin =
SIZE(matrix_p)
266 nkind =
SIZE(atomic_kind_set)
268 ALLOCATE (ncharge(natom))
272 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind)
275 iat = atomic_kind_set(ikind)%atom_list(iatom)
279 block=pblock, found=found)
282 tcharge(i) = tcharge(i) + pblock(j, j)
286 ncharge(iat) = zeff - sum(tcharge)
291 dipole_deriv = 0.0_dp
294 dipole_type =
"periodic (Berry phase)"
297 charge_tot = sum(ncharge)
298 ria =
twopi*matmul(cell%h_inv, rcc)
299 zphase = cmplx(cos(ria), sin(ria),
dp)**charge_tot
301 dria =
twopi*matmul(cell%h_inv, drcc)
302 dzphase = charge_tot*cmplx(-sin(ria), cos(ria),
dp)**(charge_tot - 1.0_dp)*dria
306 DO ikind = 1,
SIZE(atomic_kind_set)
309 iat = atomic_kind_set(ikind)%atom_list(i)
310 ria = particle_set(iat)%r(:)
312 via = particle_set(iat)%v(:)
315 gvec =
twopi*cell%h_inv(j, :)
316 theta = sum(ria(:)*gvec(:))
317 dtheta = sum(via(:)*gvec(:))
318 zeta = cmplx(cos(theta), sin(theta), kind=
dp)**(-q)
319 dzeta = -q*cmplx(-sin(theta), cos(theta), kind=
dp)**(-q - 1.0_dp)*dtheta
320 dggamma(j) = dggamma(j)*zeta + ggamma(j)*dzeta
321 ggamma(j) = ggamma(j)*zeta
325 dggamma = dggamma*zphase + ggamma*dzphase
326 ggamma = ggamma*zphase
327 IF (all(real(ggamma, kind=
dp) /= 0.0_dp))
THEN
328 tmp = aimag(ggamma)/real(ggamma, kind=
dp)
330 dci = (1.0_dp/(1.0_dp + tmp**2))* &
331 (aimag(dggamma)*real(ggamma, kind=
dp) - aimag(ggamma)* &
332 REAL(dggamma, kind=
dp))/(real(ggamma, kind=
dp))**2
333 dipole = matmul(cell%hmat, ci)/
twopi
334 dipole_deriv = matmul(cell%hmat, dci)/
twopi
337 dipole_type =
"non-periodic"
340 ria = particle_set(i)%r(:)
342 dipole = dipole - q*(ria - rcc)
343 dipole_deriv(:) = dipole_deriv(:) - q*(particle_set(i)%v(:) - drcc)
350 CALL get_qs_kind(qs_kind_set(ikind), basis_set=basis_set)
351 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind)
353 ALLOCATE (mom(natorb, natorb, 3))
355 CALL atomic_moments(mom, basis_set)
357 iat = atomic_kind_set(ikind)%atom_list(iatom)
360 block=pblock, found=found)
362 cpassert(natorb ==
SIZE(pblock, 1))
363 ix =
coset(1, 0, 0) - 1
364 dipole(1) = dipole(1) + sum(pblock*mom(:, :, ix))
365 ix =
coset(0, 1, 0) - 1
366 dipole(2) = dipole(2) + sum(pblock*mom(:, :, ix))
367 ix =
coset(0, 0, 1) - 1
368 dipole(3) = dipole(3) + sum(pblock*mom(:, :, ix))
375 CALL put_results(results=results, description=description, &
377 IF (unit_nr > 0)
THEN
378 WRITE (unit_nr,
'(/,T2,A,T31,A50)') &
379 'SE_DIPOLE| Dipole type', adjustr(trim(dipole_type))
380 WRITE (unit_nr,
'(T2,A,T30,3(1X,F16.8))') &
381 'SE_DIPOLE| Moment [a.u.]', dipole(1:3)
382 WRITE (unit_nr,
'(T2,A,T30,3(1X,F16.8))') &
383 'SE_DIPOLE| Moment [Debye]', dipole(1:3)*
debye
384 WRITE (unit_nr,
'(T2,A,T30,3(1X,F16.8))') &
385 'SE_DIPOLE| Derivative [a.u.]', dipole_deriv(1:3)
390 END SUBROUTINE qs_scf_post_moments
397 SUBROUTINE atomic_moments(mom, basis_set)
398 REAL(kind=
dp),
DIMENSION(:, :, :) :: mom
401 INTEGER :: i, iset, jset, ncoa, ncob, nm, nset, &
403 INTEGER,
DIMENSION(:),
POINTER :: la_max, la_min, npgf, nsgf
404 INTEGER,
DIMENSION(:, :),
POINTER :: first_sgf
405 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: work
406 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: mab
407 REAL(kind=
dp),
DIMENSION(3) :: rac, rbc
408 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rpgf, sphi, zet
413 first_sgf => basis_set%first_sgf
414 la_max => basis_set%lmax
415 la_min => basis_set%lmin
416 npgf => basis_set%npgf
417 nset = basis_set%nset
418 nsgf => basis_set%nsgf_set
419 rpgf => basis_set%pgf_radius
420 sphi => basis_set%sphi
425 ncoa = npgf(iset)*
ncoset(la_max(iset))
428 ALLOCATE (mab(nm, nm, 4), work(nm, nm))
431 ncoa = npgf(iset)*
ncoset(la_max(iset))
432 sgfa = first_sgf(1, iset)
434 ncob = npgf(jset)*
ncoset(la_max(jset))
435 sgfb = first_sgf(1, jset)
437 CALL moment(la_max(iset), npgf(iset), zet(:, iset), rpgf(:, iset), la_min(iset), &
438 la_max(jset), npgf(jset), zet(:, jset), rpgf(:, jset), 1, rac, rbc, mab)
441 CALL dgemm(
"N",
"N", ncoa, nsgf(jset), ncob, 1.0_dp, mab(1, 1, i),
SIZE(mab, 1), &
442 sphi(1, sgfb),
SIZE(sphi, 1), 0.0_dp, work(1, 1),
SIZE(work, 1))
443 CALL dgemm(
"T",
"N", nsgf(iset), nsgf(jset), ncoa, 1.0_dp, sphi(1, sgfa),
SIZE(sphi, 1), &
444 work(1, 1),
SIZE(work, 1), 1.0_dp, mom(sgfa, sgfb, i),
SIZE(mom, 1))
448 DEALLOCATE (mab, work)
450 END SUBROUTINE atomic_moments
459 SUBROUTINE qs_scf_post_charges(input, logger, qs_env, rho, para_env)
466 CHARACTER(LEN=2) :: aname
467 INTEGER :: i, iat, iatom, ikind, j, nat, natom, &
468 natorb, nkind, nspin, unit_nr
470 REAL(kind=
dp) :: npe, zeff
471 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: mcharge
472 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: charges
473 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: pblock
478 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
482 NULLIFY (particle_set)
484 atomic_kind_set=atomic_kind_set, &
486 qs_kind_set=qs_kind_set, &
487 particle_set=particle_set, &
488 dft_control=dft_control)
493 unit_nr =
cp_print_key_unit_nr(logger, input,
"DFT%PRINT%MULLIKEN", extension=
".mulliken", log_filename=.false.)
495 nspin =
SIZE(matrix_p)
496 npe = real(para_env%num_pe, kind=
dp)
497 ALLOCATE (charges(natom, nspin), mcharge(natom))
501 nkind =
SIZE(atomic_kind_set)
504 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind)
507 iat = atomic_kind_set(ikind)%atom_list(iatom)
510 block=pblock, found=found)
513 charges(iat, i) = charges(iat, i) + pblock(j, j)
517 mcharge(iat) = zeff/npe - sum(charges(iat, 1:nspin))
521 CALL para_env%sum(charges)
522 CALL para_env%sum(mcharge)
524 IF (unit_nr > 0)
THEN
525 WRITE (unit=unit_nr, fmt=
"(/,/,T2,A)")
"POPULATION ANALYSIS"
527 WRITE (unit=unit_nr, fmt=
"(/,T2,A,T70,A)") &
528 " # Atom Element Kind Atomic population",
" Net charge"
531 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind, element_symbol=aname)
533 iat = atomic_kind_set(ikind)%atom_list(iatom)
534 WRITE (unit=unit_nr, &
535 fmt=
"(T2,I7,6X,A2,3X,I6,T39,F12.6,T69,F12.6)") &
536 iat, aname, ikind, charges(iat, 1), mcharge(iat)
539 WRITE (unit=unit_nr, &
540 fmt=
"(T2,A,T39,F12.6,T69,F12.6,/)") &
541 "# Total charge", sum(charges(:, 1)), sum(mcharge(:))
543 WRITE (unit=unit_nr, fmt=
"(/,T2,A)") &
544 "# Atom Element Kind Atomic population (alpha,beta) Net charge Spin moment"
547 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind, element_symbol=aname)
549 iat = atomic_kind_set(ikind)%atom_list(iatom)
550 WRITE (unit=unit_nr, &
551 fmt=
"(T2,I6,5X,A2,2X,I6,T29,4(1X,F12.6))") &
552 iat, aname, ikind, charges(iat, 1:2), mcharge(iat), charges(iat, 1) - charges(iat, 2)
555 WRITE (unit=unit_nr, &
556 fmt=
"(T2,A,T29,4(1X,F12.6),/)") &
557 "# Total charge and spin", sum(charges(:, 1)), sum(charges(:, 2)), sum(mcharge(:))
563 DEALLOCATE (charges, mcharge)
570 extension=
".eeq", log_filename=.false.)
571 CALL eeq_print(qs_env, unit_nr, print_level=1, ext=.false.)
578 cpwarn(
"Lowdin charges not available for semi-empirical calculations!")
584 cpwarn(
"Hirshfeld charges not available for semi-empirical calculations!")
590 cpwarn(
"MAO analysis not available for semi-empirical calculations!")
596 cpwarn(
"ED analysis not available for semi-empirical calculations!")
599 END SUBROUTINE qs_scf_post_charges
605 SUBROUTINE write_available_results(qs_env)
608 CHARACTER(len=*),
PARAMETER :: routinen =
'write_available_results'
610 INTEGER :: after, handle, ispin, iw, output_unit
611 LOGICAL :: omit_headers
613 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: ks_rmpv, rho_ao
623 CALL timeset(routinen, handle)
624 NULLIFY (dft_control, particle_set, rho, ks_rmpv, dft_section, input, &
625 particles, subsys, para_env, rho_ao)
629 cpassert(
ASSOCIATED(qs_env))
631 dft_control=dft_control, &
632 particle_set=particle_set, &
649 cpwarn(
"PDOS not implemented for Semi-Empirical calculations!")
654 "DFT%PRINT%TOT_DENSITY_CUBE"),
cp_p_file))
THEN
655 cpwarn(
"TOT_DENSITY_CUBE not implemented for Semi-Empirical calculations!")
660 "DFT%PRINT%E_DENSITY_CUBE"),
cp_p_file))
THEN
661 cpwarn(
"E_DENSITY_CUBE not implemented for Semi-Empirical calculations!")
666 "DFT%PRINT%EFIELD_CUBE"),
cp_p_file))
THEN
667 cpwarn(
"EFIELD_CUBE not implemented for Semi-Empirical calculations!")
673 cpwarn(
"ELF function not implemented for Semi-Empirical calculations!")
678 "DFT%PRINT%V_HARTREE_CUBE"),
cp_p_file))
THEN
679 cpwarn(
"V_HARTREE_CUBE not implemented for Semi-Empirical calculations!")
685 cpwarn(
"V_XC_CUBE not available for Semi-Empirical calculations!")
691 "DFT%PRINT%AO_MATRICES/DENSITY"),
cp_p_file))
THEN
695 after = min(max(after, 1), 16)
696 DO ispin = 1, dft_control%nspins
698 para_env, output_unit=iw, omit_headers=omit_headers)
701 "DFT%PRINT%AO_MATRICES/DENSITY")
706 "DFT%PRINT%AO_MATRICES/KOHN_SHAM_MATRIX"),
cp_p_file))
THEN
712 after = min(max(after, 1), 16)
714 para_env, output_unit=iw, omit_headers=omit_headers)
716 "DFT%PRINT%AO_MATRICES/KOHN_SHAM_MATRIX")
719 CALL timestop(handle)
721 END SUBROUTINE write_available_results
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.
Calculation of the moment integrals over Cartesian Gaussian-type functions.
subroutine, public moment(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, lc_max, rac, rbc, mab)
...
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.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_get_block_p(matrix, row, col, block, found, row_size, col_size)
...
subroutine, public cp_dbcsr_write_sparse_matrix(sparse_matrix, before, after, qs_env, para_env, first_row, last_row, first_col, last_col, scale, output_unit, omit_headers)
...
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...
set of type/routines to handle the storage of results in force_envs
subroutine, public cp_results_erase(results, description, nval)
erase a part of result_list
set of type/routines to handle the storage of results in force_envs
Calculation of charge equilibration method.
subroutine, public eeq_print(qs_env, iounit, print_level, ext)
...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Definition of mathematical constants and functions.
complex(kind=dp), parameter, public z_one
real(kind=dp), parameter, public twopi
complex(kind=dp), parameter, public z_zero
Interface to the message passing library MPI.
Calculates the moment integrals <a|r^m|b>
subroutine, public get_reference_point(rpoint, drpoint, qs_env, fist_env, reference, ref_point, ifirst, ilast)
...
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public ncoset
integer, dimension(:, :, :), allocatable, public coset
represent a simple array based list of the given type
Define the data structure for the particle information.
Definition of physical constants:
real(kind=dp), parameter, public debye
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, 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, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
routines that build the Kohn-Sham matrix (i.e calculate the coulomb and xc parts
subroutine, public qs_ks_update_qs_env(qs_env, calculate_forces, just_energy, print_active)
updates the Kohn Sham matrix of the given qs_env (facility method)
subroutine, public qs_ks_did_change(ks_env, s_mstruct_changed, rho_changed, potential_changed, full_reset)
tells that some of the things relevant to the ks calculation did change. has to be called when change...
superstucture that hold various representations of the density and keeps track of which ones are vali...
subroutine, public qs_rho_get(rho_struct, rho_ao, rho_ao_im, rho_ao_kp, rho_ao_im_kp, rho_r, drho_r, rho_g, drho_g, tau_r, tau_g, rho_r_valid, drho_r_valid, rho_g_valid, drho_g_valid, tau_r_valid, tau_g_valid, tot_rho_r, tot_rho_g, rho_r_sccs, soft_valid, complex_rho_ao)
returns info about the density described by this object. If some representation is not available an e...
subroutine, public qs_scf_write_mos(qs_env, scf_env, final_mos)
Write the MO eigenvector, eigenvalues, and occupation numbers to the output unit.
Does all kind of post scf calculations for semi-empirical.
subroutine, public scf_post_calculation_se(qs_env)
collects possible post - scf calculations and prints info / computes properties. specific for Semi-em...
module that contains the definitions of the scf types
types that represent a quickstep subsys
subroutine, public qs_subsys_get(subsys, atomic_kinds, atomic_kind_set, particles, particle_set, local_particles, molecules, molecule_set, molecule_kinds, molecule_kind_set, local_molecules, para_env, colvar_p, shell_particles, core_particles, gci, multipoles, natom, nparticle, ncore, nshell, nkind, atprop, virial, results, cell, cell_ref, use_ref_cell, energy, force, qs_kind_set, cp_subsys, nelectron_total, nelectron_spin)
...
Definition of the semi empirical parameter types.
subroutine, public get_se_param(sep, name, typ, defined, z, zeff, natorb, eheat, beta, sto_exponents, uss, upp, udd, uff, alp, eisol, gss, gsp, gpp, gp2, acoul, nr, de, ass, asp, app, hsp, gsd, gpd, gdd, ppddg, dpddg, ngauss)
Get info from the semi-empirical type.
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 arbitrary information which need to be stored
stores all the informations relevant to an mpi environment
represent a list of objects
Provides all information about a quickstep kind.
keeps the density in various representations, keeping track of which ones are valid.