30 ls_cluster_molecular,&
74#include "./base/base_uses.f90"
80 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'dm_ls_scf_qs'
102 CHARACTER(len=*),
PARAMETER :: routinen =
'matrix_ls_create'
104 CHARACTER(len=default_string_length) :: name
105 INTEGER :: handle, iatom, imol, jatom, natom, nmol
106 INTEGER,
ALLOCATABLE,
DIMENSION(:),
TARGET :: atom_to_cluster, atom_to_cluster_primus, &
107 clustered_blk_sizes, primus_of_mol
108 INTEGER,
DIMENSION(:),
POINTER :: clustered_col_dist, clustered_row_dist, &
109 ls_blk_sizes, ls_col_dist, ls_row_dist
112 CALL timeset(routinen, handle)
115 CALL dbcsr_get_info(matrix_qs, col_blk_size=ls_blk_sizes, distribution=ls_dist)
120 IF (ls_mstruct%do_pao)
THEN
121 CALL dbcsr_get_info(ls_mstruct%matrix_A, col_blk_size=ls_blk_sizes)
125 SELECT CASE (ls_mstruct%cluster_type)
131 nmol = maxval(ls_mstruct%atom_to_molecule)
132 ALLOCATE (atom_to_cluster_primus(natom))
133 ALLOCATE (atom_to_cluster(natom))
134 ALLOCATE (primus_of_mol(nmol))
136 atom_to_cluster(iatom) = ls_mstruct%atom_to_molecule(iatom)
140 DO jatom = iatom, 1, -1
141 IF (ls_mstruct%atom_to_molecule(jatom) == atom_to_cluster(iatom))
THEN
142 atom_to_cluster_primus(iatom) = jatom
147 primus_of_mol(atom_to_cluster(iatom)) = atom_to_cluster_primus(iatom)
151 ALLOCATE (clustered_row_dist(nmol))
153 clustered_row_dist(imol) = ls_row_dist(primus_of_mol(imol))
157 ALLOCATE (clustered_col_dist(nmol))
159 clustered_col_dist(imol) = ls_col_dist(primus_of_mol(imol))
162 ALLOCATE (clustered_blk_sizes(nmol))
163 clustered_blk_sizes = 0
165 clustered_blk_sizes(atom_to_cluster(iatom)) = clustered_blk_sizes(atom_to_cluster(iatom)) + &
168 ls_blk_sizes => clustered_blk_sizes
173 row_dist=clustered_row_dist, &
174 col_dist=clustered_col_dist, &
177 ls_dist = ls_dist_clustered
180 cpabort(
"Unknown LS cluster type")
189 row_blk_size=ls_blk_sizes, &
190 col_blk_size=ls_blk_sizes)
194 CALL timestop(handle)
214 LOGICAL,
INTENT(IN) :: covariant
216 CHARACTER(len=*),
PARAMETER :: routinen =
'matrix_qs_to_ls'
219 INTEGER,
DIMENSION(:),
POINTER :: pao_blk_sizes
223 CALL timeset(routinen, handle)
225 IF (.NOT. ls_mstruct%do_pao)
THEN
226 CALL matrix_cluster(matrix_ls, matrix_qs, ls_mstruct)
229 CALL dbcsr_get_info(ls_mstruct%matrix_A, col_blk_size=pao_blk_sizes)
232 template=matrix_qs, &
233 row_blk_size=pao_blk_sizes, &
234 col_blk_size=pao_blk_sizes)
236 matrix_trafo => ls_mstruct%matrix_A
237 IF (covariant) matrix_trafo => ls_mstruct%matrix_B
240 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, matrix_qs, matrix_trafo, 0.0_dp, matrix_tmp)
241 CALL dbcsr_multiply(
"T",
"N", 1.0_dp, matrix_trafo, matrix_tmp, 0.0_dp, matrix_pao)
244 CALL matrix_cluster(matrix_ls, matrix_pao, ls_mstruct)
248 CALL timestop(handle)
259 SUBROUTINE matrix_cluster(matrix_out, matrix_in, ls_mstruct)
263 CHARACTER(len=*),
PARAMETER :: routinen =
'matrix_cluster'
268 CALL timeset(routinen, handle)
270 SELECT CASE (ls_mstruct%cluster_type)
276 CALL dbcsr_create(matrix_in_nosym, template=matrix_in, matrix_type=
"N")
284 cpabort(
"Unknown LS cluster type")
287 CALL timestop(handle)
289 END SUBROUTINE matrix_cluster
305 SUBROUTINE matrix_ls_to_qs(matrix_qs, matrix_ls, ls_mstruct, covariant, keep_sparsity)
309 LOGICAL,
OPTIONAL :: keep_sparsity
311 CHARACTER(len=*),
PARAMETER :: routinen =
'matrix_ls_to_qs'
314 INTEGER,
DIMENSION(:),
POINTER :: pao_blk_sizes
315 LOGICAL :: my_keep_sparsity
316 TYPE(
dbcsr_type) :: matrix_declustered, matrix_tmp1, &
320 CALL timeset(routinen, handle)
322 my_keep_sparsity = .true.
323 IF (
PRESENT(keep_sparsity)) &
324 my_keep_sparsity = keep_sparsity
326 IF (.NOT. ls_mstruct%do_pao)
THEN
327 CALL dbcsr_create(matrix_declustered, template=matrix_qs)
329 CALL dbcsr_copy(matrix_qs, matrix_declustered, keep_sparsity=my_keep_sparsity)
333 CALL dbcsr_get_info(ls_mstruct%matrix_A, col_blk_size=pao_blk_sizes)
335 template=matrix_qs, &
336 row_blk_size=pao_blk_sizes, &
337 col_blk_size=pao_blk_sizes)
341 matrix_trafo => ls_mstruct%matrix_B
342 IF (covariant) matrix_trafo => ls_mstruct%matrix_A
345 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, matrix_trafo, matrix_declustered, 0.0_dp, matrix_tmp1)
346 CALL dbcsr_multiply(
"N",
"T", 1.0_dp, matrix_tmp1, matrix_trafo, 0.0_dp, matrix_tmp2)
347 CALL dbcsr_copy(matrix_qs, matrix_tmp2, keep_sparsity=my_keep_sparsity)
353 CALL timestop(handle)
368 CHARACTER(len=*),
PARAMETER :: routinen =
'matrix_decluster'
372 CALL timeset(routinen, handle)
374 SELECT CASE (ls_mstruct%cluster_type)
383 cpabort(
"Unknown LS cluster type")
386 CALL timestop(handle)
401 CHARACTER(len=*),
PARAMETER :: routinen =
'ls_scf_init_qs'
403 INTEGER :: handle, ispin, nspin, unit_nr
405 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_s
412 CALL timeset(routinen, handle)
416 IF (logger%para_env%is_source())
THEN
423 CALL get_qs_env(qs_env, dft_control=dft_control, &
425 matrix_ks=matrix_ks, &
429 nspin = dft_control%nspins
432 IF (.NOT.
ASSOCIATED(matrix_ks))
THEN
435 ALLOCATE (matrix_ks(ispin)%matrix)
436 CALL dbcsr_create(matrix_ks(ispin)%matrix, template=matrix_s(1)%matrix)
438 CALL dbcsr_set(matrix_ks(ispin)%matrix, 0.0_dp)
443 CALL timestop(handle)
460 REAL(kind=
dp) :: energy
461 LOGICAL,
INTENT(IN),
OPTIONAL :: nonscf
463 CHARACTER(len=*),
PARAMETER :: routinen =
'ls_scf_qs_atomic_guess'
465 INTEGER :: handle, nspin, unit_nr
466 INTEGER,
DIMENSION(2) :: nelectron_spin
467 LOGICAL :: do_scf, has_unit_metric
470 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_s, rho_ao
475 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
479 CALL timeset(routinen, handle)
480 NULLIFY (rho, rho_ao)
484 IF (logger%para_env%is_source())
THEN
491 CALL get_qs_env(qs_env, dft_control=dft_control, &
493 matrix_ks=matrix_ks, &
496 atomic_kind_set=atomic_kind_set, &
497 qs_kind_set=qs_kind_set, &
498 particle_set=particle_set, &
499 has_unit_metric=has_unit_metric, &
501 nelectron_spin=nelectron_spin, &
506 nspin = dft_control%nspins
509 IF (dft_control%qs_control%dftb .OR. dft_control%qs_control%semi_empirical .OR. &
510 dft_control%qs_control%xtb)
THEN
512 dft_control, particle_set, atomic_kind_set, qs_kind_set, &
513 nspin, nelectron_spin, para_env)
516 nspin, nelectron_spin, unit_nr, para_env)
520 IF (
PRESENT(nonscf)) do_scf = .NOT. nonscf
530 CALL timestop(handle)
548 REAL(kind=
dp) :: energy_new
549 INTEGER,
INTENT(IN) :: iscf
551 CHARACTER(len=*),
PARAMETER :: routinen =
'ls_scf_dm_to_ks'
553 INTEGER :: handle, ispin, nspin, unit_nr
560 NULLIFY (energy, rho, rho_ao)
561 CALL timeset(routinen, handle)
564 IF (logger%para_env%is_source())
THEN
570 nspin = ls_scf_env%nspins
571 CALL get_qs_env(qs_env, para_env=para_env, energy=energy, rho=rho)
576 CALL matrix_ls_to_qs(rho_ao(ispin)%matrix, ls_scf_env%matrix_p(ispin), &
577 ls_scf_env%ls_mstruct, covariant=.false.)
582 IF (ls_scf_env%do_rho_mixing)
THEN
584 cpabort(
"Direct P mixing not implemented in linear scaling SCF. ")
586 IF (iscf .GT. max(ls_scf_env%mixing_store%nskip_mixing, 1))
THEN
587 CALL gspace_mixing(qs_env, ls_scf_env%density_mixing_method, &
588 ls_scf_env%mixing_store, rho, para_env, &
590 IF (unit_nr > 0)
THEN
591 WRITE (unit_nr,
'(A57)') &
592 "*********************************************************"
593 WRITE (unit_nr,
'(A13,F5.3,A20,A6,A7,I3)') &
594 " Using ALPHA=", ls_scf_env%mixing_store%alpha, &
595 " to mix rho: method=", ls_scf_env%mixing_store%iter_method,
", iscf=", iscf
596 WRITE (unit_nr,
'(A8,F5.3,A6,F5.3,A8)') &
597 " rho_nw=", ls_scf_env%mixing_store%alpha,
"*rho + ", &
598 1.0_dp - ls_scf_env%mixing_store%alpha,
"*rho_old"
599 WRITE (unit_nr,
'(A57)') &
600 "*********************************************************"
608 just_energy=.false., print_active=.true.)
609 energy_new = energy%total
611 CALL timestop(handle)
624 REAL(kind=
dp) :: energy_new
626 CHARACTER(len=*),
PARAMETER :: routinen =
'ls_nonscf_ks'
628 INTEGER :: handle, ispin, nspin
635 NULLIFY (energy, rho, rho_ao)
636 CALL timeset(routinen, handle)
638 nspin = ls_scf_env%nspins
639 CALL get_qs_env(qs_env, para_env=para_env, energy=energy, rho=rho)
644 CALL matrix_ls_to_qs(rho_ao(ispin)%matrix, ls_scf_env%matrix_p(ispin), &
645 ls_scf_env%ls_mstruct, covariant=.false.)
648 IF (qs_env%harris_method)
THEN
649 CALL get_qs_env(qs_env, harris_env=harris_env)
654 IF (ls_scf_env%do_rho_mixing)
THEN
655 cpabort(
"P mixing not implemented in linear scaling NONSCF. ")
660 just_energy=.false., print_active=.true.)
661 energy_new = energy%total
663 CALL timestop(handle)
676 CHARACTER(len=*),
PARAMETER :: routinen =
'ls_nonscf_energy'
678 INTEGER :: handle, ispin, nspin
679 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_h, matrix_ks, rho_ao
684 NULLIFY (energy, rho, rho_ao)
685 CALL timeset(routinen, handle)
686 IF (qs_env%qmmm)
THEN
690 nspin = ls_scf_env%nspins
691 CALL get_qs_env(qs_env, para_env=para_env, energy=energy, rho=rho)
696 CALL matrix_ls_to_qs(rho_ao(ispin)%matrix, ls_scf_env%matrix_p(ispin), &
697 ls_scf_env%ls_mstruct, covariant=.false.)
706 energy%total = energy%total - energy%core
710 CALL timestop(handle)
727 INTEGER,
INTENT(IN) :: unit_nr
728 CHARACTER(LEN=*),
INTENT(IN) :: title
729 INTEGER,
DIMENSION(:),
POINTER :: stride
731 CHARACTER(len=*),
PARAMETER :: routinen =
'write_matrix_to_cube'
745 CALL timeset(routinen, handle)
747 NULLIFY (ks_env, pw_env, auxbas_pw_pool, pw_pools, particles, subsys, matrix_ks)
758 CALL dbcsr_copy(matrix_p_qs, matrix_ks(1)%matrix)
760 CALL matrix_ls_to_qs(matrix_p_qs, matrix_p_ls, ls_scf_env%ls_mstruct, covariant=.false.)
764 auxbas_pw_pool=auxbas_pw_pool, &
766 CALL auxbas_pw_pool%create_pw(pw=wf_r)
768 CALL auxbas_pw_pool%create_pw(pw=wf_g)
777 particles=particles, stride=stride)
780 CALL auxbas_pw_pool%give_back_pw(wf_r)
781 CALL auxbas_pw_pool%give_back_pw(wf_g)
784 CALL timestop(handle)
797 CHARACTER(len=*),
PARAMETER :: routinen =
'rho_mixing_ls_init'
804 CALL timeset(routinen, handle)
806 CALL get_qs_env(qs_env, dft_control=dft_control, rho=rho)
808 CALL mixing_allocate(qs_env, ls_scf_env%density_mixing_method, nspins=ls_scf_env%nspins, &
809 mixing_store=ls_scf_env%mixing_store)
811 IF (dft_control%qs_control%gapw)
THEN
812 CALL get_qs_env(qs_env, rho_atom_set=rho_atom)
813 CALL mixing_init(ls_scf_env%density_mixing_method, rho, ls_scf_env%mixing_store, &
814 ls_scf_env%para_env, rho_atom=rho_atom)
815 ELSEIF (dft_control%qs_control%dftb .OR. dft_control%qs_control%xtb)
THEN
817 ELSEIF (dft_control%qs_control%semi_empirical)
THEN
818 cpabort(
'SE Code not possible')
820 CALL mixing_init(ls_scf_env%density_mixing_method, rho, ls_scf_env%mixing_store, &
824 CALL timestop(handle)
Define the atomic kind types and their sub types.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_distribution_release(dist)
...
subroutine, public dbcsr_distribution_new(dist, template, group, pgrid, row_dist, col_dist, reuse_arrays)
...
subroutine, public dbcsr_distribution_hold(dist)
...
subroutine, public dbcsr_desymmetrize(matrix_a, matrix_b)
...
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
subroutine, public dbcsr_multiply(transa, transb, alpha, matrix_a, matrix_b, beta, matrix_c, first_row, last_row, first_column, last_column, first_k, last_k, retain_sparsity, filter_eps, flop)
...
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_finalize(matrix)
...
subroutine, public dbcsr_set(matrix, alpha)
...
subroutine, public dbcsr_release(matrix)
...
subroutine, public dbcsr_complete_redistribute(matrix, redist)
...
subroutine, public dbcsr_distribution_get(dist, row_dist, col_dist, nrows, ncols, has_threads, group, mynode, numnodes, nprows, npcols, myprow, mypcol, pgrid, subgroups_defined, prow_group, pcol_group)
...
Routines that link DBCSR and CP2K concepts together.
subroutine, public cp_dbcsr_alloc_block_from_nbl(matrix, sab_orb, desymmetrize)
allocate the blocks of a dbcsr based on the neighbor list
DBCSR operations in CP2K.
various routines to log and control the output. The idea is that decisions about where to log should ...
recursive integer function, public cp_logger_get_default_unit_nr(logger, local, skip_not_ionode)
asks the default unit number of the given logger. try to use cp_logger_get_unit_nr
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
A wrapper around pw_to_cube() which accepts particle_list_type.
subroutine, public cp_pw_to_cube(pw, unit_nr, title, particles, stride, zero_tails, silent, mpi_io)
...
Routines for a linear scaling quickstep SCF run based on the density matrix, with a focus on the inte...
subroutine, public ls_scf_qs_atomic_guess(qs_env, ls_scf_env, energy, nonscf)
get an atomic initial guess
subroutine, public ls_nonscf_ks(qs_env, ls_scf_env, energy_new)
use the external density in ls_scf_env to compute the new KS matrix
subroutine, public matrix_ls_to_qs(matrix_qs, matrix_ls, ls_mstruct, covariant, keep_sparsity)
second link to QS, copy a LS matrix to QS matrix used to isolate QS style matrices from LS style will...
subroutine, public matrix_decluster(matrix_out, matrix_in, ls_mstruct)
Reverses molecular blocking and reduction to single precision if enabled.
subroutine, public ls_scf_dm_to_ks(qs_env, ls_scf_env, energy_new, iscf)
use the density matrix in ls_scf_env to compute the new energy and KS matrix
subroutine, public write_matrix_to_cube(qs_env, ls_scf_env, matrix_p_ls, unit_nr, title, stride)
...
subroutine, public rho_mixing_ls_init(qs_env, ls_scf_env)
Initialize g-space density mixing.
subroutine, public ls_nonscf_energy(qs_env, ls_scf_env)
use the new density matrix in ls_scf_env to compute the new energy
subroutine, public matrix_ls_create(matrix_ls, matrix_qs, ls_mstruct)
create a matrix for use (and as a template) in ls based on a qs template
subroutine, public matrix_qs_to_ls(matrix_ls, matrix_qs, ls_mstruct, covariant)
first link to QS, copy a QS matrix to LS matrix used to isolate QS style matrices from LS style will ...
subroutine, public ls_scf_init_qs(qs_env)
further required initialization of QS. Might be factored-out since this seems common code with the ot...
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
Interface to the message passing library MPI.
represent a simple array based list of the given type
Define the data structure for the particle information.
container for various plainwaves related things
subroutine, public pw_env_get(pw_env, pw_pools, cube_info, gridlevel_info, auxbas_pw_pool, auxbas_grid, auxbas_rs_desc, auxbas_rs_grid, rs_descs, rs_grids, xc_pw_pool, vdw_pw_pool, poisson_env, interp_section)
returns the various attributes of the pw env
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
Routine to return block diagonal density matrix. Blocks correspond to the atomic densities.
subroutine, public calculate_atomic_block_dm(pmatrix, matrix_s, atomic_kind_set, qs_kind_set, nspin, nelectron_spin, ounit, para_env)
returns a block diagonal density matrix. Blocks correspond to the atomic densities.
Calculate the plane wave density by collocating the primitive Gaussian functions (pgf).
subroutine, public calculate_rho_elec(matrix_p, matrix_p_kp, rho, rho_gspace, total_rho, ks_env, soft_valid, compute_tau, compute_grad, basis_type, der_type, idir, task_list_external, pw_env_external)
computes the density corresponding to a given density matrix on the grid
Calculation of the energies concerning the core charge distribution.
module that contains the definitions of the scf types
integer, parameter, public direct_mixing_nr
integer, parameter, public gspace_mixing_nr
Perform a QUICKSTEP wavefunction optimization (single point)
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.
subroutine, public gspace_mixing(qs_env, mixing_method, mixing_store, rho, para_env, iter_count)
Driver for the g-space mixing, calls the proper routine given the requested method.
Types needed for a for a Harris model calculation.
Harris method environment setup and handling.
subroutine, public harris_density_update(qs_env, harris_env)
...
Routines to somehow generate an initial guess.
subroutine, public calculate_mopac_dm(pmat, matrix_s, has_unit_metric, dft_control, particle_set, atomic_kind_set, qs_kind_set, nspin, nelectron_spin, para_env)
returns a block diagonal density matrix. Blocks correspond to the mopac initial guess.
Define the quickstep kind type and their sub types.
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 set_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_ks_im_kp, vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, kpoints, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
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...
elemental subroutine, public charge_mixing_init(mixing_store)
initialiation needed when charge mixing is used
subroutine, public mixing_init(mixing_method, rho, mixing_store, para_env, rho_atom)
initialiation needed when gspace mixing is used
subroutine, public mixing_allocate(qs_env, mixing_method, p_mix_new, p_delta, nspins, mixing_store)
allocation needed when density mixing is used
Define the neighbor list data types and the corresponding functionality.
methods of the rho structure (defined in qs_rho_types)
subroutine, public qs_rho_update_rho(rho_struct, qs_env, rho_xc_external, local_rho_set, task_list_external, task_list_external_soft, pw_env_external, para_env_external)
updates rho_r and rho_g to the rhorho_ao. if use_kinetic_energy_density also computes tau_r and tau_g...
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...
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)
...
Provides all information about an atomic kind.
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
represent a list of objects
contained for different pw related things
to create arrays of pools
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
Contains information on the Harris method.
Provides all information about a quickstep kind.
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
keeps the density in various representations, keeping track of which ones are valid.