96#include "../base/base_uses.f90"
110 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'rt_propagation_utils'
127 CHARACTER(LEN=*),
PARAMETER :: routinen =
'calc_S_derivs'
128 REAL(kind=
dp),
PARAMETER ::
one = 1.0_dp,
zero = 0.0_dp
130 INTEGER :: col_atom, handle, i, j, m, maxder, n, &
132 INTEGER,
DIMENSION(6, 2) :: c_map_mat
133 LOGICAL :: return_s_derivatives
134 REAL(
dp),
DIMENSION(:, :),
POINTER :: block_values
136 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: c_mat, s_der, s_derivs
137 TYPE(
dbcsr_type),
POINTER :: b_mat, tmp_mat, tmp_mat2
145 CALL timeset(routinen, handle)
147 return_s_derivatives = .true.
149 NULLIFY (particle_set)
152 NULLIFY (dft_control)
157 particle_set=particle_set, &
159 dft_control=dft_control, &
162 CALL get_rtp(rtp=rtp, b_mat=b_mat, c_mat=c_mat, s_der=s_der)
169 CALL dbcsr_create(tmp_mat, template=s_der(1)%matrix, matrix_type=
"N")
171 IF (rtp%iter < 2)
THEN
173 IF (dft_control%qs_control%dftb)
THEN
177 basis_type_a=
"ORB", basis_type_b=
"ORB", sab_nl=sab_orb)
182 CALL dbcsr_create(tmp_mat2, template=s_der(1)%matrix, matrix_type=
"S")
184 CALL dbcsr_copy(tmp_mat2, s_derivs(m + 1)%matrix)
192 IF (row_atom == col_atom) block_values = 0.0_dp
208 IF (row_atom == col_atom) block_values = 0.0_dp
209 block_values = block_values*particle_set(col_atom)%v(m)
234 IF (c_map_mat(m, j) == 0) cycle
243 block_values = block_values*particle_set(row_atom)%v(m)
250 CALL timestop(handle)
262 CHARACTER(LEN=default_path_length) :: file_name, project_name
263 INTEGER :: i, id_nr, im, ispin, ncol, nspin, &
264 output_unit, re, unit_nr
265 REAL(kind=
dp) :: alpha, cs_pos
268 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_old
271 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: p_rmpv, rho_new, rho_old
273 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mo_array
276 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
281 NULLIFY (atomic_kind_set, qs_kind_set, mo_array, particle_set, rho_struct, para_env)
284 qs_kind_set=qs_kind_set, &
285 atomic_kind_set=atomic_kind_set, &
286 particle_set=particle_set, &
290 dft_control=dft_control, &
296 IF (logger%para_env%is_source())
THEN
303 nspin =
SIZE(mo_array)
306 SELECT CASE (dft_control%rtp_control%initial_wfn)
309 id_nr=id_nr, multiplicity=dft_control%multiplicity, &
310 dft_section=dft_section)
311 CALL set_uniform_occupation_mo_array(mo_array, nspin)
313 IF (dft_control%rtp_control%apply_wfn_mix_init_restart) &
314 CALL wfn_mix(mo_array, particle_set, dft_section, qs_kind_set, para_env, output_unit, &
320 IF (rtp%linear_scaling)
THEN
321 CALL get_rtp(rtp=rtp, rho_old=rho_old, rho_new=rho_new)
327 matrix_struct=mo_array(ispin)%mo_coeff%matrix_struct, &
329 CALL cp_fm_to_fm(mo_array(ispin)%mo_coeff, mos_occ)
330 IF (mo_array(ispin)%uniform_occupation)
THEN
331 alpha = 3.0_dp - real(nspin,
dp)
336 alpha=alpha, keep_sparsity=.false.)
341 matrix_v=mo_array(ispin)%mo_coeff, &
344 alpha=alpha, keep_sparsity=.false.)
347 CALL dbcsr_copy(rho_new(re)%matrix, rho_old(re)%matrix)
352 CALL get_rtp(rtp=rtp, mos_old=mos_old)
353 DO i = 1,
SIZE(qs_env%mos)
354 CALL cp_fm_to_fm(mo_array(i)%mo_coeff, mos_old(2*i - 1))
359 IF (rtp%linear_scaling)
THEN
360 CALL get_rtp(rtp=rtp, rho_old=rho_old, rho_new=rho_new)
361 project_name = logger%iter_info%project_name
365 WRITE (file_name,
'(A,I0,A)') trim(project_name)//
"_LS_DM_SPIN_RE", ispin,
"_RESTART.dm"
367 CALL dbcsr_binary_read(file_name, distribution=dist, matrix_new=rho_old(re)%matrix)
369 IF (unit_nr > 0)
THEN
370 WRITE (unit_nr,
'(T2,A,E20.8)')
"Read restart DM "//trim(file_name)//
" with checksum: ", cs_pos
372 WRITE (file_name,
'(A,I0,A)') trim(project_name)//
"_LS_DM_SPIN_IM", ispin,
"_RESTART.dm"
374 CALL dbcsr_binary_read(file_name, distribution=dist, matrix_new=rho_old(im)%matrix)
376 IF (unit_nr > 0)
THEN
377 WRITE (unit_nr,
'(T2,A,E20.8)')
"Read restart DM "//trim(file_name)//
" with checksum: ", cs_pos
380 DO i = 1,
SIZE(rho_new)
381 CALL dbcsr_copy(rho_new(i)%matrix, rho_old(i)%matrix)
385 CALL get_rtp(rtp=rtp, mos_old=mos_old)
387 id_nr, dft_control%multiplicity, dft_section)
388 CALL set_uniform_occupation_mo_array(mo_array, nspin)
391 p_rmpv(ispin)%matrix)
405 SUBROUTINE set_uniform_occupation_mo_array(mo_array, nspin)
407 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mo_array
411 LOGICAL :: is_uniform
415 DO mo = 1, mo_array(ispin)%nmo
416 IF (mo_array(ispin)%occupation_numbers(mo) /= 0.0 .AND. &
417 mo_array(ispin)%occupation_numbers(mo) /= 1.0 .AND. &
418 mo_array(ispin)%occupation_numbers(mo) /= 2.0) &
421 mo_array(ispin)%uniform_occupation = is_uniform
424 END SUBROUTINE set_uniform_occupation_mo_array
437 CHARACTER(len=*),
PARAMETER :: routinen =
'calc_update_rho'
438 REAL(kind=
dp),
PARAMETER ::
one = 1.0_dp,
zero = 0.0_dp
440 INTEGER :: handle, i, im, ncol, re
441 REAL(kind=
dp) :: alpha
443 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new
444 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: rho_ao, rho_ao_im
450 CALL timeset(routinen, handle)
452 NULLIFY (rho, ks_env, mos_new, rtp)
458 CALL get_rtp(rtp=rtp, mos_new=mos_new)
459 CALL qs_rho_get(rho_struct=rho, rho_ao=rho_ao)
460 DO i = 1,
SIZE(mos_new)/2
461 re = 2*i - 1; im = 2*i
465 matrix_struct=mos(i)%mo_coeff%matrix_struct, &
468 IF (mos(i)%uniform_occupation)
THEN
469 alpha = 3*
one - real(
SIZE(mos_new)/2,
dp)
479 matrix_v=mos_new(re), &
487 IF (mos(i)%uniform_occupation)
THEN
488 alpha = 3*
one - real(
SIZE(mos_new)/2,
dp)
498 matrix_v=mos_new(im), &
507 IF (rtp%track_imag_density)
THEN
508 CALL qs_rho_get(rho_struct=rho, rho_ao_im=rho_ao_im)
515 CALL timestop(handle)
529 CHARACTER(len=*),
PARAMETER :: routinen =
'calc_update_rho_sparse'
530 REAL(kind=
dp),
PARAMETER ::
zero = 0.0_dp
532 INTEGER :: handle, ispin
533 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: rho_ao, rho_ao_im, rho_new
540 NULLIFY (rho, ks_env, rtp, dft_control)
541 CALL timeset(routinen, handle)
546 dft_control=dft_control)
547 rtp_control => dft_control%rtp_control
548 CALL get_rtp(rtp=rtp, rho_new=rho_new)
549 CALL qs_rho_get(rho_struct=rho, rho_ao=rho_ao)
550 IF (rtp%track_imag_density)
CALL qs_rho_get(rho_struct=rho, rho_ao_im=rho_ao_im)
551 DO ispin = 1,
SIZE(rho_ao)
553 CALL dbcsr_copy(rho_ao(ispin)%matrix, rho_new(ispin*2 - 1)%matrix, keep_sparsity=.true.)
554 IF (rtp%track_imag_density)
THEN
555 CALL dbcsr_copy(rho_ao_im(ispin)%matrix, rho_new(ispin*2)%matrix, keep_sparsity=.true.)
562 CALL timestop(handle)
576 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_p_im
577 LOGICAL,
OPTIONAL :: keep_sparsity
579 INTEGER :: i, im, ncol, re
580 LOGICAL :: my_keep_sparsity
581 REAL(kind=
dp) :: alpha
582 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new, mos_occ
585 CALL get_rtp(rtp=rtp, mos_new=mos_new)
587 my_keep_sparsity = .false.
588 IF (
PRESENT(keep_sparsity)) my_keep_sparsity = keep_sparsity
590 ALLOCATE (mos_occ(
SIZE(mos)*2))
592 DO i = 1,
SIZE(mos_new)/2
593 re = 2*i - 1; im = 2*i
594 alpha = 3.0_dp - real(
SIZE(matrix_p_im),
dp)
596 matrix_struct=mos(i)%mo_coeff%matrix_struct, &
599 matrix_struct=mos(i)%mo_coeff%matrix_struct, &
601 CALL dbcsr_set(matrix_p_im(i)%matrix, 0.0_dp)
608 matrix_v=mos_occ(im), &
609 matrix_g=mos_occ(re), &
611 keep_sparsity=my_keep_sparsity, &
612 alpha=2.0_dp*alpha, &
628 CHARACTER(len=*),
PARAMETER :: routinen =
'write_rtp_mos_to_output_unit'
630 CHARACTER(LEN=10) :: spin
631 CHARACTER(LEN=2*default_string_length) :: name
632 INTEGER :: handle, i, ispin, nao, nelectron, nmo, &
634 LOGICAL :: print_eigvecs, print_mo_info
635 REAL(kind=
dp) :: flexible_electron_count, maxocc, n_el_f
637 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new
642 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
645 NULLIFY (atomic_kind_set, particle_set, qs_kind_set, input, mos, dft_section)
647 CALL timeset(routinen, handle)
650 atomic_kind_set=atomic_kind_set, &
651 qs_kind_set=qs_kind_set, &
652 particle_set=particle_set, &
662 dft_section,
"PRINT%MO") /= 0) .OR. &
663 (qs_env%sim_step == 1)
665 IF ((.NOT. print_mo_info) .OR. (.NOT. print_eigvecs))
THEN
666 CALL timestop(handle)
670 CALL get_rtp(rtp=rtp, mos_new=mos_new)
672 nspins =
SIZE(mos_new)/2
676 CALL get_mo_set(mo_set=mos(ispin), nao=nao, nmo=nmo, nelectron=nelectron, &
677 n_el_f=n_el_f, maxocc=maxocc, flexible_electron_count=flexible_electron_count)
682 nelectron=nelectron, &
685 flexible_electron_count=flexible_electron_count)
687 WRITE (name, fmt=
"(A,I6)")
"RTP MO SET, SPIN ", ispin
688 CALL init_mo_set(mo_set_rtp, fm_ref=mos_new(2*ispin - 1), name=name)
700 mo_set_rtp%occupation_numbers = mos(ispin)%occupation_numbers
704 CALL cp_fm_to_fm(mos_new(2*ispin - i), mo_set_rtp%mo_coeff)
706 dft_section, 4, 0, rtp=.true., spin=trim(spin), &
707 cpart=mod(i, 2), sim_step=qs_env%sim_step)
713 CALL timestop(handle)
728 CHARACTER(LEN=*),
PARAMETER :: routinen =
'write_rtp_mo_cubes'
730 CHARACTER(LEN=default_path_length) :: filename, my_pos_cube, title
731 INTEGER :: handle, homo, i, ir, ispin, ivector, &
732 n_rep, nhomo, nlist, nspins, &
733 rt_time_step, unit_nr
734 INTEGER,
DIMENSION(:),
POINTER ::
list, list_index
735 LOGICAL :: append_cube, do_kpoints, mpi_io
739 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new
752 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
756 CALL timeset(routinen, handle)
758 NULLIFY (logger, auxbas_pw_pool, pw_pools, pw_env)
761 CALL get_qs_env(qs_env, do_kpoints=do_kpoints, &
766 cpabort(
"K points not handled yet for printing MO_CUBE")
775 CALL timestop(handle)
779 CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set, &
781 blacs_env=blacs_env, &
782 qs_kind_set=qs_kind_set, &
786 particle_set=particle_set, &
787 dft_control=dft_control)
790 nspins = dft_control%nspins
791 rt_time_step = qs_env%sim_step
794 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
796 CALL auxbas_pw_pool%create_pw(wf_r)
797 CALL auxbas_pw_pool%create_pw(wf_g)
798 CALL auxbas_pw_pool%create_pw(density_r)
799 CALL get_rtp(rtp=rtp, mos_new=mos_new)
806 my_pos_cube =
"REWIND"
807 IF (append_cube)
THEN
808 my_pos_cube =
"APPEND"
817 IF (
ASSOCIATED(
list))
THEN
820 list_index(i + nlist) =
list(i)
822 nlist = nlist +
SIZE(
list)
827 IF (nhomo == -1) nhomo = homo
828 nlist = homo - max(1, homo - nhomo + 1) + 1
829 ALLOCATE (list_index(nlist))
831 list_index(i) = max(1, homo - nhomo + 1) + i - 1
835 ivector = list_index(i)
837 atomic_kind_set=atomic_kind_set, &
838 qs_kind_set=qs_kind_set, &
840 particle_set=particle_set, &
845 mo_coeff => mos_new(2*ispin - 1)
847 cell, dft_control, particle_set, pw_env)
851 mo_coeff => mos_new(2*ispin)
853 cell, dft_control, particle_set, pw_env)
857 WRITE (filename,
'(a4,I5.5,a1,I1.1)')
"WFN_", ivector,
"_", ispin
860 middle_name=trim(filename), file_position=my_pos_cube, log_filename=.false., &
862 WRITE (title, *)
"DENSITY ", ivector,
" spin ", ispin,
" i.e. HOMO - ", ivector - homo
863 CALL cp_pw_to_cube(density_r, unit_nr, title, particles=particles, &
867 IF (
ASSOCIATED(list_index))
DEALLOCATE (list_index)
871 CALL auxbas_pw_pool%give_back_pw(wf_r)
872 CALL auxbas_pw_pool%give_back_pw(wf_g)
873 CALL auxbas_pw_pool%give_back_pw(density_r)
875 CALL timestop(handle)
888 CHARACTER(len=*) :: subsection_name, error_message
895 IF (explicit) cpwarn(error_message)
Define the atomic kind types and their sub types.
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_scale(matrix, alpha_scalar)
...
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_desymmetrize(matrix_a, matrix_b)
...
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
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_filter(matrix, eps)
...
subroutine, public dbcsr_iterator_start(iterator, matrix, shared, dynamic, dynamic_byrows)
...
subroutine, public dbcsr_set(matrix, alpha)
...
subroutine, public dbcsr_binary_read(filepath, distribution, matrix_new)
...
subroutine, public dbcsr_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
...
real(kind=dp) function, public dbcsr_checksum(matrix, pos)
Calculates the checksum of a DBCSR matrix.
DBCSR operations in CP2K.
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 a full matrix distributed on many processors
subroutine, public cp_fm_get_info(matrix, name, nrow_global, ncol_global, nrow_block, ncol_block, nrow_local, ncol_local, row_indices, col_indices, local_data, context, nrow_locals, ncol_locals, matrix_struct, para_env)
returns all kind of information about the full matrix
subroutine, public cp_fm_set_all(matrix, alpha, beta)
set all elements of a matrix to the same value, and optionally the diagonal to a different one
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 ...
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
integer function, public cp_logger_get_default_io_unit(logger)
returns the unit nr for the ionode (-1 on all other processors) skips as well checks if the procs cal...
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,...
integer, parameter, public cp_p_file
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
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)
...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
integer, parameter, public default_path_length
An array-based list which grows on demand. When the internal array is full, a new array of twice the ...
Definition of mathematical constants and functions.
real(kind=dp), parameter, public one
real(kind=dp), parameter, public zero
Utility routines for the memory handling.
Interface to the message passing library MPI.
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public ncoset
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 ...
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
collects routines that calculate density matrices
Calculation of Overlap and Hamiltonian matrices in DFTB.
subroutine, public build_dftb_overlap(qs_env, nderivative, matrix_s)
...
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, 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, 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 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...
Definition and initialisation of the mo data type.
subroutine, public read_mo_set_from_restart(mo_array, qs_kind_set, particle_set, para_env, id_nr, multiplicity, dft_section, natom_mismatch, cdft, out_unit)
...
subroutine, public read_rt_mos_from_restart(mo_array, rt_mos, qs_kind_set, particle_set, para_env, id_nr, multiplicity, dft_section)
...
subroutine, public write_mo_set_to_output_unit(mo_set, qs_kind_set, particle_set, dft_section, before, kpoint, final_mos, spin, solver_method, rtp, cpart, sim_step, umo_set)
Write MO information to output file (eigenvalues, occupation numbers, coefficients)
Definition and initialisation of the mo data type.
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.
subroutine, public init_mo_set(mo_set, fm_pool, fm_ref, fm_struct, name)
initializes an allocated mo_set. eigenvalues, mo_coeff, occupation_numbers are valid only after this ...
Define the neighbor list data types and the corresponding functionality.
Calculation of overlap matrix, its derivatives and forces.
subroutine, public build_overlap_matrix(ks_env, matrix_s, matrixkp_s, matrix_name, nderivative, basis_type_a, basis_type_b, sab_nl, calculate_forces, matrix_p, matrixkp_p)
Calculation of the overlap matrix over Cartesian Gaussian functions.
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_set(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)
...
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...
Does all kind of post scf calculations for GPW/GAPW.
subroutine, public wfn_mix(mos, particle_set, dft_section, qs_kind_set, para_env, output_unit, unoccupied_orbs, scf_env, matrix_s, marked_states, for_rtp)
writes a new 'mixed' set of mos to restart file, without touching the current MOs
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)
...
Types and set_get for real time propagation depending on runtype and diagonalization method different...
subroutine, public get_rtp(rtp, exp_h_old, exp_h_new, h_last_iter, rho_old, rho_next, rho_new, mos, mos_new, mos_old, mos_next, s_inv, s_half, s_minus_half, b_mat, c_mat, propagator_matrix, mixing, mixing_factor, s_der, dt, nsteps, sinvh, sinvh_imag, sinvb, admm_mos)
...
subroutine, public calc_update_rho_sparse(qs_env)
Copies the density matrix back into the qs_envrhorho_ao.
subroutine, public calc_s_derivs(qs_env)
Calculates dS/dR respectily the velocity weighted derivatves only needed for ehrenfest MD.
subroutine, public write_rtp_mos_to_output_unit(qs_env, rtp)
...
subroutine, public write_rtp_mo_cubes(qs_env, rtp)
Write the time dependent amplitude of the MOs in real grid. Very close to qs_scf_post_gpw/qs_scf_post...
subroutine, public calculate_p_imaginary(qs_env, rtp, matrix_p_im, keep_sparsity)
...
subroutine, public calc_update_rho(qs_env)
calculates the density from the complex MOs and passes the density to qs_env.
subroutine, public warn_section_unused(section, subsection_name, error_message)
Warn about unused sections of the print section - only implemented for some of the methods.
subroutine, public get_restart_wfn(qs_env)
reads the restart file. At the moment only SCF (means only real)
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...
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 ...
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.