36 USE dbcsr_api,
ONLY: dbcsr_get_block_p,&
67#include "./base/base_uses.f90"
73 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_scf_post_se'
96 CHARACTER(len=*),
PARAMETER :: routinen =
'scf_post_calculation_se'
98 INTEGER :: handle, output_unit
99 LOGICAL :: explicit, my_localized_wfn
107 CALL timeset(routinen, handle)
110 CALL write_available_results(qs_env)
112 my_localized_wfn = .false.
113 NULLIFY (rho, subsys, particles, input, print_key, para_env)
118 cpassert(
ASSOCIATED(qs_env))
128 CALL qs_scf_post_charges(input, logger, qs_env, rho, para_env)
131 CALL qs_scf_post_moments(input, logger, qs_env)
135 subsection_name=
"DFT%PRINT%MO_CUBES")
137 cpwarn(
"Printing of MO cube files not implemented for Semi-Empirical method.")
142 subsection_name=
"DFT%PRINT%STM")
144 cpwarn(
"STM not implemented for Semi-Empirical method.")
149 subsection_name=
"DFT%PRINT%PLUS_U")
151 cpwarn(
"DFT+U not available for Semi-Empirical method.")
156 subsection_name=
"DFT%PRINT%KINETIC_ENERGY")
158 cpwarn(
"Kinetic energy not available for Semi-Empirical method.")
164 IF (explicit .AND. .NOT. qs_env%run_rtp)
THEN
165 cpwarn(
"Wavefunction mixing not implemented for Semi-Empirical method.")
170 subsection_name=
"DFT%PRINT%XRAY_DIFFRACTION_SPECTRUM")
172 cpwarn(
"XRAY_DIFFRACTION_SPECTRUM not implemented for Semi-Empirical calculations!!")
177 subsection_name=
"DFT%PRINT%ELECTRIC_FIELD_GRADIENT")
179 cpwarn(
"ELECTRIC_FIELD_GRADIENT not implemented for Semi-Empirical calculations!!")
184 subsection_name=
"DFT%PRINT%HYPERFINE_COUPLING_TENSOR")
187 cpwarn(
"HYPERFINE_COUPLING_TENSOR not implemented for Semi-Empirical calculations!!")
190 CALL timestop(handle)
204 SUBROUTINE qs_scf_post_moments(input, logger, qs_env)
209 CHARACTER(LEN=default_string_length) :: description, dipole_type
210 COMPLEX(KIND=dp) :: dzeta, zeta
211 COMPLEX(KIND=dp),
DIMENSION(3) :: dggamma, dzphase, ggamma, zphase
212 INTEGER :: i, iat, iatom, ikind, ix, j, nat, natom, &
213 natorb, nkind, nspin, reference, &
215 LOGICAL :: do_berry, found
216 REAL(kind=
dp) :: charge_tot, ci(3), dci(3), dipole(3), dipole_deriv(3), drcc(3), dria(3), &
217 dtheta, gvec(3), q, rcc(3), ria(3), tcharge(2), theta, tmp(3), via(3), zeff
218 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: ncharge
219 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: mom
220 REAL(kind=
dp),
DIMENSION(:),
POINTER :: ref_point
221 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: pblock
225 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_p
229 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
239 extension=
".data", middle_name=
"se_dipole", log_filename=.false.)
244 description =
'[DIPOLE]'
250 NULLIFY (particle_set)
254 atomic_kind_set=atomic_kind_set, &
256 qs_kind_set=qs_kind_set, &
257 particle_set=particle_set, &
259 dft_control=dft_control)
262 nspin =
SIZE(matrix_p)
263 nkind =
SIZE(atomic_kind_set)
265 ALLOCATE (ncharge(natom))
269 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind)
272 iat = atomic_kind_set(ikind)%atom_list(iatom)
275 CALL dbcsr_get_block_p(matrix=matrix_p(i)%matrix, row=iat, col=iat, &
276 block=pblock, found=found)
279 tcharge(i) = tcharge(i) + pblock(j, j)
283 ncharge(iat) = zeff - sum(tcharge)
288 dipole_deriv = 0.0_dp
291 dipole_type =
"periodic (Berry phase)"
294 charge_tot = sum(ncharge)
295 ria =
twopi*matmul(cell%h_inv, rcc)
296 zphase = cmplx(cos(ria), sin(ria),
dp)**charge_tot
298 dria =
twopi*matmul(cell%h_inv, drcc)
299 dzphase = charge_tot*cmplx(-sin(ria), cos(ria),
dp)**(charge_tot - 1.0_dp)*dria
301 ggamma = cmplx(1.0_dp, 0.0_dp, kind=
dp)
302 dggamma = cmplx(0.0_dp, 0.0_dp, kind=
dp)
303 DO ikind = 1,
SIZE(atomic_kind_set)
306 iat = atomic_kind_set(ikind)%atom_list(i)
307 ria = particle_set(iat)%r(:)
309 via = particle_set(iat)%v(:)
312 gvec =
twopi*cell%h_inv(j, :)
313 theta = sum(ria(:)*gvec(:))
314 dtheta = sum(via(:)*gvec(:))
315 zeta = cmplx(cos(theta), sin(theta), kind=
dp)**(-q)
316 dzeta = -q*cmplx(-sin(theta), cos(theta), kind=
dp)**(-q - 1.0_dp)*dtheta
317 dggamma(j) = dggamma(j)*zeta + ggamma(j)*dzeta
318 ggamma(j) = ggamma(j)*zeta
322 dggamma = dggamma*zphase + ggamma*dzphase
323 ggamma = ggamma*zphase
324 IF (all(real(ggamma, kind=
dp) /= 0.0_dp))
THEN
325 tmp = aimag(ggamma)/real(ggamma, kind=
dp)
327 dci = (1.0_dp/(1.0_dp + tmp**2))* &
328 (aimag(dggamma)*real(ggamma, kind=
dp) - aimag(ggamma)* &
329 REAL(dggamma, kind=
dp))/(real(ggamma, kind=
dp))**2
330 dipole = matmul(cell%hmat, ci)/
twopi
331 dipole_deriv = matmul(cell%hmat, dci)/
twopi
334 dipole_type =
"non-periodic"
337 ria = particle_set(i)%r(:)
339 dipole = dipole - q*(ria - rcc)
340 dipole_deriv(:) = dipole_deriv(:) - q*(particle_set(i)%v(:) - drcc)
347 CALL get_qs_kind(qs_kind_set(ikind), basis_set=basis_set)
348 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind)
350 ALLOCATE (mom(natorb, natorb, 3))
352 CALL atomic_moments(mom, basis_set)
354 iat = atomic_kind_set(ikind)%atom_list(iatom)
356 CALL dbcsr_get_block_p(matrix=matrix_p(i)%matrix, row=iat, col=iat, &
357 block=pblock, found=found)
359 cpassert(natorb ==
SIZE(pblock, 1))
360 ix =
coset(1, 0, 0) - 1
361 dipole(1) = dipole(1) + sum(pblock*mom(:, :, ix))
362 ix =
coset(0, 1, 0) - 1
363 dipole(2) = dipole(2) + sum(pblock*mom(:, :, ix))
364 ix =
coset(0, 0, 1) - 1
365 dipole(3) = dipole(3) + sum(pblock*mom(:, :, ix))
372 CALL put_results(results=results, description=description, &
374 IF (unit_nr > 0)
THEN
375 WRITE (unit_nr,
'(/,T2,A,T31,A50)') &
376 'SE_DIPOLE| Dipole type', adjustr(trim(dipole_type))
377 WRITE (unit_nr,
'(T2,A,T30,3(1X,F16.8))') &
378 'SE_DIPOLE| Moment [a.u.]', dipole(1:3)
379 WRITE (unit_nr,
'(T2,A,T30,3(1X,F16.8))') &
380 'SE_DIPOLE| Moment [Debye]', dipole(1:3)*
debye
381 WRITE (unit_nr,
'(T2,A,T30,3(1X,F16.8))') &
382 'SE_DIPOLE| Derivative [a.u.]', dipole_deriv(1:3)
387 END SUBROUTINE qs_scf_post_moments
394 SUBROUTINE atomic_moments(mom, basis_set)
395 REAL(kind=
dp),
DIMENSION(:, :, :) :: mom
398 INTEGER :: i, iset, jset, ncoa, ncob, nm, nset, &
400 INTEGER,
DIMENSION(:),
POINTER :: la_max, la_min, npgf, nsgf
401 INTEGER,
DIMENSION(:, :),
POINTER :: first_sgf
402 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: work
403 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: mab
404 REAL(kind=
dp),
DIMENSION(3) :: rac, rbc
405 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rpgf, sphi, zet
410 first_sgf => basis_set%first_sgf
411 la_max => basis_set%lmax
412 la_min => basis_set%lmin
413 npgf => basis_set%npgf
414 nset = basis_set%nset
415 nsgf => basis_set%nsgf_set
416 rpgf => basis_set%pgf_radius
417 sphi => basis_set%sphi
422 ncoa = npgf(iset)*
ncoset(la_max(iset))
425 ALLOCATE (mab(nm, nm, 4), work(nm, nm))
428 ncoa = npgf(iset)*
ncoset(la_max(iset))
429 sgfa = first_sgf(1, iset)
431 ncob = npgf(jset)*
ncoset(la_max(jset))
432 sgfb = first_sgf(1, jset)
434 CALL moment(la_max(iset), npgf(iset), zet(:, iset), rpgf(:, iset), la_min(iset), &
435 la_max(jset), npgf(jset), zet(:, jset), rpgf(:, jset), 1, rac, rbc, mab)
438 CALL dgemm(
"N",
"N", ncoa, nsgf(jset), ncob, 1.0_dp, mab(1, 1, i),
SIZE(mab, 1), &
439 sphi(1, sgfb),
SIZE(sphi, 1), 0.0_dp, work(1, 1),
SIZE(work, 1))
440 CALL dgemm(
"T",
"N", nsgf(iset), nsgf(jset), ncoa, 1.0_dp, sphi(1, sgfa),
SIZE(sphi, 1), &
441 work(1, 1),
SIZE(work, 1), 1.0_dp, mom(sgfa, sgfb, i),
SIZE(mom, 1))
445 DEALLOCATE (mab, work)
447 END SUBROUTINE atomic_moments
456 SUBROUTINE qs_scf_post_charges(input, logger, qs_env, rho, para_env)
463 CHARACTER(LEN=2) :: aname
464 INTEGER :: i, iat, iatom, ikind, j, nat, natom, &
465 natorb, nkind, nspin, unit_nr
467 REAL(kind=
dp) :: npe, zeff
468 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: mcharge
469 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: charges
470 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: pblock
472 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_p
475 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
479 NULLIFY (particle_set)
481 atomic_kind_set=atomic_kind_set, &
483 qs_kind_set=qs_kind_set, &
484 particle_set=particle_set, &
485 dft_control=dft_control)
490 unit_nr =
cp_print_key_unit_nr(logger, input,
"DFT%PRINT%MULLIKEN", extension=
".mulliken", log_filename=.false.)
492 nspin =
SIZE(matrix_p)
493 npe = real(para_env%num_pe, kind=
dp)
494 ALLOCATE (charges(natom, nspin), mcharge(natom))
498 nkind =
SIZE(atomic_kind_set)
501 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind)
504 iat = atomic_kind_set(ikind)%atom_list(iatom)
506 CALL dbcsr_get_block_p(matrix=matrix_p(i)%matrix, row=iat, col=iat, &
507 block=pblock, found=found)
510 charges(iat, i) = charges(iat, i) + pblock(j, j)
514 mcharge(iat) = zeff/npe - sum(charges(iat, 1:nspin))
518 CALL para_env%sum(charges)
519 CALL para_env%sum(mcharge)
521 IF (unit_nr > 0)
THEN
522 WRITE (unit=unit_nr, fmt=
"(/,/,T2,A)")
"POPULATION ANALYSIS"
524 WRITE (unit=unit_nr, fmt=
"(/,T2,A,T70,A)") &
525 " # Atom Element Kind Atomic population",
" Net charge"
528 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind, element_symbol=aname)
530 iat = atomic_kind_set(ikind)%atom_list(iatom)
531 WRITE (unit=unit_nr, &
532 fmt=
"(T2,I7,6X,A2,3X,I6,T39,F12.6,T69,F12.6)") &
533 iat, aname, ikind, charges(iat, 1), mcharge(iat)
536 WRITE (unit=unit_nr, &
537 fmt=
"(T2,A,T39,F12.6,T69,F12.6,/)") &
538 "# Total charge", sum(charges(:, 1)), sum(mcharge(:))
540 WRITE (unit=unit_nr, fmt=
"(/,T2,A)") &
541 "# Atom Element Kind Atomic population (alpha,beta) Net charge Spin moment"
544 CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind, element_symbol=aname)
546 iat = atomic_kind_set(ikind)%atom_list(iatom)
547 WRITE (unit=unit_nr, &
548 fmt=
"(T2,I6,5X,A2,2X,I6,T29,4(1X,F12.6))") &
549 iat, aname, ikind, charges(iat, 1:2), mcharge(iat), charges(iat, 1) - charges(iat, 2)
552 WRITE (unit=unit_nr, &
553 fmt=
"(T2,A,T29,4(1X,F12.6),/)") &
554 "# Total charge and spin", sum(charges(:, 1)), sum(charges(:, 2)), sum(mcharge(:))
560 DEALLOCATE (charges, mcharge)
566 cpwarn(
"Lowdin charges not available for semi-empirical calculations!")
572 cpwarn(
"Hirshfeld charges not available for semi-empirical calculations!")
578 cpwarn(
"MAO analysis not available for semi-empirical calculations!")
584 cpwarn(
"ED analysis not available for semi-empirical calculations!")
587 END SUBROUTINE qs_scf_post_charges
593 SUBROUTINE write_available_results(qs_env)
596 CHARACTER(len=*),
PARAMETER :: routinen =
'write_available_results'
598 INTEGER :: after, handle, ispin, iw, output_unit
599 LOGICAL :: omit_headers
601 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: ks_rmpv, rho_ao
611 CALL timeset(routinen, handle)
612 NULLIFY (dft_control, particle_set, rho, ks_rmpv, dft_section, input, &
613 particles, subsys, para_env, rho_ao)
617 cpassert(
ASSOCIATED(qs_env))
619 dft_control=dft_control, &
620 particle_set=particle_set, &
637 cpwarn(
"PDOS not implemented for Semi-Empirical calculations!!")
642 "DFT%PRINT%TOT_DENSITY_CUBE"),
cp_p_file))
THEN
643 cpwarn(
"TOT_DENSITY_CUBE not implemented for Semi-Empirical calculations!!")
648 "DFT%PRINT%E_DENSITY_CUBE"),
cp_p_file))
THEN
649 cpwarn(
"E_DENSITY_CUBE not implemented for Semi-Empirical calculations!!")
654 "DFT%PRINT%EFIELD_CUBE"),
cp_p_file))
THEN
655 cpwarn(
"EFIELD_CUBE not implemented for Semi-Empirical calculations!!")
661 cpwarn(
"ELF function not implemented for Semi-Empirical calculations!!")
666 "DFT%PRINT%V_HARTREE_CUBE"),
cp_p_file))
THEN
667 cpwarn(
"V_HARTREE_CUBE not implemented for Semi-Empirical calculations!!")
673 cpwarn(
"V_XC_CUBE not available for Semi-Empirical calculations!!")
679 "DFT%PRINT%AO_MATRICES/DENSITY"),
cp_p_file))
THEN
683 after = min(max(after, 1), 16)
684 DO ispin = 1, dft_control%nspins
686 para_env, output_unit=iw, omit_headers=omit_headers)
689 "DFT%PRINT%AO_MATRICES/DENSITY")
694 "DFT%PRINT%AO_MATRICES/KOHN_SHAM_MATRIX"),
cp_p_file))
THEN
700 after = min(max(after, 1), 16)
702 para_env, output_unit=iw, omit_headers=omit_headers)
704 "DFT%PRINT%AO_MATRICES/KOHN_SHAM_MATRIX")
707 CALL timestop(handle)
709 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 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
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_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, 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, 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, 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_r3d_rs_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_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.