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, dft_section=dft_section)
310 CALL set_uniform_occupation_mo_array(mo_array, nspin)
312 IF (dft_control%rtp_control%apply_wfn_mix_init_restart) &
313 CALL wfn_mix(mo_array, particle_set, dft_section, qs_kind_set, para_env, output_unit, &
319 IF (rtp%linear_scaling)
THEN
320 CALL get_rtp(rtp=rtp, rho_old=rho_old, rho_new=rho_new)
326 matrix_struct=mo_array(ispin)%mo_coeff%matrix_struct, &
328 CALL cp_fm_to_fm(mo_array(ispin)%mo_coeff, mos_occ)
329 IF (mo_array(ispin)%uniform_occupation)
THEN
330 alpha = 3.0_dp - real(nspin,
dp)
335 alpha=alpha, keep_sparsity=.false.)
340 matrix_v=mo_array(ispin)%mo_coeff, &
343 alpha=alpha, keep_sparsity=.false.)
346 CALL dbcsr_copy(rho_new(re)%matrix, rho_old(re)%matrix)
351 CALL get_rtp(rtp=rtp, mos_old=mos_old)
352 DO i = 1,
SIZE(qs_env%mos)
353 CALL cp_fm_to_fm(mo_array(i)%mo_coeff, mos_old(2*i - 1))
358 IF (rtp%linear_scaling)
THEN
359 CALL get_rtp(rtp=rtp, rho_old=rho_old, rho_new=rho_new)
360 project_name = logger%iter_info%project_name
364 WRITE (file_name,
'(A,I0,A)') trim(project_name)//
"_LS_DM_SPIN_RE", ispin,
"_RESTART.dm"
366 CALL dbcsr_binary_read(file_name, distribution=dist, matrix_new=rho_old(re)%matrix)
368 IF (unit_nr > 0)
THEN
369 WRITE (unit_nr,
'(T2,A,E20.8)')
"Read restart DM "//trim(file_name)//
" with checksum: ", cs_pos
371 WRITE (file_name,
'(A,I0,A)') trim(project_name)//
"_LS_DM_SPIN_IM", ispin,
"_RESTART.dm"
373 CALL dbcsr_binary_read(file_name, distribution=dist, matrix_new=rho_old(im)%matrix)
375 IF (unit_nr > 0)
THEN
376 WRITE (unit_nr,
'(T2,A,E20.8)')
"Read restart DM "//trim(file_name)//
" with checksum: ", cs_pos
379 DO i = 1,
SIZE(rho_new)
380 CALL dbcsr_copy(rho_new(i)%matrix, rho_old(i)%matrix)
384 CALL get_rtp(rtp=rtp, mos_old=mos_old)
386 id_nr, dft_control%multiplicity, dft_section)
387 CALL set_uniform_occupation_mo_array(mo_array, nspin)
390 p_rmpv(ispin)%matrix)
404 SUBROUTINE set_uniform_occupation_mo_array(mo_array, nspin)
406 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mo_array
410 LOGICAL :: is_uniform
414 DO mo = 1, mo_array(ispin)%nmo
415 IF (mo_array(ispin)%occupation_numbers(mo) /= 0.0 .AND. &
416 mo_array(ispin)%occupation_numbers(mo) /= 1.0 .AND. &
417 mo_array(ispin)%occupation_numbers(mo) /= 2.0) &
420 mo_array(ispin)%uniform_occupation = is_uniform
423 END SUBROUTINE set_uniform_occupation_mo_array
436 CHARACTER(len=*),
PARAMETER :: routinen =
'calc_update_rho'
437 REAL(kind=
dp),
PARAMETER ::
one = 1.0_dp,
zero = 0.0_dp
439 INTEGER :: handle, i, im, ncol, re
440 REAL(kind=
dp) :: alpha
442 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new
443 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: rho_ao, rho_ao_im
449 CALL timeset(routinen, handle)
451 NULLIFY (rho, ks_env, mos_new, rtp)
457 CALL get_rtp(rtp=rtp, mos_new=mos_new)
458 CALL qs_rho_get(rho_struct=rho, rho_ao=rho_ao)
459 DO i = 1,
SIZE(mos_new)/2
460 re = 2*i - 1; im = 2*i
464 matrix_struct=mos(i)%mo_coeff%matrix_struct, &
467 IF (mos(i)%uniform_occupation)
THEN
468 alpha = 3*
one - real(
SIZE(mos_new)/2,
dp)
478 matrix_v=mos_new(re), &
486 IF (mos(i)%uniform_occupation)
THEN
487 alpha = 3*
one - real(
SIZE(mos_new)/2,
dp)
497 matrix_v=mos_new(im), &
506 IF (rtp%track_imag_density)
THEN
507 CALL qs_rho_get(rho_struct=rho, rho_ao_im=rho_ao_im)
514 CALL timestop(handle)
528 CHARACTER(len=*),
PARAMETER :: routinen =
'calc_update_rho_sparse'
529 REAL(kind=
dp),
PARAMETER ::
zero = 0.0_dp
531 INTEGER :: handle, ispin
532 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: rho_ao, rho_ao_im, rho_new
539 NULLIFY (rho, ks_env, rtp, dft_control)
540 CALL timeset(routinen, handle)
545 dft_control=dft_control)
546 rtp_control => dft_control%rtp_control
547 CALL get_rtp(rtp=rtp, rho_new=rho_new)
548 CALL qs_rho_get(rho_struct=rho, rho_ao=rho_ao)
549 IF (rtp%track_imag_density)
CALL qs_rho_get(rho_struct=rho, rho_ao_im=rho_ao_im)
550 DO ispin = 1,
SIZE(rho_ao)
552 CALL dbcsr_copy(rho_ao(ispin)%matrix, rho_new(ispin*2 - 1)%matrix, keep_sparsity=.true.)
553 IF (rtp%track_imag_density)
THEN
554 CALL dbcsr_copy(rho_ao_im(ispin)%matrix, rho_new(ispin*2)%matrix, keep_sparsity=.true.)
561 CALL timestop(handle)
575 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_p_im
576 LOGICAL,
OPTIONAL :: keep_sparsity
578 INTEGER :: i, im, ncol, re
579 LOGICAL :: my_keep_sparsity
580 REAL(kind=
dp) :: alpha
581 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new, mos_occ
584 CALL get_rtp(rtp=rtp, mos_new=mos_new)
586 my_keep_sparsity = .false.
587 IF (
PRESENT(keep_sparsity)) my_keep_sparsity = keep_sparsity
589 ALLOCATE (mos_occ(
SIZE(mos)*2))
591 DO i = 1,
SIZE(mos_new)/2
592 re = 2*i - 1; im = 2*i
593 alpha = 3.0_dp - real(
SIZE(matrix_p_im),
dp)
595 matrix_struct=mos(i)%mo_coeff%matrix_struct, &
598 matrix_struct=mos(i)%mo_coeff%matrix_struct, &
600 CALL dbcsr_set(matrix_p_im(i)%matrix, 0.0_dp)
607 matrix_v=mos_occ(im), &
608 matrix_g=mos_occ(re), &
610 keep_sparsity=my_keep_sparsity, &
611 alpha=2.0_dp*alpha, &
627 CHARACTER(len=*),
PARAMETER :: routinen =
'write_rtp_mos_to_output_unit'
629 CHARACTER(LEN=10) :: spin
630 CHARACTER(LEN=2*default_string_length) :: name
631 INTEGER :: handle, i, ispin, nao, nelectron, nmo, &
633 LOGICAL :: print_eigvecs, print_mo_info
634 REAL(kind=
dp) :: flexible_electron_count, maxocc, n_el_f
636 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new
641 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
644 NULLIFY (atomic_kind_set, particle_set, qs_kind_set, input, mos, dft_section)
646 CALL timeset(routinen, handle)
649 atomic_kind_set=atomic_kind_set, &
650 qs_kind_set=qs_kind_set, &
651 particle_set=particle_set, &
661 dft_section,
"PRINT%MO") /= 0) .OR. &
662 (qs_env%sim_step == 1)
664 IF ((.NOT. print_mo_info) .OR. (.NOT. print_eigvecs))
THEN
665 CALL timestop(handle)
669 CALL get_rtp(rtp=rtp, mos_new=mos_new)
671 nspins =
SIZE(mos_new)/2
675 CALL get_mo_set(mo_set=mos(ispin), nao=nao, nmo=nmo, nelectron=nelectron, &
676 n_el_f=n_el_f, maxocc=maxocc, flexible_electron_count=flexible_electron_count)
681 nelectron=nelectron, &
684 flexible_electron_count=flexible_electron_count)
686 WRITE (name, fmt=
"(A,I6)")
"RTP MO SET, SPIN ", ispin
687 CALL init_mo_set(mo_set_rtp, fm_ref=mos_new(2*ispin - 1), name=name)
699 mo_set_rtp%occupation_numbers = mos(ispin)%occupation_numbers
703 CALL cp_fm_to_fm(mos_new(2*ispin - i), mo_set_rtp%mo_coeff)
705 dft_section, 4, 0, rtp=.true., spin=trim(spin), cpart=mod(i, 2), sim_step=qs_env%sim_step)
711 CALL timestop(handle)
726 CHARACTER(LEN=*),
PARAMETER :: routinen =
'write_rtp_mo_cubes'
728 CHARACTER(LEN=default_path_length) :: filename, my_pos_cube, title
729 INTEGER :: handle, homo, i, ir, ispin, ivector, &
730 n_rep, nhomo, nlist, nspins, &
731 rt_time_step, unit_nr
732 INTEGER,
DIMENSION(:),
POINTER ::
list, list_index
733 LOGICAL :: append_cube, do_kpoints, mpi_io
737 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new
750 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
754 CALL timeset(routinen, handle)
756 NULLIFY (logger, auxbas_pw_pool, pw_pools, pw_env)
759 CALL get_qs_env(qs_env, do_kpoints=do_kpoints, &
764 cpabort(
"K points not handled yet for printing MO_CUBE")
773 CALL timestop(handle)
777 CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set, &
779 blacs_env=blacs_env, &
780 qs_kind_set=qs_kind_set, &
784 particle_set=particle_set, &
785 dft_control=dft_control)
788 nspins = dft_control%nspins
789 rt_time_step = qs_env%sim_step
792 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
794 CALL auxbas_pw_pool%create_pw(wf_r)
795 CALL auxbas_pw_pool%create_pw(wf_g)
796 CALL auxbas_pw_pool%create_pw(density_r)
797 CALL get_rtp(rtp=rtp, mos_new=mos_new)
804 my_pos_cube =
"REWIND"
805 IF (append_cube)
THEN
806 my_pos_cube =
"APPEND"
815 IF (
ASSOCIATED(
list))
THEN
818 list_index(i + nlist) =
list(i)
820 nlist = nlist +
SIZE(
list)
825 IF (nhomo == -1) nhomo = homo
826 nlist = homo - max(1, homo - nhomo + 1) + 1
827 ALLOCATE (list_index(nlist))
829 list_index(i) = max(1, homo - nhomo + 1) + i - 1
833 ivector = list_index(i)
835 atomic_kind_set=atomic_kind_set, &
836 qs_kind_set=qs_kind_set, &
838 particle_set=particle_set, &
843 mo_coeff => mos_new(2*ispin - 1)
845 cell, dft_control, particle_set, pw_env)
849 mo_coeff => mos_new(2*ispin)
851 cell, dft_control, particle_set, pw_env)
855 WRITE (filename,
'(a4,I5.5,a1,I1.1)')
"WFN_", ivector,
"_", ispin
858 middle_name=trim(filename), file_position=my_pos_cube, log_filename=.false., &
860 WRITE (title, *)
"DENSITY ", ivector,
" spin ", ispin,
" i.e. HOMO - ", ivector - homo
861 CALL cp_pw_to_cube(density_r, unit_nr, title, particles=particles, &
865 IF (
ASSOCIATED(list_index))
DEALLOCATE (list_index)
869 CALL auxbas_pw_pool%give_back_pw(wf_r)
870 CALL auxbas_pw_pool%give_back_pw(wf_g)
871 CALL auxbas_pw_pool%give_back_pw(density_r)
873 CALL timestop(handle)
886 CHARACTER(len=*) :: subsection_name, error_message
893 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, 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 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_rt_mos_from_restart(mo_array, rt_mos, atomic_kind_set, qs_kind_set, particle_set, para_env, id_nr, multiplicity, dft_section)
...
subroutine, public write_mo_set_to_output_unit(mo_set, atomic_kind_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)
subroutine, public read_mo_set_from_restart(mo_array, atomic_kind_set, qs_kind_set, particle_set, para_env, id_nr, multiplicity, dft_section, natom_mismatch, cdft, out_unit)
...
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.