58#include "./base/base_uses.f90"
64 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'population_analyses'
85 INTEGER,
INTENT(IN) :: output_unit, print_level
87 CHARACTER(LEN=*),
PARAMETER :: routinen =
'lowdin_population_analysis'
89 CHARACTER(LEN=default_string_length) :: headline
90 INTEGER :: handle, ispin, ndep, nsgf, nspin
92 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: orbpop
96 TYPE(
cp_fm_type) :: fm_s_half, fm_work1, fm_work2
98 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrixkp_p, matrixkp_s
102 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
106 CALL timeset(routinen, handle)
108 NULLIFY (atomic_kind_set)
109 NULLIFY (qs_kind_set)
115 NULLIFY (particle_set)
117 NULLIFY (scf_control)
125 atomic_kind_set=atomic_kind_set, &
126 qs_kind_set=qs_kind_set, &
127 matrix_s_kp=matrixkp_s, &
128 particle_set=particle_set, &
130 scf_control=scf_control, &
134 cpassert(
ASSOCIATED(atomic_kind_set))
135 cpassert(
ASSOCIATED(qs_kind_set))
136 cpassert(
ASSOCIATED(matrixkp_s))
137 cpassert(
ASSOCIATED(particle_set))
138 cpassert(
ASSOCIATED(rho))
139 cpassert(
ASSOCIATED(scf_control))
141 IF (
SIZE(matrixkp_s, 2) > 1)
THEN
143 cpwarn(
"Lowdin population analysis not implemented for k-points.")
147 sm_s => matrixkp_s(1, 1)%matrix
150 matrix_p => matrixkp_p(:, 1)
151 nspin =
SIZE(matrix_p, 1)
157 ALLOCATE (orbpop(nsgf, nspin))
158 orbpop(:, :) = 0.0_dp
161 IF (output_unit > 0)
THEN
162 WRITE (unit=output_unit, fmt=
"(/,/,T2,A)")
"LOWDIN POPULATION ANALYSIS"
172 matrix_struct=fmstruct, &
173 name=
"S^(1/2) MATRIX")
175 matrix_struct=fmstruct, &
176 name=
"FULL WORK MATRIX 1")
177 headline =
"SYMMETRICALLY ORTHOGONALISED DENSITY MATRIX"
179 matrix_struct=fmstruct, &
185 CALL cp_fm_power(fm_s_half, fm_work1, 0.5_dp, scf_control%eps_eigval, ndep)
187 CALL cp_warn(__location__, &
188 "Overlap matrix exhibits linear dependencies. At least some "// &
189 "eigenvalues have been quenched.")
193 sm_p => matrix_p(ispin)%matrix
202 matrix_a=fm_s_half, &
206 IF (print_level > 2)
THEN
210 fm_work2%name = trim(headline)//
" FOR ALPHA SPIN"
212 fm_work2%name = trim(headline)//
" FOR BETA SPIN"
216 output_unit=output_unit)
222 IF (output_unit > 0)
THEN
223 print_gop = (print_level > 1)
224 CALL write_orbpop(orbpop, atomic_kind_set, qs_kind_set, particle_set, output_unit, print_gop)
231 IF (
ASSOCIATED(orbpop))
THEN
237 CALL timestop(handle)
254 INTEGER,
INTENT(IN) :: output_unit, print_level
256 CHARACTER(LEN=*),
PARAMETER :: routinen =
'mulliken_population_analysis'
258 CHARACTER(LEN=default_string_length) :: headline
259 INTEGER :: handle, iatom, ic, isgf, ispin, jatom, &
260 jsgf, natom, nsgf, nspin, sgfa, sgfb
261 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: first_sgf_atom
262 LOGICAL :: found, print_gop
264 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: orbpop, p_block, ps_block, s_block
267 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_p, matrix_s
268 TYPE(
dbcsr_type),
POINTER :: sm_p, sm_ps, sm_s
271 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
274 CALL timeset(routinen, handle)
276 NULLIFY (atomic_kind_set)
277 NULLIFY (qs_kind_set)
281 NULLIFY (particle_set)
292 atomic_kind_set=atomic_kind_set, &
293 qs_kind_set=qs_kind_set, &
294 matrix_s_kp=matrix_s, &
295 particle_set=particle_set, &
299 cpassert(
ASSOCIATED(atomic_kind_set))
300 cpassert(
ASSOCIATED(qs_kind_set))
301 cpassert(
ASSOCIATED(particle_set))
302 cpassert(
ASSOCIATED(rho))
303 cpassert(
ASSOCIATED(matrix_s))
306 nspin =
SIZE(matrix_p, 1)
311 ALLOCATE (first_sgf_atom(natom))
312 first_sgf_atom(:) = 0
317 ALLOCATE (orbpop(nsgf, nspin))
318 orbpop(:, :) = 0.0_dp
321 IF (output_unit > 0)
THEN
322 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
323 '!-----------------------------------------------------------------------------!'
324 WRITE (unit=output_unit, fmt=
"(T22,A)")
"Mulliken Population Analysis"
328 IF (print_level > 2)
THEN
329 sm_s => matrix_s(1, 1)%matrix
331 headline =
"MULLIKEN NET ATOMIC ORBITAL AND OVERLAP POPULATION MATRIX"
334 headline = trim(headline)//
" For Alpha Spin"
336 headline = trim(headline)//
" For Beta Spin"
339 CALL dbcsr_copy(matrix_b=sm_ps, matrix_a=sm_s, name=trim(headline))
344 DO ic = 1,
SIZE(matrix_s, 2)
345 IF (print_level > 2)
THEN
348 sm_s => matrix_s(1, ic)%matrix
349 sm_p => matrix_p(ispin, ic)%matrix
355 IF (.NOT. (
ASSOCIATED(s_block))) cycle
361 IF (print_level > 2)
THEN
367 cpassert(
ASSOCIATED(ps_block))
370 sgfb = first_sgf_atom(jatom)
371 DO jsgf = 1,
SIZE(s_block, 2)
372 DO isgf = 1,
SIZE(s_block, 1)
373 ps = p_block(isgf, jsgf)*s_block(isgf, jsgf)
374 IF (
ASSOCIATED(ps_block)) ps_block(isgf, jsgf) = ps_block(isgf, jsgf) + ps
375 orbpop(sgfb, ispin) = orbpop(sgfb, ispin) + ps
379 IF (iatom /= jatom)
THEN
380 sgfa = first_sgf_atom(iatom)
381 DO isgf = 1,
SIZE(s_block, 1)
382 DO jsgf = 1,
SIZE(s_block, 2)
383 ps = p_block(isgf, jsgf)*s_block(isgf, jsgf)
384 orbpop(sgfa, ispin) = orbpop(sgfa, ispin) + ps
393 IF (print_level > 2)
THEN
399 CALL para_env%sum(orbpop)
402 IF (output_unit > 0)
THEN
403 print_gop = (print_level > 1)
404 CALL write_orbpop(orbpop, atomic_kind_set, qs_kind_set, particle_set, output_unit, print_gop)
408 CALL save_mulliken_charges(orbpop, atomic_kind_set, qs_kind_set, particle_set, qs_env)
412 IF (
ASSOCIATED(orbpop))
THEN
415 IF (
ALLOCATED(first_sgf_atom))
THEN
416 DEALLOCATE (first_sgf_atom)
419 IF (output_unit > 0)
THEN
420 WRITE (unit=output_unit, fmt=
"(T2,A)") &
421 '!-----------------------------------------------------------------------------!'
424 CALL timestop(handle)
440 SUBROUTINE save_mulliken_charges(orbpop, atomic_kind_set, qs_kind_set, particle_set, qs_env)
441 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: orbpop
443 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
447 CHARACTER(LEN=default_string_length) :: description
448 INTEGER :: iao, iatom, ikind, iset, isgf, ishell, &
449 iso, l, natom, nset, nsgf, nspin
450 INTEGER,
DIMENSION(:),
POINTER :: nshell
451 INTEGER,
DIMENSION(:, :),
POINTER :: lshell
452 REAL(kind=
dp) :: zeff
453 REAL(kind=
dp),
DIMENSION(3) :: sumorbpop
454 REAL(kind=
dp),
DIMENSION(:),
POINTER :: charges_save
460 NULLIFY (orb_basis_set)
462 cpassert(
ASSOCIATED(orbpop))
463 cpassert(
ASSOCIATED(atomic_kind_set))
464 cpassert(
ASSOCIATED(particle_set))
466 nspin =
SIZE(orbpop, 2)
473 ALLOCATE (charges_save(natom))
477 sumorbpop(:) = 0.0_dp
478 NULLIFY (orb_basis_set)
481 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set, zeff=zeff)
482 IF (
ASSOCIATED(orb_basis_set))
THEN
489 DO ishell = 1, nshell(iset)
490 l = lshell(ishell, iset)
493 sumorbpop(1) = sumorbpop(1) + orbpop(iao, 1)
495 sumorbpop(1:2) = sumorbpop(1:2) + orbpop(iao, 1:2)
496 sumorbpop(3) = sumorbpop(3) + orbpop(iao, 1) - orbpop(iao, 2)
504 charges_save(iatom) = zeff - sumorbpop(1)
506 charges_save(iatom) = zeff - sumorbpop(1) - sumorbpop(2)
512 description =
"[MULLIKEN-CHARGES]"
514 CALL put_results(results=results, description=description, &
517 DEALLOCATE (charges_save)
519 END SUBROUTINE save_mulliken_charges
534 SUBROUTINE write_orbpop(orbpop, atomic_kind_set, qs_kind_set, particle_set, output_unit, &
535 print_orbital_contributions)
537 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: orbpop
539 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
541 INTEGER,
INTENT(IN) :: output_unit
542 LOGICAL,
INTENT(IN) :: print_orbital_contributions
544 CHARACTER(LEN=*),
PARAMETER :: routinen =
'write_orbpop'
546 CHARACTER(LEN=2) :: element_symbol
547 CHARACTER(LEN=6),
DIMENSION(:),
POINTER :: sgf_symbol
548 INTEGER :: handle, iao, iatom, ikind, iset, isgf, &
549 ishell, iso, l, natom, nset, nsgf, &
551 INTEGER,
DIMENSION(:),
POINTER :: nshell
552 INTEGER,
DIMENSION(:, :),
POINTER :: lshell
553 REAL(kind=
dp) :: zeff
554 REAL(kind=
dp),
DIMENSION(3) :: sumorbpop, totsumorbpop
557 CALL timeset(routinen, handle)
561 NULLIFY (orb_basis_set)
564 cpassert(
ASSOCIATED(orbpop))
565 cpassert(
ASSOCIATED(atomic_kind_set))
566 cpassert(
ASSOCIATED(particle_set))
568 nspin =
SIZE(orbpop, 2)
575 IF (print_orbital_contributions)
THEN
576 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
577 "# Orbital AO symbol Orbital population Net charge"
579 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
580 "# Atom Element Kind Atomic population Net charge"
583 IF (print_orbital_contributions)
THEN
584 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
585 "# Orbital AO symbol Orbital population (alpha,beta) Net charge Spin moment"
587 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
588 "# Atom Element Kind Atomic population (alpha,beta) Net charge Spin moment"
592 totsumorbpop(:) = 0.0_dp
596 sumorbpop(:) = 0.0_dp
597 NULLIFY (orb_basis_set)
599 element_symbol=element_symbol, &
601 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set, zeff=zeff)
602 IF (
ASSOCIATED(orb_basis_set))
THEN
607 sgf_symbol=sgf_symbol)
610 DO ishell = 1, nshell(iset)
611 l = lshell(ishell, iset)
614 sumorbpop(1) = sumorbpop(1) + orbpop(iao, 1)
615 IF (print_orbital_contributions)
THEN
616 IF (isgf == 1)
WRITE (unit=output_unit, fmt=
"(A)")
""
617 WRITE (unit=output_unit, &
618 fmt=
"(T2,I9,2X,A2,1X,A,T30,F12.6)") &
619 iao, element_symbol, sgf_symbol(isgf), orbpop(iao, 1)
622 sumorbpop(1:2) = sumorbpop(1:2) + orbpop(iao, 1:2)
623 sumorbpop(3) = sumorbpop(3) + orbpop(iao, 1) - orbpop(iao, 2)
624 IF (print_orbital_contributions)
THEN
625 IF (isgf == 1)
WRITE (unit=output_unit, fmt=
"(A)")
""
626 WRITE (unit=output_unit, &
627 fmt=
"(T2,I9,2X,A2,1X,A,T29,2(1X,F12.6),T68,F12.6)") &
628 iao, element_symbol, sgf_symbol(isgf), orbpop(iao, 1:2), &
629 orbpop(iao, 1) - orbpop(iao, 2)
638 totsumorbpop(1) = totsumorbpop(1) + sumorbpop(1)
639 totsumorbpop(3) = totsumorbpop(3) + zeff - sumorbpop(1)
640 WRITE (unit=output_unit, &
641 fmt=
"(T2,I7,5X,A2,2X,I6,T30,F12.6,T68,F12.6)") &
642 iatom, element_symbol, ikind, sumorbpop(1), zeff - sumorbpop(1)
644 totsumorbpop(1:2) = totsumorbpop(1:2) + sumorbpop(1:2)
645 totsumorbpop(3) = totsumorbpop(3) + zeff - sumorbpop(1) - sumorbpop(2)
646 WRITE (unit=output_unit, &
647 fmt=
"(T2,I7,5X,A2,2X,I6,T28,4(1X,F12.6))") &
648 iatom, element_symbol, ikind, sumorbpop(1:2), &
649 zeff - sumorbpop(1) - sumorbpop(2), sumorbpop(3)
655 IF (print_orbital_contributions)
WRITE (unit=output_unit, fmt=
"(A)")
""
657 WRITE (unit=output_unit, &
658 fmt=
"(T2,A,T42,F12.6,T68,F12.6,/)") &
659 "# Total charge", totsumorbpop(1), totsumorbpop(3)
661 WRITE (unit=output_unit, &
662 fmt=
"(T2,A,T28,4(1X,F12.6),/)") &
663 "# Total charge and spin", totsumorbpop(1:2), totsumorbpop(3), &
664 totsumorbpop(1) - totsumorbpop(2)
667 IF (output_unit > 0)
CALL m_flush(output_unit)
669 CALL timestop(handle)
671 END SUBROUTINE write_orbpop
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)
...
methods related to the blacs parallel environment
subroutine, public dbcsr_deallocate_matrix(matrix)
...
subroutine, public dbcsr_iterator_next_block(iterator, row, column, block, block_number_argument_has_been_removed, row_size, col_size, row_offset, col_offset)
...
logical function, public dbcsr_iterator_blocks_left(iterator)
...
subroutine, public dbcsr_iterator_stop(iterator)
...
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
subroutine, public dbcsr_get_block_p(matrix, row, col, block, found, row_size, col_size)
...
subroutine, public dbcsr_iterator_start(iterator, matrix, shared, dynamic, dynamic_byrows)
...
subroutine, public dbcsr_set(matrix, alpha)
...
DBCSR operations in CP2K.
subroutine, public cp_dbcsr_sm_fm_multiply(matrix, fm_in, fm_out, ncol, alpha, beta)
multiply a dbcsr with a fm matrix
subroutine, public copy_dbcsr_to_fm(matrix, fm)
Copy a DBCSR matrix to a BLACS matrix.
subroutine, public write_fm_with_basis_info(blacs_matrix, before, after, qs_env, para_env, first_row, last_row, first_col, last_col, output_unit, omit_headers)
Print a spherical matrix of blacs type.
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)
...
used for collecting some of the diagonalization schemes available for cp_fm_type. cp_fm_power also mo...
subroutine, public cp_fm_power(matrix, work, exponent, threshold, n_dependent, verbose, eigvals)
...
represent the structure of a full matrix
subroutine, public cp_fm_struct_create(fmstruct, para_env, context, nrow_global, ncol_global, nrow_block, ncol_block, descriptor, first_p_pos, local_leading_dimension, template_fmstruct, square_blocks, force_block)
allocates and initializes a full matrix structure
subroutine, public cp_fm_struct_release(fmstruct)
releases a full matrix structure
represent a full matrix distributed on many processors
subroutine, public cp_fm_get_diag(matrix, diag)
returns the diagonal elements of a fm
subroutine, public cp_fm_create(matrix, matrix_struct, name, use_sp)
creates a new full matrix with the given structure
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
Machine interface based on Fortran 2003 and POSIX.
subroutine, public m_flush(lunit)
flushes units if the &GLOBAL flag is set accordingly
Interface to the message passing library MPI.
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public nso
basic linear algebra operations for full matrixes
Define methods related to particle_type.
subroutine, public get_particle_set(particle_set, qs_kind_set, first_sgf, last_sgf, nsgf, nmao, basis)
Get the components of a particle set.
Define the data structure for the particle information.
Provide various population analyses and print the requested output information.
subroutine, public lowdin_population_analysis(qs_env, output_unit, print_level)
Perform a Lowdin population analysis based on a symmetric orthogonalisation of the density matrix usi...
subroutine, public mulliken_population_analysis(qs_env, output_unit, print_level)
Perform a Mulliken population analysis.
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.
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.
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...
parameters that control an scf iteration
Provides all information about an atomic kind.
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
keeps the information about the structure of a full matrix
contains arbitrary information which need to be stored
stores all the informations relevant to an mpi environment
Provides all information about a quickstep kind.
keeps the density in various representations, keeping track of which ones are valid.