85#include "./base/base_uses.f90"
90 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'minbas_wfn_analysis'
107 INTEGER,
INTENT(IN) :: unit_nr
109 CHARACTER(len=*),
PARAMETER :: routinen =
'minbas_analysis'
111 INTEGER :: handle, homo, i, ispin, nao, natom, &
112 nimages, nmao, nmo, nspin
113 INTEGER,
ALLOCATABLE,
DIMENSION(:, :, :) :: ecount
114 INTEGER,
DIMENSION(:),
POINTER :: col_blk_sizes, row_blk_sizes
115 LOGICAL :: do_bondorder, explicit, full_ortho, occeq
116 REAL(kind=
dp) :: alpha, amax, eps_filter, filter_eps, &
118 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: border, fnorm, mcharge, prmao
119 REAL(kind=
dp),
DIMENSION(:),
POINTER :: occupation_numbers
126 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: mao_coef, pqmat, quambo, sqmat
127 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_s
128 TYPE(
dbcsr_type) :: psmat, sinv, smao, smaox, spmat
131 TYPE(
mo_set_type),
ALLOCATABLE,
DIMENSION(:) :: mbas
135 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
141 IF (.NOT. explicit)
RETURN
144 CALL get_qs_env(qs_env, dft_control=dft_control)
145 nspin = dft_control%nspins
146 nimages = dft_control%nimages
147 IF (nimages > 1)
THEN
148 IF (unit_nr > 0)
THEN
149 WRITE (unit=unit_nr, fmt=
"(T2,A)") &
150 "K-Points: Localized Minimal Basis Analysis not available."
153 IF (nimages > 1)
RETURN
155 CALL timeset(routinen, handle)
157 IF (unit_nr > 0)
THEN
158 WRITE (unit_nr,
'(/,T2,A)')
'!-----------------------------------------------------------------------------!'
159 WRITE (unit=unit_nr, fmt=
"(T26,A)")
"LOCALIZED MINIMAL BASIS ANALYSIS"
160 WRITE (unit=unit_nr, fmt=
"(T18,A)")
"W.C. Lu et al, J. Chem. Phys. 120, 2629 (2004)"
161 WRITE (unit_nr,
'(T2,A)')
'!-----------------------------------------------------------------------------!'
163 CALL cite_reference(
lu2004)
172 NULLIFY (quambo, mao_coef)
174 full_ortho=full_ortho, eps_filter=eps_filter)
175 IF (
ASSOCIATED(quambo))
THEN
176 CALL get_mo_set(mo_set=mos(1), nao=nao, nmo=nmo)
178 CALL get_qs_env(qs_env=qs_env, qs_kind_set=qs_kind_set, natom=natom)
179 CALL get_ks_env(ks_env=ks_env, particle_set=particle_set, dbcsr_dist=dbcsr_dist)
180 ALLOCATE (row_blk_sizes(natom), col_blk_sizes(natom))
183 nmao = sum(col_blk_sizes)
185 NULLIFY (pqmat, sqmat)
189 ALLOCATE (sqmat(ispin)%matrix)
191 name=
"SQMAT", dist=dbcsr_dist, matrix_type=dbcsr_type_symmetric, &
192 row_blk_size=col_blk_sizes, col_blk_size=col_blk_sizes)
193 ALLOCATE (pqmat(ispin)%matrix)
195 name=
"PQMAT", dist=dbcsr_dist, matrix_type=dbcsr_type_symmetric, &
196 row_blk_size=col_blk_sizes, col_blk_size=col_blk_sizes)
198 DEALLOCATE (row_blk_sizes, col_blk_sizes)
201 IF (unit_nr > 0)
THEN
202 WRITE (unit_nr,
'(/,T2,A)')
'Localized Minimal Basis Wavefunction Analysis'
208 IF (unit_nr > 0)
THEN
209 WRITE (unit_nr,
'(/,T2,A,I2,T69,F10.3,A2,/)') &
210 'Occupation of Basis Function Representation (Spin) ', ispin, amax*100._dp,
' %'
215 CALL get_qs_env(qs_env=qs_env, para_env=para_env, blacs_env=blacs_env)
217 para_env=para_env, context=blacs_env)
220 para_env=para_env, context=blacs_env)
224 para_env=para_env, context=blacs_env)
226 ALLOCATE (fnorm(nmo, nspin), ecount(natom, 3, nspin), prmao(natom, nspin))
230 CALL dbcsr_create(smao, name=
"S*QM", template=mao_coef(1)%matrix)
231 smat => matrix_s(1, 1)%matrix
232 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, smat, quambo(ispin)%matrix, 0.0_dp, smao)
234 CALL pm_extend(quambo(ispin)%matrix, smao, ecount(:, :, ispin))
235 CALL dbcsr_create(sinv, name=
"QM*S*QM", template=sqmat(ispin)%matrix)
236 CALL dbcsr_multiply(
"T",
"N", 1.0_dp, quambo(ispin)%matrix, smao, 0.0_dp, sqmat(ispin)%matrix)
238 CALL project_mao(mao_coef(ispin)%matrix, smao, sqmat(ispin)%matrix, prmao(:, ispin))
241 CALL dbcsr_create(smaox, name=
"S*QM*SINV", template=smao)
244 CALL get_mo_set(mos(ispin), mo_coeff=fm_mos, homo=homo)
245 CALL parallel_gemm(
"T",
"N", nmao, nmo, nao, 1.0_dp, fm1, fm_mos, 0.0_dp, fm2)
247 CALL parallel_gemm(
"T",
"N", nmo, nmo, nmao, 1.0_dp, fm2, fm3, 0.0_dp, fm4)
252 CALL get_mo_set(mos(ispin), occupation_numbers=occupation_numbers, maxocc=alpha)
253 occeq = all(occupation_numbers(1:homo) == alpha)
254 CALL dbcsr_copy(pqmat(ispin)%matrix, sqmat(ispin)%matrix)
255 CALL dbcsr_set(pqmat(ispin)%matrix, 0.0_dp)
258 ncol=homo, alpha=alpha, keep_sparsity=.false.)
264 matrix_g=fm3, ncol=homo, alpha=alpha, keep_sparsity=.true.)
272 CALL para_env%sum(ecount)
273 IF (unit_nr > 0)
THEN
275 WRITE (unit_nr,
'(T2,A,T20,A,T40,A,T60,A)')
'Ref. Atom',
' # > 0.100 ',
' # > 0.010 ',
' # > 0.001 '
277 WRITE (unit_nr,
'(T2,I8,T20,I10,T40,I10,T60,I10)') i, ecount(i, 1:3, 1)
280 WRITE (unit_nr,
'(T2,A,T20,A,T40,A,T60,A)')
'Ref. Atom',
' # > 0.100 ',
' # > 0.010 ',
' # > 0.001 '
282 WRITE (unit_nr,
'(T2,I8,T20,2I6,T40,2I6,T60,2I6)') &
283 i, ecount(i, 1, 1:2), ecount(i, 2, 1:2), ecount(i, 3, 1:2)
288 CALL para_env%sum(prmao)
289 IF (unit_nr > 0)
THEN
291 WRITE (unit_nr,
'(/,T2,A,I2)')
'Projection on same atom MAO orbitals: Spin ', ispin
294 WRITE (unit_nr,
'(T2,A,I8,T20,A,F10.6,T42,A,I8,T60,A,F10.6)') &
295 " Atom:", i,
"Projection:", prmao(i, ispin),
" Atom:", i + 1,
"Projection:", prmao(i + 1, ispin)
297 WRITE (unit_nr,
'(T2,A,I8,T20,A,F10.6)')
" Atom:", i,
"Projection:", prmao(i, ispin)
304 CALL get_mo_set(mos(ispin), homo=homo, nmo=nmo)
305 IF (unit_nr > 0)
THEN
306 WRITE (unit_nr,
'(/,T2,A,I2)')
'MO expansion in Localized Minimal Basis: Spin ', ispin
307 WRITE (unit_nr,
'(T64,A)')
'Occupied Orbitals'
308 WRITE (unit_nr,
'(8F10.6)') fnorm(1:homo, ispin)
309 WRITE (unit_nr,
'(T65,A)')
'Virtual Orbitals'
310 WRITE (unit_nr,
'(8F10.6)') fnorm(homo + 1:nmo, ispin)
314 IF (unit_nr > 0)
THEN
315 WRITE (unit_nr,
'(/,T2,A)')
'Mulliken Population Analysis '
317 ALLOCATE (mcharge(natom, nspin))
319 CALL dbcsr_dot(pqmat(ispin)%matrix, sqmat(ispin)%matrix, trace)
320 IF (unit_nr > 0)
THEN
321 WRITE (unit_nr,
'(T2,A,I2,T66,F15.4)')
'Number of Electrons: Trace(PS) Spin ', ispin, trace
323 CALL mulliken_charges(pqmat(ispin)%matrix, sqmat(ispin)%matrix, para_env, mcharge(:, ispin))
325 CALL print_atomic_charges(particle_set, qs_kind_set, unit_nr,
"Minimal Basis Mulliken Charges", &
326 electronic_charges=mcharge)
328 IF (do_bondorder)
THEN
329 ALLOCATE (border(natom, natom))
331 CALL dbcsr_create(psmat, name=
"PS", template=sqmat(1)%matrix, matrix_type=dbcsr_type_no_symmetry)
332 CALL dbcsr_create(spmat, name=
"SP", template=sqmat(1)%matrix, matrix_type=dbcsr_type_no_symmetry)
333 filter_eps = 1.e-6_dp
335 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, pqmat(ispin)%matrix, sqmat(ispin)%matrix, 0.0_dp, psmat, &
336 filter_eps=filter_eps)
337 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, sqmat(ispin)%matrix, pqmat(ispin)%matrix, 0.0_dp, spmat, &
338 filter_eps=filter_eps)
341 CALL para_env%sum(border)
342 border = border*real(nspin, kind=
dp)
350 ALLOCATE (mbas(nspin))
352 CALL allocate_mo_set(mbas(ispin), nao, nmao, nmao, 0.0_dp, 1.0_dp, 0.0_dp)
354 ALLOCATE (mbas(ispin)%eigenvalues(nmao))
355 mbas(ispin)%eigenvalues = 0.0_dp
356 ALLOCATE (mbas(ispin)%occupation_numbers(nmao))
357 mbas(ispin)%occupation_numbers = 1.0_dp
365 CALL post_minbas_cubes(qs_env, input_section, fm_mos, ispin)
370 CALL write_mos_molden(mbas, qs_kind_set, particle_set, molden_section, cell=cell, qs_env=qs_env)
376 DEALLOCATE (fnorm, ecount, prmao, mcharge)
393 IF (unit_nr > 0)
THEN
394 WRITE (unit_nr,
'(/,T2,A)') &
395 '!--------------------------END OF MINBAS ANALYSIS-----------------------------!'
398 CALL timestop(handle)
408 SUBROUTINE pm_extend(quambo, smao, ecount)
410 INTEGER,
DIMENSION(:, :),
INTENT(INOUT) :: ecount
412 INTEGER :: iatom, jatom, n
415 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: qblock, sblock
421 CALL dbcsr_get_block_p(matrix=smao, row=iatom, col=jatom, block=sblock, found=found)
424 wij = abs(sum(qblock*sblock))/real(n, kind=
dp)
425 IF (wij > 0.1_dp)
THEN
426 ecount(jatom, 1) = ecount(jatom, 1) + 1
427 ELSEIF (wij > 0.01_dp)
THEN
428 ecount(jatom, 2) = ecount(jatom, 2) + 1
429 ELSEIF (wij > 0.001_dp)
THEN
430 ecount(jatom, 3) = ecount(jatom, 3) + 1
436 END SUBROUTINE pm_extend
445 SUBROUTINE project_mao(mao, smao, sovl, prmao)
447 REAL(kind=
dp),
DIMENSION(:),
INTENT(INOUT) :: prmao
449 INTEGER :: i, iatom, jatom, n
452 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: qblock, sblock, so
458 cpassert(iatom == jatom)
459 CALL dbcsr_get_block_p(matrix=smao, row=iatom, col=jatom, block=sblock, found=found)
464 wi = sum(qblock(:, i)*sblock(:, i))
465 prmao(iatom) = prmao(iatom) + wi/so(i, i)
471 END SUBROUTINE project_mao
480 SUBROUTINE post_minbas_cubes(qs_env, print_section, minbas_coeff, ispin)
484 INTEGER,
INTENT(IN) :: ispin
486 CHARACTER(LEN=default_path_length) :: filename, title
487 INTEGER :: i, i_rep, ivec, iw, j, n_rep, natom
488 INTEGER,
DIMENSION(:),
POINTER :: blk_sizes, first_bas, ilist, stride
489 LOGICAL :: explicit, mpi_io
500 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
506 IF (.NOT. explicit)
RETURN
511 CALL get_qs_env(qs_env=qs_env, atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set, &
512 subsys=subsys, cell=cell, particle_set=particle_set, pw_env=pw_env, dft_control=dft_control)
516 ALLOCATE (blk_sizes(natom), first_bas(0:natom))
520 first_bas(i) = first_bas(i - 1) + blk_sizes(i)
523 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
524 CALL auxbas_pw_pool%create_pw(wf_r)
525 CALL auxbas_pw_pool%create_pw(wf_g)
531 DO ivec = first_bas(i - 1) + 1, first_bas(i)
532 WRITE (filename,
'(a4,I5.5,a1,I1.1)')
"MINBAS_", ivec,
"_", ispin
533 WRITE (title, *)
"MINIMAL BASIS ", ivec,
" atom ", i,
" spin ", ispin
536 middle_name=trim(filename), file_position=
"REWIND", log_filename=.false., &
539 cell, dft_control, particle_set, pw_env)
540 CALL cp_pw_to_cube(wf_r, iw, title, particles=particles, stride=stride, mpi_io=mpi_io)
547 DO i = 1,
SIZE(ilist, 1)
549 DO ivec = first_bas(j - 1) + 1, first_bas(j)
550 WRITE (filename,
'(a4,I5.5,a1,I1.1)')
"MINBAS_", ivec,
"_", ispin
551 WRITE (title, *)
"MINIMAL BASIS ", ivec,
" atom ", j,
" spin ", ispin
554 middle_name=trim(filename), file_position=
"REWIND", log_filename=.false., &
557 cell, dft_control, particle_set, pw_env)
558 CALL cp_pw_to_cube(wf_r, iw, title, particles=particles, stride=stride, mpi_io=mpi_io)
564 DEALLOCATE (blk_sizes, first_bas)
565 CALL auxbas_pw_pool%give_back_pw(wf_r)
566 CALL auxbas_pw_pool%give_back_pw(wf_g)
568 END SUBROUTINE post_minbas_cubes
simple routine to print charges for all atomic charge methods (currently mulliken,...
subroutine, public print_bond_orders(particle_set, scr, bond_orders)
Print Mayer bond orders.
subroutine, public print_atomic_charges(particle_set, qs_kind_set, scr, title, electronic_charges, atomic_charges)
generates a unified output format for atomic charges
Define the atomic kind types and their sub types.
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public lu2004
Handles all functions related to the CELL.
methods related to the blacs parallel environment
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
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_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)
...
real(kind=dp) function, public dbcsr_get_occupation(matrix)
...
subroutine, public dbcsr_iterator_start(iterator, matrix, shared, dynamic, dynamic_byrows)
...
subroutine, public dbcsr_set(matrix, alpha)
...
subroutine, public dbcsr_release(matrix)
...
subroutine, public dbcsr_dot(matrix_a, matrix_b, trace)
Computes the dot product of two matrices, also known as the trace of their matrix product.
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 cp_dbcsr_plus_fm_fm_t(sparse_matrix, matrix_v, matrix_g, ncol, alpha, keep_sparsity, symmetry_mode)
performs the multiplication sparse_matrix+dense_mat*dens_mat^T if matrix_g is not explicitly given,...
Basic linear algebra operations for full matrices.
subroutine, public cp_fm_column_scale(matrixa, scaling)
scales column i of matrix a with scaling(i)
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, nrow, ncol, set_zero)
creates a new full matrix with the given structure
various routines to log and control the output. The idea is that decisions about where to log should ...
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,...
A wrapper around pw_to_cube() which accepts particle_list_type.
subroutine, public cp_pw_to_cube(pw, unit_nr, title, particles, zeff, stride, max_file_size_mb, zero_tails, silent, mpi_io)
...
Routines useful for iterative matrix calculations.
subroutine, public invert_hotelling(matrix_inverse, matrix, threshold, use_inv_as_guess, norm_convergence, filter_eps, accelerator_order, max_iter_lanczos, eps_lanczos, silent)
invert a symmetric positive definite matrix by Hotelling's method explicit symmetrization makes this ...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_path_length
Interface to the message passing library MPI.
Calculate localized minimal basis.
subroutine, public minbas_calculation(qs_env, mos, quambo, mao, iounit, full_ortho, eps_filter)
...
Calculate localized minimal basis and analyze wavefunctions.
subroutine, public minbas_analysis(qs_env, input_section, unit_nr)
...
Functions handling the MOLDEN format. Split from mode_selective.
subroutine, public write_mos_molden(mos, qs_kind_set, particle_set, print_section, cell, unoccupied_orbs, unoccupied_evals, qs_env, calc_energies)
Write out the MOs in molden format for visualisation.
compute mulliken charges we (currently) define them as c_i = 1/2 [ (PS)_{ii} + (SP)_{ii} ]
subroutine, public compute_bond_order(psmat, spmat, bond_order)
compute Mayer bond orders for a single spin channel for complete result sum up over all spins and mul...
basic linear algebra operations for full matrixes
represent a simple array based list of the given type
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.
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 ...
Calculate the plane wave density by collocating the primitive Gaussian functions (pgf).
subroutine, public calculate_wavefunction(mo_vectors, ivector, rho, rho_gspace, atomic_kind_set, qs_kind_set, cell, dft_control, particle_set, pw_env, basis_type)
maps a given wavefunction on the grid
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, mimic, 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, sab_cneo, 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, xcint_weights, 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, rhoz_cneo_set, ecoul_1c, rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_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, do_rixs, tb_tblite)
Get the QUICKSTEP environment.
Define the quickstep kind type and their sub types.
subroutine, public get_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, exc_accint, 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, rho, rho_xc, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, 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, sab_cneo, task_list, task_list_soft, kpoints, do_kpoints, atomic_kind_set, qs_kind_set, cell, cell_ref, use_ref_cell, particle_set, energy, force, local_particles, local_molecules, molecule_kind_set, molecule_set, subsys, cp_subsys, virial, results, atprop, nkind, natom, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env, nelectron_total, nelectron_spin)
...
collects routines that perform operations directly related to MOs
subroutine, public make_basis_lowdin(vmatrix, ncol, matrix_s)
return a set of S orthonormal vectors (C^T S C == 1) where a Loedwin transformation is applied to kee...
Definition and initialisation of the mo data type.
subroutine, public set_mo_set(mo_set, maxocc, homo, lfomo, nao, nelectron, n_el_f, nmo, eigenvalues, occupation_numbers, uniform_occupation, kts, mu, flexible_electron_count)
Set the components of a MO set data structure.
subroutine, public allocate_mo_set(mo_set, nao, nmo, nelectron, n_el_f, maxocc, flexible_electron_count)
Allocates a mo set and partially initializes it (nao,nmo,nelectron, and flexible_electron_count are v...
subroutine, public deallocate_mo_set(mo_set)
Deallocate a wavefunction data structure.
subroutine, public get_mo_set(mo_set, maxocc, homo, lfomo, nao, nelectron, n_el_f, nmo, eigenvalues, occupation_numbers, mo_coeff, mo_coeff_b, uniform_occupation, kts, mu, flexible_electron_count)
Get the components of a MO set data structure.
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 defining parameters related to the simulation cell.
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
keeps the information about the structure of a full matrix
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
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
Provides all information about a quickstep kind.
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...