38 USE dbcsr_api,
ONLY: &
39 dbcsr_copy, dbcsr_deallocate_matrix, dbcsr_get_block_p, dbcsr_iterator_blocks_left, &
40 dbcsr_iterator_next_block, dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, &
41 dbcsr_p_type, dbcsr_set, dbcsr_setname, dbcsr_type
58 #include "./base/base_uses.f90"
64 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'population_analyses'
84 TYPE(qs_environment_type),
POINTER :: qs_env
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
93 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
94 TYPE(cp_blacs_env_type),
POINTER :: blacs_env
95 TYPE(cp_fm_struct_type),
POINTER :: fmstruct
96 TYPE(cp_fm_type) :: fm_s_half, fm_work1, fm_work2
97 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_p
98 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrixkp_p, matrixkp_s
99 TYPE(dbcsr_type),
POINTER :: sm_p, sm_s
100 TYPE(mp_para_env_type),
POINTER :: para_env
101 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
102 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
103 TYPE(qs_rho_type),
POINTER :: rho
104 TYPE(scf_control_type),
POINTER :: scf_control
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
196 CALL parallel_gemm(transa=
"N", &
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)
228 CALL cp_fm_release(matrix=fm_s_half)
229 CALL cp_fm_release(matrix=fm_work1)
230 CALL cp_fm_release(matrix=fm_work2)
231 IF (
ASSOCIATED(orbpop))
THEN
237 CALL timestop(handle)
253 TYPE(qs_environment_type),
POINTER :: qs_env
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 :: blk, handle, iatom, ic, isgf, ispin, &
260 jatom, jsgf, natom, nsgf, nspin, sgfa, &
262 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: first_sgf_atom
263 LOGICAL :: found, print_gop
265 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: orbpop, p_block, ps_block, s_block
266 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
267 TYPE(dbcsr_iterator_type) :: iter
268 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_p, matrix_s
269 TYPE(dbcsr_type),
POINTER :: sm_p, sm_ps, sm_s
270 TYPE(mp_para_env_type),
POINTER :: para_env
271 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
272 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
273 TYPE(qs_rho_type),
POINTER :: rho
275 CALL timeset(routinen, handle)
277 NULLIFY (atomic_kind_set)
278 NULLIFY (qs_kind_set)
282 NULLIFY (particle_set)
293 atomic_kind_set=atomic_kind_set, &
294 qs_kind_set=qs_kind_set, &
295 matrix_s_kp=matrix_s, &
296 particle_set=particle_set, &
300 cpassert(
ASSOCIATED(atomic_kind_set))
301 cpassert(
ASSOCIATED(qs_kind_set))
302 cpassert(
ASSOCIATED(particle_set))
303 cpassert(
ASSOCIATED(rho))
304 cpassert(
ASSOCIATED(matrix_s))
307 nspin =
SIZE(matrix_p, 1)
312 ALLOCATE (first_sgf_atom(natom))
313 first_sgf_atom(:) = 0
318 ALLOCATE (orbpop(nsgf, nspin))
319 orbpop(:, :) = 0.0_dp
322 IF (output_unit > 0)
THEN
323 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
324 '!-----------------------------------------------------------------------------!'
325 WRITE (unit=output_unit, fmt=
"(T22,A)")
"Mulliken Population Analysis"
329 IF (print_level > 2)
THEN
330 sm_s => matrix_s(1, 1)%matrix
332 headline =
"MULLIKEN NET ATOMIC ORBITAL AND OVERLAP POPULATION MATRIX"
333 CALL dbcsr_copy(matrix_b=sm_ps, &
340 DO ic = 1,
SIZE(matrix_s, 2)
341 IF (print_level > 2)
THEN
342 CALL dbcsr_set(sm_ps, 0.0_dp)
344 sm_s => matrix_s(1, ic)%matrix
345 sm_p => matrix_p(ispin, ic)%matrix
348 CALL dbcsr_iterator_start(iter, sm_s)
349 DO WHILE (dbcsr_iterator_blocks_left(iter))
350 CALL dbcsr_iterator_next_block(iter, iatom, jatom, s_block, blk)
351 IF (.NOT. (
ASSOCIATED(s_block))) cycle
352 CALL dbcsr_get_block_p(matrix=sm_p, &
357 IF (print_level > 2)
THEN
358 CALL dbcsr_get_block_p(matrix=sm_ps, &
363 cpassert(
ASSOCIATED(ps_block))
366 sgfb = first_sgf_atom(jatom)
367 DO jsgf = 1,
SIZE(s_block, 2)
368 DO isgf = 1,
SIZE(s_block, 1)
369 ps = p_block(isgf, jsgf)*s_block(isgf, jsgf)
370 IF (
ASSOCIATED(ps_block)) ps_block(isgf, jsgf) = ps_block(isgf, jsgf) + ps
371 orbpop(sgfb, ispin) = orbpop(sgfb, ispin) + ps
375 IF (iatom /= jatom)
THEN
376 sgfa = first_sgf_atom(iatom)
377 DO isgf = 1,
SIZE(s_block, 1)
378 DO jsgf = 1,
SIZE(s_block, 2)
379 ps = p_block(isgf, jsgf)*s_block(isgf, jsgf)
380 orbpop(sgfa, ispin) = orbpop(sgfa, ispin) + ps
386 CALL dbcsr_iterator_stop(iter)
389 IF (print_level > 2)
THEN
393 CALL dbcsr_setname(sm_ps, trim(headline)//
" For Alpha Spin")
395 CALL dbcsr_setname(sm_ps, trim(headline)//
" For Beta Spin")
399 output_unit=output_unit)
403 CALL para_env%sum(orbpop)
406 IF (output_unit > 0)
THEN
407 print_gop = (print_level > 1)
408 CALL write_orbpop(orbpop, atomic_kind_set, qs_kind_set, particle_set, output_unit, print_gop)
412 CALL save_mulliken_charges(orbpop, atomic_kind_set, qs_kind_set, particle_set, qs_env)
415 IF (
ASSOCIATED(sm_ps))
CALL dbcsr_deallocate_matrix(sm_ps)
416 IF (
ASSOCIATED(orbpop))
THEN
419 IF (
ALLOCATED(first_sgf_atom))
THEN
420 DEALLOCATE (first_sgf_atom)
423 IF (output_unit > 0)
THEN
424 WRITE (unit=output_unit, fmt=
"(T2,A)") &
425 '!-----------------------------------------------------------------------------!'
428 CALL timestop(handle)
444 SUBROUTINE save_mulliken_charges(orbpop, atomic_kind_set, qs_kind_set, particle_set, qs_env)
445 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: orbpop
446 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
447 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
448 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
449 TYPE(qs_environment_type),
POINTER :: qs_env
451 CHARACTER(LEN=default_string_length) :: description
452 INTEGER :: iao, iatom, ikind, iset, isgf, ishell, &
453 iso, l, natom, nset, nsgf, nspin
454 INTEGER,
DIMENSION(:),
POINTER :: nshell
455 INTEGER,
DIMENSION(:, :),
POINTER :: lshell
456 REAL(kind=
dp) :: zeff
457 REAL(kind=
dp),
DIMENSION(3) :: sumorbpop
458 REAL(kind=
dp),
DIMENSION(:),
POINTER :: charges_save
459 TYPE(cp_result_type),
POINTER :: results
460 TYPE(gto_basis_set_type),
POINTER :: orb_basis_set
464 NULLIFY (orb_basis_set)
466 cpassert(
ASSOCIATED(orbpop))
467 cpassert(
ASSOCIATED(atomic_kind_set))
468 cpassert(
ASSOCIATED(particle_set))
470 nspin =
SIZE(orbpop, 2)
477 ALLOCATE (charges_save(natom))
481 sumorbpop(:) = 0.0_dp
482 NULLIFY (orb_basis_set)
485 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set, zeff=zeff)
486 IF (
ASSOCIATED(orb_basis_set))
THEN
493 DO ishell = 1, nshell(iset)
494 l = lshell(ishell, iset)
497 sumorbpop(1) = sumorbpop(1) + orbpop(iao, 1)
499 sumorbpop(1:2) = sumorbpop(1:2) + orbpop(iao, 1:2)
500 sumorbpop(3) = sumorbpop(3) + orbpop(iao, 1) - orbpop(iao, 2)
508 charges_save(iatom) = zeff - sumorbpop(1)
510 charges_save(iatom) = zeff - sumorbpop(1) - sumorbpop(2)
516 description =
"[MULLIKEN-CHARGES]"
518 CALL put_results(results=results, description=description, &
521 DEALLOCATE (charges_save)
523 END SUBROUTINE save_mulliken_charges
538 SUBROUTINE write_orbpop(orbpop, atomic_kind_set, qs_kind_set, particle_set, output_unit, &
539 print_orbital_contributions)
541 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: orbpop
542 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
543 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
544 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
545 INTEGER,
INTENT(IN) :: output_unit
546 LOGICAL,
INTENT(IN) :: print_orbital_contributions
548 CHARACTER(LEN=*),
PARAMETER :: routinen =
'write_orbpop'
550 CHARACTER(LEN=2) :: element_symbol
551 CHARACTER(LEN=6),
DIMENSION(:),
POINTER :: sgf_symbol
552 INTEGER :: handle, iao, iatom, ikind, iset, isgf, &
553 ishell, iso, l, natom, nset, nsgf, &
555 INTEGER,
DIMENSION(:),
POINTER :: nshell
556 INTEGER,
DIMENSION(:, :),
POINTER :: lshell
557 REAL(kind=
dp) :: zeff
558 REAL(kind=
dp),
DIMENSION(3) :: sumorbpop, totsumorbpop
559 TYPE(gto_basis_set_type),
POINTER :: orb_basis_set
561 CALL timeset(routinen, handle)
565 NULLIFY (orb_basis_set)
568 cpassert(
ASSOCIATED(orbpop))
569 cpassert(
ASSOCIATED(atomic_kind_set))
570 cpassert(
ASSOCIATED(particle_set))
572 nspin =
SIZE(orbpop, 2)
579 IF (print_orbital_contributions)
THEN
580 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
581 "# Orbital AO symbol Orbital population Net charge"
583 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
584 "# Atom Element Kind Atomic population Net charge"
587 IF (print_orbital_contributions)
THEN
588 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
589 "# Orbital AO symbol Orbital population (alpha,beta) Net charge Spin moment"
591 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
592 "# Atom Element Kind Atomic population (alpha,beta) Net charge Spin moment"
596 totsumorbpop(:) = 0.0_dp
600 sumorbpop(:) = 0.0_dp
601 NULLIFY (orb_basis_set)
603 element_symbol=element_symbol, &
605 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set, zeff=zeff)
606 IF (
ASSOCIATED(orb_basis_set))
THEN
611 sgf_symbol=sgf_symbol)
614 DO ishell = 1, nshell(iset)
615 l = lshell(ishell, iset)
618 sumorbpop(1) = sumorbpop(1) + orbpop(iao, 1)
619 IF (print_orbital_contributions)
THEN
620 IF (isgf == 1)
WRITE (unit=output_unit, fmt=
"(A)")
""
621 WRITE (unit=output_unit, &
622 fmt=
"(T2,I9,2X,A2,1X,A,T30,F12.6)") &
623 iao, element_symbol, sgf_symbol(isgf), orbpop(iao, 1)
626 sumorbpop(1:2) = sumorbpop(1:2) + orbpop(iao, 1:2)
627 sumorbpop(3) = sumorbpop(3) + orbpop(iao, 1) - orbpop(iao, 2)
628 IF (print_orbital_contributions)
THEN
629 IF (isgf == 1)
WRITE (unit=output_unit, fmt=
"(A)")
""
630 WRITE (unit=output_unit, &
631 fmt=
"(T2,I9,2X,A2,1X,A,T29,2(1X,F12.6),T68,F12.6)") &
632 iao, element_symbol, sgf_symbol(isgf), orbpop(iao, 1:2), &
633 orbpop(iao, 1) - orbpop(iao, 2)
642 totsumorbpop(1) = totsumorbpop(1) + sumorbpop(1)
643 totsumorbpop(3) = totsumorbpop(3) + zeff - sumorbpop(1)
644 WRITE (unit=output_unit, &
645 fmt=
"(T2,I7,5X,A2,2X,I6,T30,F12.6,T68,F12.6)") &
646 iatom, element_symbol, ikind, sumorbpop(1), zeff - sumorbpop(1)
648 totsumorbpop(1:2) = totsumorbpop(1:2) + sumorbpop(1:2)
649 totsumorbpop(3) = totsumorbpop(3) + zeff - sumorbpop(1) - sumorbpop(2)
650 WRITE (unit=output_unit, &
651 fmt=
"(T2,I7,5X,A2,2X,I6,T28,4(1X,F12.6))") &
652 iatom, element_symbol, ikind, sumorbpop(1:2), &
653 zeff - sumorbpop(1) - sumorbpop(2), sumorbpop(3)
659 IF (print_orbital_contributions)
WRITE (unit=output_unit, fmt=
"(A)")
""
661 WRITE (unit=output_unit, &
662 fmt=
"(T2,A,T42,F12.6,T68,F12.6,/)") &
663 "# Total charge", totsumorbpop(1), totsumorbpop(3)
665 WRITE (unit=output_unit, &
666 fmt=
"(T2,A,T28,4(1X,F12.6),/)") &
667 "# Total charge and spin", totsumorbpop(1:2), totsumorbpop(3), &
668 totsumorbpop(1) - totsumorbpop(2)
671 IF (output_unit > 0)
CALL m_flush(output_unit)
673 CALL timestop(handle)
675 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)
...
methods related to the blacs parallel environment
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_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.
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)
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