104#include "./base/base_uses.f90"
109 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'xas_tp_scf'
135 SUBROUTINE xas_do_tp_scf(dft_control, xas_env, iatom, istate, scf_env, qs_env, &
136 xas_section, scf_section, converged, should_stop)
140 INTEGER,
INTENT(IN) :: iatom, istate
144 LOGICAL,
INTENT(OUT) :: converged, should_stop
146 CHARACTER(LEN=*),
PARAMETER :: routinen =
'xas_do_tp_scf'
148 INTEGER :: handle, handle2, hole_spin, ispin, &
149 iter_count, my_spin, nspin, occ_spin, &
151 LOGICAL :: diis_step, energy_only, exit_loop, gapw
152 REAL(kind=
dp) :: t1, t2
155 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_s
156 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: rho_ao_kp
162 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
169 CALL timeset(routinen, handle)
170 NULLIFY (
xas_control, matrix_s, matrix_ks, para_env, rho_ao_kp)
171 NULLIFY (rho, energy, scf_control, logger, ks_env, mos, atomic_kind_set)
172 NULLIFY (qs_charges, particle_set, qs_kind_set)
178 cpassert(
ASSOCIATED(xas_env))
179 cpassert(
ASSOCIATED(scf_env))
180 cpassert(
ASSOCIATED(qs_env))
183 atomic_kind_set=atomic_kind_set, &
184 matrix_s=matrix_s, energy=energy, &
185 qs_charges=qs_charges, &
186 ks_env=ks_env, para_env=para_env)
188 CALL get_xas_env(xas_env, scf_control=scf_control, spin_channel=my_spin)
190 energy_only = .false.
193 IF (output_unit > 0)
THEN
194 WRITE (unit=output_unit, fmt=
"(/,/,T2,A)")
"XAS_TP_SCF WAVEFUNCTION OPTIMIZATION"
198 gapw = dft_control%qs_control%gapw
204 CALL get_qs_env(qs_env, matrix_ks=matrix_ks, rho=rho, mos=mos)
209 nspin = dft_control%nspins
211 IF (output_unit > 0)
THEN
212 WRITE (unit=output_unit, &
213 fmt=
"(/,T3,A,T12,A,T31,A,T40,A,T60,A,T75,A/,T3,A)") &
214 "Step",
"Update method",
"Time",
"Convergence",
"Total energy",
"Change", &
220 energy%tot_old = 0.0_dp
222 CALL timeset(routinen//
"_inner_loop", handle2)
225 IF (output_unit > 0)
CALL m_flush(output_unit)
227 iter_count = iter_count + 1
228 CALL cp_iterate(logger%iter_info, last=.false., iter_nr=iter_count)
234 SELECT CASE (scf_env%method)
236 CALL cp_abort(__location__, &
237 "unknown scf method method for core level spectroscopy"// &
242 scf_env%iter_count = iter_count
244 matrix_s, scf_control, scf_section, &
250 IF (my_spin == 1)
THEN
258 smear=scf_control%smear, &
261 smear=scf_control%smear)
265 scf_env%p_mix_new(ispin, 1)%matrix)
268 energy%efermi = 0.0_dp
270 energy%kTS = energy%kTS + mos(ispin)%kTS
271 energy%efermi = energy%efermi + mos(ispin)%mu
273 energy%efermi = energy%efermi/real(nspin, kind=
dp)
277 SELECT CASE (scf_env%mixing_method)
280 scf_env%mixing_store, rho_ao_kp, para_env, scf_env%iter_delta, scf_env%iter_count, &
286 delta=scf_env%iter_delta)
289 CALL cp_abort(__location__, &
290 "unknown scf mixing method: "// &
296 IF (output_unit > 0 .AND. scf_env%print_iter_line)
THEN
297 WRITE (unit=output_unit, &
298 fmt=
"(T2,I5,1X,A,T20,E8.2,1X,F6.1,1X,F14.8,1X,F20.10,1X,ES9.2)") &
299 iter_count, trim(scf_env%iter_method), &
300 scf_env%iter_param, t2 - t1, scf_env%iter_delta, energy%total, &
301 energy%total - energy%tot_old
303 energy%tot_old = energy%total
306 CALL external_control(should_stop,
"XASSCF", target_time=qs_env%target_time, &
307 start_time=qs_env%start_time)
308 IF (scf_env%iter_delta < scf_control%eps_scf)
THEN
309 IF (output_unit > 0)
THEN
310 WRITE (unit=output_unit, fmt=
"(/,T3,A,I5,A/)") &
311 "*** SCF run converged in ", iter_count,
" steps ***"
314 ELSE IF (should_stop .OR. iter_count == scf_control%max_scf)
THEN
315 IF (output_unit > 0)
THEN
316 WRITE (unit=output_unit, fmt=
"(/,T3,A,/)") &
317 "*** SCF run NOT converged ***"
327 CALL cp_iterate(logger%iter_info, last=.true., iter_nr=iter_count)
335 CALL get_qs_env(qs_env=qs_env, mos=mos, particle_set=particle_set, qs_kind_set=qs_kind_set)
339 CALL timestop(handle2)
347 IF (scf_env%mixing_method > 0)
THEN
350 CALL dbcsr_copy(rho_ao_kp(ispin, 1)%matrix, scf_env%p_mix_new(ispin, 1)%matrix)
357 CALL gspace_mixing(qs_env, scf_env%mixing_method, scf_env%mixing_store, rho, para_env, &
362 CALL timestop(handle2)
366 IF (output_unit > 0)
THEN
367 WRITE (unit=output_unit, fmt=
"(/,(T3,A,T55,F25.14))") &
368 "Ionization potential of the excited atom: ", xas_env%IP_energy
375 CALL cls_prepare_states(
xas_control, xas_env, qs_env, iatom, xas_section, output_unit)
380 "PRINT%PROGRAM_RUN_INFO")
383 CALL timestop(handle)
399 SUBROUTINE cls_prepare_states(xas_control, xas_env, qs_env, iatom, xas_section, output_unit)
404 INTEGER,
INTENT(IN) :: iatom
406 INTEGER,
INTENT(IN) :: output_unit
408 CHARACTER(LEN=*),
PARAMETER :: routinen =
'cls_prepare_states'
410 INTEGER :: handle, i, ikind, isgf, ispin, istate, j, my_kind, my_spin, my_state, nao, natom, &
411 nexc_search, nmo, nvirtual2, uno_iter, xas_estate
412 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: first_sgf
413 INTEGER,
DIMENSION(:),
POINTER :: mykind_of_kind
414 REAL(
dp),
DIMENSION(:, :),
POINTER :: centers_wfn
415 REAL(kind=
dp) :: component, dist, max_overlap, ra(3), &
416 rac(3), rc(3), sto_state_overlap, &
418 REAL(kind=
dp),
DIMENSION(:),
POINTER :: all_evals, eigenvalues, uno_evals
419 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: vecbuffer
424 TYPE(
cp_fm_type),
POINTER :: all_vectors, excvec_coeff, &
425 excvec_overlap, mo_coeff, uno_orbs
426 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: kinetic, matrix_ks, matrix_s
433 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
438 CALL timeset(routinen, handle)
440 NULLIFY (atomic_kind, dft_control, matrix_s, matrix_ks, qs_kind_set, kinetic)
441 NULLIFY (cell, particle_set, local_preconditioner, vecbuffer)
442 NULLIFY (dft_control, loc_section, mos, mo_coeff, eigenvalues)
443 NULLIFY (centers_wfn, mykind_of_kind, qs_loc_env, localized_wfn_control, stogto_overlap)
444 NULLIFY (all_evals, all_vectors, excvec_coeff, excvec_overlap, uno_evals, para_env, blacs_env)
446 cpassert(
ASSOCIATED(xas_env))
450 dft_control=dft_control, &
451 matrix_ks=matrix_ks, &
455 particle_set=particle_set, &
456 qs_kind_set=qs_kind_set, &
462 all_vectors=all_vectors, all_evals=all_evals, &
463 excvec_coeff=excvec_coeff, &
464 nvirtual2=nvirtual2, xas_estate=xas_estate, &
465 excvec_overlap=excvec_overlap, nexc_search=nexc_search, &
466 spin_channel=my_spin, scf_control=scf_control)
467 cpassert(
ASSOCIATED(excvec_overlap))
469 CALL get_mo_set(mos(my_spin), mo_coeff=mo_coeff, nao=nao, &
470 eigenvalues=eigenvalues)
472 ALLOCATE (vecbuffer(1, nao))
474 natom =
SIZE(particle_set, 1)
475 ALLOCATE (first_sgf(natom))
477 ALLOCATE (centers_wfn(3, nexc_search))
481 IF (scf_control%use_ot)
THEN
482 IF (output_unit > 0)
THEN
483 WRITE (unit=output_unit, fmt=
"(/,/,T2,A)")
" Eigenstates are derived "// &
484 "from the MOs optimized by OT. Follows localization of the core states"// &
485 " to identify the excited orbital."
489 mykind_of_kind=mykind_of_kind, qs_loc_env=qs_loc_env, &
490 stogto_overlap=stogto_overlap)
492 localized_wfn_control=localized_wfn_control)
495 CALL qs_loc_driver(qs_env, qs_loc_env, print_loc_section, myspin=1)
496 ra(1:3) = particle_set(iatom)%r(1:3)
498 NULLIFY (atomic_kind)
499 atomic_kind => particle_set(iatom)%atomic_kind
502 my_kind = mykind_of_kind(ikind)
508 DO ispin = 1, dft_control%nspins
509 CALL get_mo_set(mos(ispin), mo_coeff=mo_coeff, nmo=nmo, &
510 eigenvalues=eigenvalues)
512 matrix_ks(ispin)%matrix, eigenvalues, &
518 DO istate = 1, nexc_search
519 centers_wfn(1, istate) = localized_wfn_control%centers_set(my_spin)%array(1, istate)
520 centers_wfn(2, istate) = localized_wfn_control%centers_set(my_spin)%array(2, istate)
521 centers_wfn(3, istate) = localized_wfn_control%centers_set(my_spin)%array(3, istate)
523 rc(1:3) = centers_wfn(1:3, istate)
524 rac =
pbc(ra, rc, cell)
525 dist = rac(1)*rac(1) + rac(2)*rac(2) + rac(3)*rac(3)
527 IF (dist < 1.0_dp)
THEN
529 nao, 1, transpose=.true.)
530 sto_state_overlap = 0.0_dp
531 DO i = 1,
SIZE(stogto_overlap(my_kind)%array, 1)
533 DO j = 1,
SIZE(stogto_overlap(my_kind)%array, 2)
534 isgf = first_sgf(iatom) + j - 1
535 component = component + stogto_overlap(my_kind)%array(i, j)*vecbuffer(1, isgf)
537 sto_state_overlap = sto_state_overlap + &
541 IF (sto_state_overlap > max_overlap)
THEN
542 max_overlap = sto_state_overlap
549 cpabort(
"Could not identify the core state to be excited")
550 xas_estate = my_state
551 CALL get_mo_set(mos(my_spin), mo_coeff=mo_coeff)
553 nao, 1, transpose=.true.)
555 nao, 1, transpose=.true.)
561 IF (nvirtual2 > 0)
THEN
563 CALL get_mo_set(mos(my_spin), mo_coeff=mo_coeff, nmo=nmo)
564 IF (output_unit > 0)
THEN
565 WRITE (unit=output_unit, fmt=
"(/,/,T2,A,I5,A,I6,A)")
" Calculation of ", nvirtual2, &
566 " additional virtual states of the subspace complementary to the"// &
567 " lowest ", nmo,
" states"
570 NULLIFY (uno_orbs, uno_evals, local_preconditioner)
571 ALLOCATE (local_preconditioner)
578 matrix_h=matrix_ks(my_spin)%matrix, &
579 matrix_s=matrix_s(1)%matrix, &
580 matrix_t=kinetic(1)%matrix, &
581 convert_precond_to_dbcsr=.true., &
582 mo_set=mos(my_spin), energy_gap=0.2_dp)
584 CALL get_xas_env(xas_env=xas_env, unoccupied_orbs=uno_orbs, &
585 unoccupied_evals=uno_evals, unoccupied_eps=uno_eps, unoccupied_max_iter=uno_iter)
588 CALL ot_eigensolver(matrix_h=matrix_ks(my_spin)%matrix, matrix_s=matrix_s(1)%matrix, &
589 matrix_c_fm=uno_orbs, matrix_orthogonal_space_fm=mo_coeff, &
591 iter_max=uno_iter, size_ortho_space=nmo)
594 uno_evals, do_rotation=.true.)
597 DEALLOCATE (local_preconditioner)
604 NULLIFY (all_vectors, all_evals)
605 CALL get_xas_env(xas_env=xas_env, all_vectors=all_vectors, &
607 CALL get_mo_set(mos(my_spin), eigenvalues=eigenvalues, mo_coeff=mo_coeff, &
610 CALL cp_fm_to_fm(mo_coeff, all_vectors, ncol=nmo, &
611 source_start=1, target_start=1)
613 all_evals(istate) = eigenvalues(istate)
615 IF (nvirtual2 > 0)
THEN
616 CALL cp_fm_to_fm(uno_orbs, all_vectors, ncol=nvirtual2, &
617 source_start=1, target_start=1 + nmo)
618 DO istate = 1, nvirtual2
619 all_evals(istate + nmo) = uno_evals(istate)
624 DEALLOCATE (vecbuffer)
625 DEALLOCATE (centers_wfn, first_sgf)
627 CALL timestop(handle)
629 END SUBROUTINE cls_prepare_states
645 LOGICAL,
INTENT(OUT) :: converged, should_stop
647 CHARACTER(LEN=*),
PARAMETER :: routinen =
'xes_scf_once'
649 INTEGER :: handle, ispin, istate, my_spin, nmo, &
650 nvirtual, nvirtual2, output_unit, &
652 REAL(kind=
dp),
DIMENSION(:),
POINTER :: all_evals, eigenvalues
653 TYPE(
cp_fm_type),
POINTER :: all_vectors, mo_coeff
664 NULLIFY (dft_control, scf_control, scf_env, matrix_ks, mos, para_env,
xas_control)
665 NULLIFY (dft_section, xas_section, scf_section, all_vectors, mo_coeff, all_evals, eigenvalues)
670 CALL timeset(routinen, handle)
672 cpassert(
ASSOCIATED(xas_env))
673 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control, &
674 matrix_ks=matrix_ks, mos=mos, para_env=para_env)
677 CALL get_xas_env(xas_env, scf_control=scf_control, spin_channel=my_spin)
683 IF (xas_env%homo_occ == 0)
THEN
687 IF (.NOT.
ASSOCIATED(scf_env))
THEN
694 CALL scf_env_do_scf(scf_env=scf_env, scf_control=scf_control, qs_env=qs_env, &
695 converged=converged, should_stop=should_stop, total_scf_steps=tsteps)
701 NULLIFY (mo_coeff, eigenvalues)
702 IF (scf_control%use_ot)
THEN
703 IF (output_unit > 0)
THEN
704 WRITE (unit=output_unit, fmt=
"(/,T10,A,/)") &
705 "Get eigenstates and eigenvalues from ground state MOs"
707 DO ispin = 1,
SIZE(mos)
708 CALL get_mo_set(mos(ispin), mo_coeff=mo_coeff, &
709 eigenvalues=eigenvalues)
711 matrix_ks(ispin)%matrix, eigenvalues, &
715 CALL get_xas_env(xas_env=xas_env, all_vectors=all_vectors, &
716 all_evals=all_evals, nvirtual2=nvirtual2)
717 CALL get_mo_set(mos(my_spin), eigenvalues=eigenvalues, mo_coeff=mo_coeff, nmo=nmo)
719 CALL cp_fm_to_fm(mo_coeff, all_vectors, ncol=nmo, &
720 source_start=1, target_start=1)
722 all_evals(istate) = eigenvalues(istate)
725 IF (nvirtual2 /= 0)
THEN
726 IF (output_unit > 0)
THEN
727 WRITE (unit=output_unit, fmt=
"(/,T10,A,/)") &
728 "WARNING: for this XES calculation additional unoccupied MOs are not needed"
732 CALL set_xas_env(xas_env=xas_env, nvirtual=nvirtual, nvirtual2=nvirtual2)
735 CALL timestop(handle)
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
Handles all functions related to the CELL.
various utilities that regard array of different kinds: output, allocation,... maybe it is not a good...
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_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
Routines to handle the external control of CP2K.
subroutine, public external_control(should_stop, flag, globenv, target_time, start_time, force_check)
External manipulations during a run : when the <PROJECT_NAME>.EXIT_$runtype command is sent the progr...
represent a full matrix distributed on many processors
subroutine, public cp_fm_set_submatrix(fm, new_values, start_row, start_col, n_rows, n_cols, alpha, beta, transpose)
sets a submatrix of a full matrix fm(start_row:start_row+n_rows,start_col:start_col+n_cols) = alpha*o...
subroutine, public cp_fm_get_submatrix(fm, target_m, start_row, start_col, n_rows, n_cols, transpose)
gets a submatrix of a full matrix op(target_m)(1:n_rows,1:n_cols) =fm(start_row:start_row+n_rows,...
subroutine, public cp_fm_init_random(matrix, ncol, start_col)
fills a matrix with random numbers
various routines to log and control the output. The idea is that decisions about where to log should ...
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
subroutine, public cp_iterate(iteration_info, last, iter_nr, increment, iter_nr_out)
adds one to the actual iteration
subroutine, public cp_rm_iter_level(iteration_info, level_name, n_rlevel_att)
Removes an iteration level.
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...
subroutine, public cp_add_iter_level(iteration_info, level_name, n_rlevel_new)
Adds an iteration level.
Defines the basic variable types.
integer, parameter, public dp
Machine interface based on Fortran 2003 and POSIX.
subroutine, public m_flush(lunit)
flushes units if the &GLOBAL flag is set accordingly
real(kind=dp) function, public m_walltime()
returns time from a real-time clock, protected against rolling early/easily
Interface to the message passing library MPI.
Define methods related to particle_type.
subroutine, public get_particle_set(particle_set, qs_kind_set, first_sgf, last_sgf, nsgf, nmao, basis, ncgf)
Get the components of a particle set.
Define the data structure for the particle information.
subroutine, public init_preconditioner(preconditioner_env, para_env, blacs_env)
...
subroutine, public destroy_preconditioner(preconditioner_env)
...
computes preconditioners, and implements methods to apply them currently used in qs_ot
subroutine, public make_preconditioner(preconditioner_env, precon_type, solver_type, matrix_h, matrix_s, matrix_t, mo_set, energy_gap, convert_precond_to_dbcsr, chol_type)
...
container for information about total charges on the grids
collects routines that calculate density matrices
module that contains the definitions of the scf types
integer, parameter, public new_pulay_mixing_nr
integer, parameter, public broyden_mixing_nr
integer, parameter, public modified_broyden_mixing_nr
integer, parameter, public no_mixing_nr
integer, parameter, public direct_mixing_nr
integer, parameter, public multisecant_mixing_nr
integer, parameter, public pulay_mixing_nr
integer, parameter, public gspace_mixing_nr
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.
subroutine, public gspace_mixing(qs_env, mixing_method, mixing_store, rho, para_env, iter_count)
Driver for the g-space mixing, calls the proper routine given the requested method.
Define the quickstep kind type and their sub types.
routines that build the Kohn-Sham matrix (i.e calculate the coulomb and xc parts
subroutine, public qs_ks_update_qs_env(qs_env, calculate_forces, just_energy, print_active)
updates the Kohn Sham matrix of the given qs_env (facility method)
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...
Driver for the localization that should be general for all the methods available and all the definiti...
subroutine, public qs_loc_driver(qs_env, qs_loc_env, print_loc_section, myspin, ext_mo_coeff)
set up the calculation of localized orbitals
New version of the module for the localization of the molecular orbitals This should be able to use d...
subroutine, public get_qs_loc_env(qs_loc_env, cell, local_molecules, localized_wfn_control, moloc_coeff, op_sm_set, op_fm_set, para_env, particle_set, weights, dim_op)
...
subroutine, public self_consistency_check(rho_ao, p_delta, para_env, p_out, delta)
...
Definition and initialisation of the mo data type.
subroutine, public write_mo_set_to_restart(mo_array, particle_set, dft_section, qs_kind_set, matrix_ks)
...
collects routines that perform operations directly related to MOs
Set occupation of molecular orbitals.
Definition and initialisation of the mo data type.
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.
an eigen-space solver for the generalised symmetric eigenvalue problem for sparse matrices,...
subroutine, public ot_eigensolver(matrix_h, matrix_s, matrix_orthogonal_space_fm, matrix_c_fm, preconditioner, eps_gradient, iter_max, size_ortho_space, silent, ot_settings)
...
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_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...
Different diagonalization schemes that can be used for the iterative solution of the eigenvalue probl...
subroutine, public general_eigenproblem(scf_env, mos, matrix_ks, matrix_s, scf_control, scf_section, diis_step)
the inner loop of scf, specific to diagonalization with S matrix basically, in goes the ks matrix out...
Utility routines for qs_scf.
subroutine, public qs_scf_env_initialize(qs_env, scf_env, scf_control, scf_section)
initializes input parameters if needed or restores values from previous runs to fill scf_env with the...
groups fairly general SCF methods, so that modules other than qs_scf can use them too split off from ...
subroutine, public scf_env_density_mixing(p_mix_new, mixing_store, rho_ao, para_env, iter_delta, iter_count, diis, invert)
perform (if requested) a density mixing
subroutine, public qs_scf_print_summary(output_unit, qs_env)
writes a summary of information after scf
module that contains the definitions of the scf types
integer, parameter, public general_diag_method_nr
Routines for the Quickstep SCF run.
subroutine, public scf_env_cleanup(scf_env)
perform cleanup operations (like releasing temporary storage) at the end of the scf
subroutine, public scf_env_do_scf(scf_env, scf_control, qs_env, converged, should_stop, total_scf_steps)
perform an scf loop
parameters that control an scf iteration
Defines control structures, which contain the parameters and the settings for the calculations.
define create destroy get and put information in xas_env to calculate the x-ray absorption spectra
subroutine, public set_xas_env(xas_env, nexc_search, spin_channel, nexc_atoms, nvirtual, nvirtual2, ip_energy, occ_estate, qs_loc_env, xas_estate, xas_nelectron, homo_occ, scf_env, scf_control)
...
subroutine, public get_xas_env(xas_env, exc_state, nao, nvirtual, nvirtual2, centers_wfn, atom_of_state, exc_atoms, nexc_states, type_of_state, mykind_of_atom, mykind_of_kind, state_of_atom, spectrum, groundstate_coeff, ostrength_sm, dip_fm_set, excvec_coeff, excvec_overlap, unoccupied_orbs, unoccupied_evals, unoccupied_max_iter, unoccupied_eps, all_vectors, all_evals, my_gto_basis, qs_loc_env, stogto_overlap, occ_estate, xas_nelectron, xas_estate, nexc_atoms, nexc_search, spin_channel, scf_env, scf_control)
...
Initialize the XAS orbitals for specific core excitations Either the GS orbitals are used as initial ...
subroutine, public xas_write_restart(xas_env, xas_section, qs_env, xas_method, iatom, istate)
...
subroutine, public find_excited_core_orbital(xas_env, mos, matrix_s)
Find the index of the core orbital that has been excited by XAS.
xas_scf for the tp method It is repeaated for every atom that have to be excited
subroutine, public xas_do_tp_scf(dft_control, xas_env, iatom, istate, scf_env, qs_env, xas_section, scf_section, converged, should_stop)
perform an scf loop to calculate the xas spectrum given by the excitation of a inner state of a selec...
subroutine, public xes_scf_once(qs_env, xas_env, converged, should_stop)
SCF for emission spectra calculations: vacancy in valence.
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
represent a pointer to a 2d array
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
Container for information about total charges on the grids.
Provides all information about a quickstep kind.
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
A type that holds controlling information for the calculation of the spread of wfn and the optimizati...
contains all the info needed by quickstep to calculate the spread of a selected set of orbitals and i...
keeps the density in various representations, keeping track of which ones are valid.
A type that holds controlling information for a xas calculation.