42 USE dbcsr_api,
ONLY: &
43 dbcsr_copy, dbcsr_create, dbcsr_distribution_type, dbcsr_dot, dbcsr_get_block_p, &
44 dbcsr_get_occupation, dbcsr_iterator_blocks_left, dbcsr_iterator_next_block, &
45 dbcsr_iterator_start, dbcsr_iterator_stop, dbcsr_iterator_type, dbcsr_multiply, &
46 dbcsr_p_type, dbcsr_release, dbcsr_set, dbcsr_type, dbcsr_type_no_symmetry, &
84 #include "./base/base_uses.f90"
89 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'minbas_wfn_analysis'
104 TYPE(qs_environment_type),
POINTER :: qs_env
105 TYPE(section_vals_type),
POINTER :: input_section
106 INTEGER,
INTENT(IN) :: unit_nr
108 CHARACTER(len=*),
PARAMETER :: routinen =
'minbas_analysis'
110 INTEGER :: handle, homo, i, ispin, nao, natom, &
111 nimages, nmao, nmo, nspin
112 INTEGER,
ALLOCATABLE,
DIMENSION(:, :, :) :: ecount
113 INTEGER,
DIMENSION(:),
POINTER :: col_blk_sizes, row_blk_sizes
114 LOGICAL :: do_bondorder, explicit, full_ortho, occeq
115 REAL(kind=
dp) :: alpha, amax, eps_filter, filter_eps, &
117 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: border, fnorm, mcharge, prmao
118 REAL(kind=
dp),
DIMENSION(:),
POINTER :: occupation_numbers
119 TYPE(cp_blacs_env_type),
POINTER :: blacs_env
120 TYPE(cp_fm_struct_type),
POINTER :: fm_struct_a, fm_struct_b, fm_struct_c
121 TYPE(cp_fm_type) :: fm1, fm2, fm3, fm4
122 TYPE(cp_fm_type),
POINTER :: fm_mos
123 TYPE(dbcsr_distribution_type),
POINTER :: dbcsr_dist
124 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: mao_coef, pqmat, quambo, sqmat
125 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_s
126 TYPE(dbcsr_type) :: psmat, sinv, smao, smaox, spmat
127 TYPE(dbcsr_type),
POINTER :: smat
128 TYPE(dft_control_type),
POINTER :: dft_control
129 TYPE(mo_set_type),
ALLOCATABLE,
DIMENSION(:) :: mbas
130 TYPE(mo_set_type),
DIMENSION(:),
POINTER :: mos
131 TYPE(mp_para_env_type),
POINTER :: para_env
132 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
133 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
134 TYPE(qs_ks_env_type),
POINTER :: ks_env
135 TYPE(section_vals_type),
POINTER :: molden_section
139 IF (.NOT. explicit)
RETURN
142 CALL get_qs_env(qs_env, dft_control=dft_control)
143 nspin = dft_control%nspins
144 nimages = dft_control%nimages
145 IF (nimages > 1)
THEN
146 IF (unit_nr > 0)
THEN
147 WRITE (unit=unit_nr, fmt=
"(T2,A)") &
148 "K-Points: Localized Minimal Basis Analysis not available."
151 IF (nimages > 1)
RETURN
153 CALL timeset(routinen, handle)
155 IF (unit_nr > 0)
THEN
156 WRITE (unit_nr,
'(/,T2,A)')
'!-----------------------------------------------------------------------------!'
157 WRITE (unit=unit_nr, fmt=
"(T26,A)")
"LOCALIZED MINIMAL BASIS ANALYSIS"
158 WRITE (unit=unit_nr, fmt=
"(T18,A)")
"W.C. Lu et al, J. Chem. Phys. 120, 2629 (2004)"
159 WRITE (unit_nr,
'(T2,A)')
'!-----------------------------------------------------------------------------!'
161 CALL cite_reference(
lu2004)
170 NULLIFY (quambo, mao_coef)
172 full_ortho=full_ortho, eps_filter=eps_filter)
173 IF (
ASSOCIATED(quambo))
THEN
174 CALL get_mo_set(mo_set=mos(1), nao=nao, nmo=nmo)
176 CALL get_qs_env(qs_env=qs_env, qs_kind_set=qs_kind_set, natom=natom)
177 CALL get_ks_env(ks_env=ks_env, particle_set=particle_set, dbcsr_dist=dbcsr_dist)
178 ALLOCATE (row_blk_sizes(natom), col_blk_sizes(natom))
181 nmao = sum(col_blk_sizes)
183 NULLIFY (pqmat, sqmat)
187 ALLOCATE (sqmat(ispin)%matrix)
188 CALL dbcsr_create(matrix=sqmat(ispin)%matrix, &
189 name=
"SQMAT", dist=dbcsr_dist, matrix_type=dbcsr_type_symmetric, &
190 row_blk_size=col_blk_sizes, col_blk_size=col_blk_sizes, nze=0)
191 ALLOCATE (pqmat(ispin)%matrix)
192 CALL dbcsr_create(matrix=pqmat(ispin)%matrix, &
193 name=
"PQMAT", dist=dbcsr_dist, matrix_type=dbcsr_type_symmetric, &
194 row_blk_size=col_blk_sizes, col_blk_size=col_blk_sizes, nze=0)
196 DEALLOCATE (row_blk_sizes, col_blk_sizes)
199 IF (unit_nr > 0)
THEN
200 WRITE (unit_nr,
'(/,T2,A)')
'Localized Minimal Basis Wavefunction Analysis'
205 amax = dbcsr_get_occupation(quambo(ispin)%matrix)
206 IF (unit_nr > 0)
THEN
207 WRITE (unit_nr,
'(/,T2,A,I2,T69,F10.3,A2,/)') &
208 'Occupation of Basis Function Representation (Spin) ', ispin, amax*100._dp,
' %'
213 CALL get_qs_env(qs_env=qs_env, para_env=para_env, blacs_env=blacs_env)
215 para_env=para_env, context=blacs_env)
218 para_env=para_env, context=blacs_env)
222 para_env=para_env, context=blacs_env)
224 ALLOCATE (fnorm(nmo, nspin), ecount(natom, 3, nspin), prmao(natom, nspin))
228 CALL dbcsr_create(smao, name=
"S*QM", template=mao_coef(1)%matrix)
229 smat => matrix_s(1, 1)%matrix
230 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, smat, quambo(ispin)%matrix, 0.0_dp, smao)
232 CALL pm_extend(quambo(ispin)%matrix, smao, ecount(:, :, ispin))
233 CALL dbcsr_create(sinv, name=
"QM*S*QM", template=sqmat(ispin)%matrix)
234 CALL dbcsr_multiply(
"T",
"N", 1.0_dp, quambo(ispin)%matrix, smao, 0.0_dp, sqmat(ispin)%matrix)
236 CALL project_mao(mao_coef(ispin)%matrix, smao, sqmat(ispin)%matrix, prmao(:, ispin))
239 CALL dbcsr_create(smaox, name=
"S*QM*SINV", template=smao)
240 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, smao, sinv, 0.0_dp, smaox)
242 CALL get_mo_set(mos(ispin), mo_coeff=fm_mos, homo=homo)
243 CALL parallel_gemm(
"T",
"N", nmao, nmo, nao, 1.0_dp, fm1, fm_mos, 0.0_dp, fm2)
245 CALL parallel_gemm(
"T",
"N", nmo, nmo, nmao, 1.0_dp, fm2, fm3, 0.0_dp, fm4)
250 CALL get_mo_set(mos(ispin), occupation_numbers=occupation_numbers, maxocc=alpha)
251 occeq = all(occupation_numbers(1:homo) == alpha)
252 CALL dbcsr_copy(pqmat(ispin)%matrix, sqmat(ispin)%matrix)
253 CALL dbcsr_set(pqmat(ispin)%matrix, 0.0_dp)
256 ncol=homo, alpha=alpha, keep_sparsity=.false.)
258 CALL cp_fm_to_fm(fm2, fm3)
262 matrix_g=fm3, ncol=homo, alpha=alpha, keep_sparsity=.true.)
265 CALL dbcsr_release(smao)
266 CALL dbcsr_release(smaox)
267 CALL dbcsr_release(sinv)
270 CALL para_env%sum(ecount)
271 IF (unit_nr > 0)
THEN
273 WRITE (unit_nr,
'(T2,A,T20,A,T40,A,T60,A)')
'Ref. Atom',
' # > 0.100 ',
' # > 0.010 ',
' # > 0.001 '
275 WRITE (unit_nr,
'(T2,I8,T20,I10,T40,I10,T60,I10)') i, ecount(i, 1:3, 1)
278 WRITE (unit_nr,
'(T2,A,T20,A,T40,A,T60,A)')
'Ref. Atom',
' # > 0.100 ',
' # > 0.010 ',
' # > 0.001 '
280 WRITE (unit_nr,
'(T2,I8,T20,2I6,T40,2I6,T60,2I6)') &
281 i, ecount(i, 1, 1:2), ecount(i, 2, 1:2), ecount(i, 3, 1:2)
286 CALL para_env%sum(prmao)
287 IF (unit_nr > 0)
THEN
289 WRITE (unit_nr,
'(/,T2,A,I2)')
'Projection on same atom MAO orbitals: Spin ', ispin
292 WRITE (unit_nr,
'(T2,A,I8,T20,A,F10.6,T42,A,I8,T60,A,F10.6)') &
293 " Atom:", i,
"Projection:", prmao(i, ispin),
" Atom:", i + 1,
"Projection:", prmao(i + 1, ispin)
295 WRITE (unit_nr,
'(T2,A,I8,T20,A,F10.6)')
" Atom:", i,
"Projection:", prmao(i, ispin)
302 CALL get_mo_set(mos(ispin), homo=homo, nmo=nmo)
303 IF (unit_nr > 0)
THEN
304 WRITE (unit_nr,
'(/,T2,A,I2)')
'MO expansion in Localized Minimal Basis: Spin ', ispin
305 WRITE (unit_nr,
'(T64,A)')
'Occupied Orbitals'
306 WRITE (unit_nr,
'(8F10.6)') fnorm(1:homo, ispin)
307 WRITE (unit_nr,
'(T65,A)')
'Virtual Orbitals'
308 WRITE (unit_nr,
'(8F10.6)') fnorm(homo + 1:nmo, ispin)
312 IF (unit_nr > 0)
THEN
313 WRITE (unit_nr,
'(/,T2,A)')
'Mulliken Population Analysis '
315 ALLOCATE (mcharge(natom, nspin))
317 CALL dbcsr_dot(pqmat(ispin)%matrix, sqmat(ispin)%matrix, trace)
318 IF (unit_nr > 0)
THEN
319 WRITE (unit_nr,
'(T2,A,I2,T66,F15.4)')
'Number of Electrons: Trace(PS) Spin ', ispin, trace
321 CALL mulliken_charges(pqmat(ispin)%matrix, sqmat(ispin)%matrix, para_env, mcharge(:, ispin))
323 CALL print_atomic_charges(particle_set, qs_kind_set, unit_nr,
"Minimal Basis Mulliken Charges", &
324 electronic_charges=mcharge)
326 IF (do_bondorder)
THEN
327 ALLOCATE (border(natom, natom))
329 CALL dbcsr_create(psmat, name=
"PS", template=sqmat(1)%matrix, matrix_type=dbcsr_type_no_symmetry)
330 CALL dbcsr_create(spmat, name=
"SP", template=sqmat(1)%matrix, matrix_type=dbcsr_type_no_symmetry)
331 filter_eps = 1.e-6_dp
333 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, pqmat(ispin)%matrix, sqmat(ispin)%matrix, 0.0_dp, psmat, &
334 filter_eps=filter_eps)
335 CALL dbcsr_multiply(
"N",
"N", 1.0_dp, sqmat(ispin)%matrix, pqmat(ispin)%matrix, 0.0_dp, spmat, &
336 filter_eps=filter_eps)
339 CALL para_env%sum(border)
340 border = border*real(nspin, kind=
dp)
341 CALL dbcsr_release(psmat)
342 CALL dbcsr_release(spmat)
348 ALLOCATE (mbas(nspin))
350 CALL allocate_mo_set(mbas(ispin), nao, nmao, nmao, 0.0_dp, 1.0_dp, 0.0_dp)
352 ALLOCATE (mbas(ispin)%eigenvalues(nmao))
353 mbas(ispin)%eigenvalues = 0.0_dp
354 ALLOCATE (mbas(ispin)%occupation_numbers(nmao))
355 mbas(ispin)%occupation_numbers = 1.0_dp
363 CALL post_minbas_cubes(qs_env, input_section, fm_mos, ispin)
373 DEALLOCATE (fnorm, ecount, prmao, mcharge)
374 CALL cp_fm_release(fm1)
375 CALL cp_fm_release(fm2)
376 CALL cp_fm_release(fm3)
377 CALL cp_fm_release(fm4)
390 IF (unit_nr > 0)
THEN
391 WRITE (unit_nr,
'(/,T2,A)') &
392 '!--------------------------END OF MINBAS ANALYSIS-----------------------------!'
395 CALL timestop(handle)
405 SUBROUTINE pm_extend(quambo, smao, ecount)
406 TYPE(dbcsr_type) :: quambo, smao
407 INTEGER,
DIMENSION(:, :),
INTENT(INOUT) :: ecount
409 INTEGER :: iatom, jatom, n
412 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: qblock, sblock
413 TYPE(dbcsr_iterator_type) :: dbcsr_iter
415 CALL dbcsr_iterator_start(dbcsr_iter, quambo)
416 DO WHILE (dbcsr_iterator_blocks_left(dbcsr_iter))
417 CALL dbcsr_iterator_next_block(dbcsr_iter, iatom, jatom, qblock)
418 CALL dbcsr_get_block_p(matrix=smao, row=iatom, col=jatom, block=sblock, found=found)
421 wij = abs(sum(qblock*sblock))/real(n, kind=
dp)
422 IF (wij > 0.1_dp)
THEN
423 ecount(jatom, 1) = ecount(jatom, 1) + 1
424 ELSEIF (wij > 0.01_dp)
THEN
425 ecount(jatom, 2) = ecount(jatom, 2) + 1
426 ELSEIF (wij > 0.001_dp)
THEN
427 ecount(jatom, 3) = ecount(jatom, 3) + 1
431 CALL dbcsr_iterator_stop(dbcsr_iter)
433 END SUBROUTINE pm_extend
442 SUBROUTINE project_mao(mao, smao, sovl, prmao)
443 TYPE(dbcsr_type) :: mao, smao, sovl
444 REAL(kind=
dp),
DIMENSION(:),
INTENT(INOUT) :: prmao
446 INTEGER :: i, iatom, jatom, n
449 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: qblock, sblock, so
450 TYPE(dbcsr_iterator_type) :: dbcsr_iter
452 CALL dbcsr_iterator_start(dbcsr_iter, mao)
453 DO WHILE (dbcsr_iterator_blocks_left(dbcsr_iter))
454 CALL dbcsr_iterator_next_block(dbcsr_iter, iatom, jatom, qblock)
455 cpassert(iatom == jatom)
456 CALL dbcsr_get_block_p(matrix=smao, row=iatom, col=jatom, block=sblock, found=found)
458 CALL dbcsr_get_block_p(matrix=sovl, row=iatom, col=jatom, block=so, found=found)
461 wi = sum(qblock(:, i)*sblock(:, i))
462 prmao(iatom) = prmao(iatom) + wi/so(i, i)
466 CALL dbcsr_iterator_stop(dbcsr_iter)
468 END SUBROUTINE project_mao
477 SUBROUTINE post_minbas_cubes(qs_env, print_section, minbas_coeff, ispin)
478 TYPE(qs_environment_type),
POINTER :: qs_env
479 TYPE(section_vals_type),
POINTER :: print_section
480 TYPE(cp_fm_type),
INTENT(IN) :: minbas_coeff
481 INTEGER,
INTENT(IN) :: ispin
483 CHARACTER(LEN=default_path_length) :: filename, title
484 INTEGER :: i, i_rep, ivec, iw, j, n_rep, natom
485 INTEGER,
DIMENSION(:),
POINTER :: blk_sizes, first_bas, ilist, stride
486 LOGICAL :: explicit, mpi_io
487 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
488 TYPE(cell_type),
POINTER :: cell
489 TYPE(cp_logger_type),
POINTER :: logger
490 TYPE(dft_control_type),
POINTER :: dft_control
491 TYPE(particle_list_type),
POINTER :: particles
492 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
493 TYPE(pw_c1d_gs_type) :: wf_g
494 TYPE(pw_env_type),
POINTER :: pw_env
495 TYPE(pw_pool_type),
POINTER :: auxbas_pw_pool
496 TYPE(pw_r3d_rs_type) :: wf_r
497 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
498 TYPE(qs_subsys_type),
POINTER :: subsys
499 TYPE(section_vals_type),
POINTER :: minbas_section
503 IF (.NOT. explicit)
RETURN
508 CALL get_qs_env(qs_env=qs_env, atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set, &
509 subsys=subsys, cell=cell, particle_set=particle_set, pw_env=pw_env, dft_control=dft_control)
513 ALLOCATE (blk_sizes(natom), first_bas(0:natom))
517 first_bas(i) = first_bas(i - 1) + blk_sizes(i)
520 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
521 CALL auxbas_pw_pool%create_pw(wf_r)
522 CALL auxbas_pw_pool%create_pw(wf_g)
528 DO ivec = first_bas(i - 1) + 1, first_bas(i)
529 WRITE (filename,
'(a4,I5.5,a1,I1.1)')
"MINBAS_", ivec,
"_", ispin
530 WRITE (title, *)
"MINIMAL BASIS ", ivec,
" atom ", i,
" spin ", ispin
533 middle_name=trim(filename), file_position=
"REWIND", log_filename=.false., &
536 cell, dft_control, particle_set, pw_env)
537 CALL cp_pw_to_cube(wf_r, iw, title, particles=particles, stride=stride, mpi_io=mpi_io)
544 DO i = 1,
SIZE(ilist, 1)
546 DO ivec = first_bas(j - 1) + 1, first_bas(j)
547 WRITE (filename,
'(a4,I5.5,a1,I1.1)')
"MINBAS_", ivec,
"_", ispin
548 WRITE (title, *)
"MINIMAL BASIS ", ivec,
" atom ", j,
" spin ", ispin
551 middle_name=trim(filename), file_position=
"REWIND", log_filename=.false., &
554 cell, dft_control, particle_set, pw_env)
555 CALL cp_pw_to_cube(wf_r, iw, title, particles=particles, stride=stride, mpi_io=mpi_io)
561 DEALLOCATE (blk_sizes, first_bas)
562 CALL auxbas_pw_pool%give_back_pw(wf_r)
563 CALL auxbas_pw_pool%give_back_pw(wf_g)
565 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...
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)
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, stride, 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)
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, external_vector)
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, 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_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, rho, rho_xc, vppl, 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_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, 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)
...