68#include "./base/base_uses.f90"
74 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_scf_post_se'
97 CHARACTER(len=*),
PARAMETER :: routinen =
'scf_post_calculation_se'
99 INTEGER :: handle, output_unit
100 LOGICAL :: explicit, my_localized_wfn
108 CALL timeset(routinen, handle)
111 CALL write_available_results(qs_env)
113 my_localized_wfn = .false.
114 NULLIFY (rho, subsys, particles, input, print_key, para_env)
119 cpassert(
ASSOCIATED(qs_env))
129 CALL qs_scf_post_charges(input, logger, qs_env, rho, para_env)
132 CALL qs_scf_post_moments(input, logger, qs_env)
136 subsection_name=
"DFT%PRINT%MO_CUBES")
138 cpwarn(
"Printing of MO cube files not implemented for Semi-Empirical method.")
143 subsection_name=
"DFT%PRINT%STM")
145 cpwarn(
"STM not implemented for Semi-Empirical method.")
150 subsection_name=
"DFT%PRINT%PLUS_U")
152 cpwarn(
"DFT+U not available for Semi-Empirical method.")
157 subsection_name=
"DFT%PRINT%KINETIC_ENERGY")
159 cpwarn(
"Kinetic energy not available for Semi-Empirical method.")
165 IF (explicit .AND. .NOT. qs_env%run_rtp)
THEN
166 cpwarn(
"Wavefunction mixing not implemented for Semi-Empirical method.")
171 subsection_name=
"DFT%PRINT%XRAY_DIFFRACTION_SPECTRUM")
173 cpwarn(
"XRAY_DIFFRACTION_SPECTRUM not implemented for Semi-Empirical calculations!")
178 subsection_name=
"DFT%PRINT%ELECTRIC_FIELD_GRADIENT")
180 cpwarn(
"ELECTRIC_FIELD_GRADIENT not implemented for Semi-Empirical calculations!")
185 subsection_name=
"DFT%PRINT%HYPERFINE_COUPLING_TENSOR")
188 cpwarn(
"HYPERFINE_COUPLING_TENSOR not implemented for Semi-Empirical calculations!")
191 CALL timestop(handle)
205 SUBROUTINE qs_scf_post_moments(input, logger, qs_env)
210 CHARACTER(LEN=default_string_length) :: description, dipole_type
211 COMPLEX(KIND=dp) :: dzeta, zeta
212 COMPLEX(KIND=dp),
DIMENSION(3) :: dggamma, dzphase, ggamma, zphase
213 INTEGER :: i, iat, iatom, ikind, ix, j, nat, natom, &
214 natorb, nkind, nspin, reference, &
216 LOGICAL :: do_berry, found
217 REAL(kind=
dp) :: charge_tot, ci(3), dci(3), dipole(3), dipole_deriv(3), drcc(3), dria(3), &
218 dtheta, gvec(3), q, rcc(3), ria(3), tcharge(2), theta, tmp(3), via(3), zeff
219 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: ncharge
220 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: mom
221 REAL(kind=
dp),
DIMENSION(:),
POINTER :: ref_point
222 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: pblock
230 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
240 extension=
".data", middle_name=
"se_dipole", log_filename=.false.)
245 description =
'[DIPOLE]'
251 NULLIFY (particle_set)
255 atomic_kind_set=atomic_kind_set, &
257 qs_kind_set=qs_kind_set, &
258 particle_set=particle_set, &
260 dft_control=dft_control)
263 nspin =
SIZE(matrix_p)
264 nkind =
SIZE(atomic_kind_set)
266 ALLOCATE (ncharge(natom))
270 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind)
273 iat = atomic_kind_set(ikind)%atom_list(iatom)
277 block=pblock, found=found)
280 tcharge(i) = tcharge(i) + pblock(j, j)
284 ncharge(iat) = zeff - sum(tcharge)
289 dipole_deriv = 0.0_dp
292 dipole_type =
"periodic (Berry phase)"
295 charge_tot = sum(ncharge)
296 ria =
twopi*matmul(cell%h_inv, rcc)
297 zphase = cmplx(cos(ria), sin(ria),
dp)**charge_tot
299 dria =
twopi*matmul(cell%h_inv, drcc)
300 dzphase = charge_tot*cmplx(-sin(ria), cos(ria),
dp)**(charge_tot - 1.0_dp)*dria
302 ggamma = cmplx(1.0_dp, 0.0_dp, kind=
dp)
303 dggamma = cmplx(0.0_dp, 0.0_dp, kind=
dp)
304 DO ikind = 1,
SIZE(atomic_kind_set)
307 iat = atomic_kind_set(ikind)%atom_list(i)
308 ria = particle_set(iat)%r(:)
310 via = particle_set(iat)%v(:)
313 gvec =
twopi*cell%h_inv(j, :)
314 theta = sum(ria(:)*gvec(:))
315 dtheta = sum(via(:)*gvec(:))
316 zeta = cmplx(cos(theta), sin(theta), kind=
dp)**(-q)
317 dzeta = -q*cmplx(-sin(theta), cos(theta), kind=
dp)**(-q - 1.0_dp)*dtheta
318 dggamma(j) = dggamma(j)*zeta + ggamma(j)*dzeta
319 ggamma(j) = ggamma(j)*zeta
323 dggamma = dggamma*zphase + ggamma*dzphase
324 ggamma = ggamma*zphase
325 IF (all(real(ggamma, kind=
dp) /= 0.0_dp))
THEN
326 tmp = aimag(ggamma)/real(ggamma, kind=
dp)
328 dci = (1.0_dp/(1.0_dp + tmp**2))* &
329 (aimag(dggamma)*real(ggamma, kind=
dp) - aimag(ggamma)* &
330 REAL(dggamma, kind=
dp))/(real(ggamma, kind=
dp))**2
331 dipole = matmul(cell%hmat, ci)/
twopi
332 dipole_deriv = matmul(cell%hmat, dci)/
twopi
335 dipole_type =
"non-periodic"
338 ria = particle_set(i)%r(:)
340 dipole = dipole - q*(ria - rcc)
341 dipole_deriv(:) = dipole_deriv(:) - q*(particle_set(i)%v(:) - drcc)
348 CALL get_qs_kind(qs_kind_set(ikind), basis_set=basis_set)
349 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind)
351 ALLOCATE (mom(natorb, natorb, 3))
353 CALL atomic_moments(mom, basis_set)
355 iat = atomic_kind_set(ikind)%atom_list(iatom)
358 block=pblock, found=found)
360 cpassert(natorb ==
SIZE(pblock, 1))
361 ix =
coset(1, 0, 0) - 1
362 dipole(1) = dipole(1) + sum(pblock*mom(:, :, ix))
363 ix =
coset(0, 1, 0) - 1
364 dipole(2) = dipole(2) + sum(pblock*mom(:, :, ix))
365 ix =
coset(0, 0, 1) - 1
366 dipole(3) = dipole(3) + sum(pblock*mom(:, :, ix))
373 CALL put_results(results=results, description=description, &
375 IF (unit_nr > 0)
THEN
376 WRITE (unit_nr,
'(/,T2,A,T31,A50)') &
377 'SE_DIPOLE| Dipole type', adjustr(trim(dipole_type))
378 WRITE (unit_nr,
'(T2,A,T30,3(1X,F16.8))') &
379 'SE_DIPOLE| Moment [a.u.]', dipole(1:3)
380 WRITE (unit_nr,
'(T2,A,T30,3(1X,F16.8))') &
381 'SE_DIPOLE| Moment [Debye]', dipole(1:3)*
debye
382 WRITE (unit_nr,
'(T2,A,T30,3(1X,F16.8))') &
383 'SE_DIPOLE| Derivative [a.u.]', dipole_deriv(1:3)
388 END SUBROUTINE qs_scf_post_moments
395 SUBROUTINE atomic_moments(mom, basis_set)
396 REAL(kind=
dp),
DIMENSION(:, :, :) :: mom
399 INTEGER :: i, iset, jset, ncoa, ncob, nm, nset, &
401 INTEGER,
DIMENSION(:),
POINTER :: la_max, la_min, npgf, nsgf
402 INTEGER,
DIMENSION(:, :),
POINTER :: first_sgf
403 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: work
404 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: mab
405 REAL(kind=
dp),
DIMENSION(3) :: rac, rbc
406 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rpgf, sphi, zet
411 first_sgf => basis_set%first_sgf
412 la_max => basis_set%lmax
413 la_min => basis_set%lmin
414 npgf => basis_set%npgf
415 nset = basis_set%nset
416 nsgf => basis_set%nsgf_set
417 rpgf => basis_set%pgf_radius
418 sphi => basis_set%sphi
423 ncoa = npgf(iset)*
ncoset(la_max(iset))
426 ALLOCATE (mab(nm, nm, 4), work(nm, nm))
429 ncoa = npgf(iset)*
ncoset(la_max(iset))
430 sgfa = first_sgf(1, iset)
432 ncob = npgf(jset)*
ncoset(la_max(jset))
433 sgfb = first_sgf(1, jset)
435 CALL moment(la_max(iset), npgf(iset), zet(:, iset), rpgf(:, iset), la_min(iset), &
436 la_max(jset), npgf(jset), zet(:, jset), rpgf(:, jset), 1, rac, rbc, mab)
439 CALL dgemm(
"N",
"N", ncoa, nsgf(jset), ncob, 1.0_dp, mab(1, 1, i),
SIZE(mab, 1), &
440 sphi(1, sgfb),
SIZE(sphi, 1), 0.0_dp, work(1, 1),
SIZE(work, 1))
441 CALL dgemm(
"T",
"N", nsgf(iset), nsgf(jset), ncoa, 1.0_dp, sphi(1, sgfa),
SIZE(sphi, 1), &
442 work(1, 1),
SIZE(work, 1), 1.0_dp, mom(sgfa, sgfb, i),
SIZE(mom, 1))
446 DEALLOCATE (mab, work)
448 END SUBROUTINE atomic_moments
457 SUBROUTINE qs_scf_post_charges(input, logger, qs_env, rho, para_env)
464 CHARACTER(LEN=2) :: aname
465 INTEGER :: i, iat, iatom, ikind, j, nat, natom, &
466 natorb, nkind, nspin, unit_nr
468 REAL(kind=
dp) :: npe, zeff
469 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: mcharge
470 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: charges
471 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: pblock
476 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
480 NULLIFY (particle_set)
482 atomic_kind_set=atomic_kind_set, &
484 qs_kind_set=qs_kind_set, &
485 particle_set=particle_set, &
486 dft_control=dft_control)
491 unit_nr =
cp_print_key_unit_nr(logger, input,
"DFT%PRINT%MULLIKEN", extension=
".mulliken", log_filename=.false.)
493 nspin =
SIZE(matrix_p)
494 npe = real(para_env%num_pe, kind=
dp)
495 ALLOCATE (charges(natom, nspin), mcharge(natom))
499 nkind =
SIZE(atomic_kind_set)
502 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind)
505 iat = atomic_kind_set(ikind)%atom_list(iatom)
508 block=pblock, found=found)
511 charges(iat, i) = charges(iat, i) + pblock(j, j)
515 mcharge(iat) = zeff/npe - sum(charges(iat, 1:nspin))
519 CALL para_env%sum(charges)
520 CALL para_env%sum(mcharge)
522 IF (unit_nr > 0)
THEN
523 WRITE (unit=unit_nr, fmt=
"(/,/,T2,A)")
"POPULATION ANALYSIS"
525 WRITE (unit=unit_nr, fmt=
"(/,T2,A,T70,A)") &
526 " # Atom Element Kind Atomic population",
" Net charge"
529 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind, element_symbol=aname)
531 iat = atomic_kind_set(ikind)%atom_list(iatom)
532 WRITE (unit=unit_nr, &
533 fmt=
"(T2,I7,6X,A2,3X,I6,T39,F12.6,T69,F12.6)") &
534 iat, aname, ikind, charges(iat, 1), mcharge(iat)
537 WRITE (unit=unit_nr, &
538 fmt=
"(T2,A,T39,F12.6,T69,F12.6,/)") &
539 "# Total charge", sum(charges(:, 1)), sum(mcharge(:))
541 WRITE (unit=unit_nr, fmt=
"(/,T2,A)") &
542 "# Atom Element Kind Atomic population (alpha,beta) Net charge Spin moment"
545 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind, element_symbol=aname)
547 iat = atomic_kind_set(ikind)%atom_list(iatom)
548 WRITE (unit=unit_nr, &
549 fmt=
"(T2,I6,5X,A2,2X,I6,T29,4(1X,F12.6))") &
550 iat, aname, ikind, charges(iat, 1:2), mcharge(iat), charges(iat, 1) - charges(iat, 2)
553 WRITE (unit=unit_nr, &
554 fmt=
"(T2,A,T29,4(1X,F12.6),/)") &
555 "# Total charge and spin", sum(charges(:, 1)), sum(charges(:, 2)), sum(mcharge(:))
561 DEALLOCATE (charges, mcharge)
568 extension=
".eeq", log_filename=.false.)
569 CALL eeq_print(qs_env, unit_nr, print_level=1, ext=.false.)
576 cpwarn(
"Lowdin charges not available for semi-empirical calculations!")
582 cpwarn(
"Hirshfeld charges not available for semi-empirical calculations!")
588 cpwarn(
"MAO analysis not available for semi-empirical calculations!")
594 cpwarn(
"ED analysis not available for semi-empirical calculations!")
597 END SUBROUTINE qs_scf_post_charges
603 SUBROUTINE write_available_results(qs_env)
606 CHARACTER(len=*),
PARAMETER :: routinen =
'write_available_results'
608 INTEGER :: after, handle, ispin, iw, output_unit
609 LOGICAL :: omit_headers
611 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: ks_rmpv, rho_ao
621 CALL timeset(routinen, handle)
622 NULLIFY (dft_control, particle_set, rho, ks_rmpv, dft_section, input, &
623 particles, subsys, para_env, rho_ao)
627 cpassert(
ASSOCIATED(qs_env))
629 dft_control=dft_control, &
630 particle_set=particle_set, &
647 cpwarn(
"PDOS not implemented for Semi-Empirical calculations!")
652 "DFT%PRINT%TOT_DENSITY_CUBE"),
cp_p_file))
THEN
653 cpwarn(
"TOT_DENSITY_CUBE not implemented for Semi-Empirical calculations!")
658 "DFT%PRINT%E_DENSITY_CUBE"),
cp_p_file))
THEN
659 cpwarn(
"E_DENSITY_CUBE not implemented for Semi-Empirical calculations!")
664 "DFT%PRINT%EFIELD_CUBE"),
cp_p_file))
THEN
665 cpwarn(
"EFIELD_CUBE not implemented for Semi-Empirical calculations!")
671 cpwarn(
"ELF function not implemented for Semi-Empirical calculations!")
676 "DFT%PRINT%V_HARTREE_CUBE"),
cp_p_file))
THEN
677 cpwarn(
"V_HARTREE_CUBE not implemented for Semi-Empirical calculations!")
683 cpwarn(
"V_XC_CUBE not available for Semi-Empirical calculations!")
689 "DFT%PRINT%AO_MATRICES/DENSITY"),
cp_p_file))
THEN
693 after = min(max(after, 1), 16)
694 DO ispin = 1, dft_control%nspins
696 para_env, output_unit=iw, omit_headers=omit_headers)
699 "DFT%PRINT%AO_MATRICES/DENSITY")
704 "DFT%PRINT%AO_MATRICES/KOHN_SHAM_MATRIX"),
cp_p_file))
THEN
710 after = min(max(after, 1), 16)
712 para_env, output_unit=iw, omit_headers=omit_headers)
714 "DFT%PRINT%AO_MATRICES/KOHN_SHAM_MATRIX")
717 CALL timestop(handle)
719 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.
real(kind=dp), parameter, public twopi
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, 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)
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.
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.