64#include "./base/base_uses.f90"
72 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'ec_external'
90 LOGICAL,
INTENT(IN) :: calculate_forces
92 CHARACTER(len=*),
PARAMETER :: routinen =
'ec_ext_energy'
94 INTEGER :: funit, handle, ia, ispin, iter, nao, &
95 nocc, ns, nsample, nspins, unit_nr
96 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: state
98 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: hmat, hnum, rnum
101 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: cpmos, mo_occ, mo_ref
108 CALL timeset(routinen, handle)
110 CALL get_qs_env(qs_env, dft_control=dft_control)
111 nspins = dft_control%nspins
114 IF (logger%para_env%is_source())
THEN
120 ec_env%etotal = 0.0_dp
123 ec_env%ehartree = 0.0_dp
126 ALLOCATE (cpmos(nspins), mo_ref(nspins), mo_occ(nspins))
130 IF (ec_env%debug_external)
THEN
133 CALL get_mo_set(mo_set=mos(ispin), mo_coeff=mo_coeff, homo=nocc)
136 template_fmstruct=mo_coeff%matrix_struct)
146 ec_env%mo_occ => mo_ref
147 CALL ec_ext_debug(qs_env, ec_env, calculate_forces, unit_nr)
149 IF (ec_env%do_error)
THEN
152 template_fmstruct=cpmos(1)%matrix_struct)
156 ALLOCATE (hmat(nao, nao))
159 IF (unit_nr > 1)
THEN
161 WRITE (unit_nr,
'(/,T2,A)') &
162 " Write EXTERNAL Response Error file: "//trim(ec_env%exresperr_fn)
163 WRITE (unit_nr,
'(T2,A,I6)')
" Number of Error samples is: ", nsample
164 CALL open_file(ec_env%exresperr_fn, file_status=
"REPLACE", file_action=
"WRITE", &
165 file_form=
"FORMATTED", unit_number=funit)
166 ALLOCATE (rnum(nao, nao), hnum(nao, nao))
167 WRITE (funit,
'(A)')
" CP2K "
168 WRITE (funit, *) nsample
169 CALL random_seed(size=ns)
172 state(ia) = nint(271808156._dp*sin(5.357_dp*ia))
174 CALL random_seed(put=state)
175 CALL random_number(rnum)
178 WRITE (funit, *) nao, nao
179 CALL random_number(rnum)
180 hnum(1:nao, 1:nao) = rnum(1:nao, 1:nao) + transpose(rnum(1:nao, 1:nao))
181 hnum(1:nao, 1:nao) = (hnum(1:nao, 1:nao) - 1.0_dp)*1.0e-3_dp
182 rnum(1:nao, 1:nao) = hnum(1:nao, 1:nao) + hmat(1:nao, 1:nao)
184 WRITE (funit, *) rnum(ia, 1:nao)
188 DEALLOCATE (rnum, hnum, state)
194 IF (calculate_forces)
THEN
196 IF (nspins == 1) focc = 4.0_dp
198 CALL get_mo_set(mo_set=mos(ispin), mo_coeff=mo_coeff, homo=nocc)
200 cpmos(ispin), nocc, &
201 alpha=focc, beta=0.0_dp)
204 ec_env%cpmos => cpmos
207 CALL get_mo_set(mo_set=mos(ispin), mo_coeff=mo_coeff, homo=nocc)
210 template_fmstruct=mo_coeff%matrix_struct)
221 CALL ec_ext_interface(qs_env, ec_env%exresp_fn, mo_occ, mo_ref, cpmos, calculate_forces, unit_nr)
222 ec_env%mo_occ => mo_ref
223 ec_env%cpmos => cpmos
226 IF (calculate_forces)
THEN
230 CALL align_vectors(ec_env%cpmos(ispin), ec_env%mo_occ(ispin), mo_occ(ispin), &
231 matrix_s(1)%matrix, ec_env%orbrot_index, ec_env%phase_index, unit_nr)
234 CALL ec_ext_setup(qs_env, ec_env, .true., unit_nr)
236 CALL ec_ext_setup(qs_env, ec_env, .false., unit_nr)
241 CALL timestop(handle)
257 SUBROUTINE ec_ext_interface(qs_env, trexio_fn, mo_occ, mo_ref, cpmos, calculate_forces, unit_nr)
259 CHARACTER(LEN=*) :: trexio_fn
260 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mo_occ, mo_ref, cpmos
261 LOGICAL,
INTENT(IN) :: calculate_forces
262 INTEGER,
INTENT(IN) :: unit_nr
264 CHARACTER(LEN=*),
PARAMETER :: routinen =
'ec_ext_interface'
266 INTEGER :: handle, ispin, nao, nmos, nocc(2), nspins
267 REAL(kind=
dp) :: focc
269 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: energy_derivative
271 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mos_trexio
274 CALL timeset(routinen, handle)
276 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control, para_env=para_env)
278 nspins = dft_control%nspins
281 CALL cp_fm_get_info(mo_occ(ispin), nrow_global=nao, ncol_global=nocc(ispin))
284 IF (unit_nr > 0)
THEN
285 WRITE (unit_nr,
'(T2,A)')
" Read EXTERNAL Response from file: "//trim(trexio_fn)
287 ALLOCATE (mos_trexio(nspins))
288 IF (calculate_forces)
THEN
289 NULLIFY (energy_derivative)
292 CALL read_trexio(qs_env, trexio_filename=trexio_fn, &
293 mo_set_trexio=mos_trexio, &
294 energy_derivative=energy_derivative)
297 IF (nspins == 1) focc = 4.0_dp
299 CALL get_mo_set(mo_set=mos_trexio(ispin), mo_coeff=mo_coeff, homo=nmos)
301 cpmos(ispin), ncol=nmos, alpha=focc, beta=0.0_dp)
306 CALL read_trexio(qs_env, trexio_filename=trexio_fn, &
307 mo_set_trexio=mos_trexio)
311 CALL get_mo_set(mo_set=mos_trexio(ispin), mo_coeff=mo_coeff, homo=nmos)
315 DEALLOCATE (mos_trexio)
317 CALL timestop(handle)
319 END SUBROUTINE ec_ext_interface
330 SUBROUTINE ec_ext_debug(qs_env, ec_env, calculate_forces, unit_nr)
333 LOGICAL,
INTENT(IN) :: calculate_forces
334 INTEGER,
INTENT(IN) :: unit_nr
336 CHARACTER(LEN=*),
PARAMETER :: routinen =
'ec_ext_debug'
338 CHARACTER(LEN=default_string_length) :: headline
339 INTEGER :: handle, ispin, nocc, nspins
341 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_p, matrix_s
348 CALL timeset(routinen, handle)
351 dft_control=dft_control, &
354 matrix_s_kp=matrix_s, &
355 matrix_h_kp=matrix_h)
357 nspins = dft_control%nspins
360 CALL get_mo_set(mo_set=mos(ispin), mo_coeff=mo_coeff, homo=nocc)
361 CALL cp_fm_to_fm(mo_coeff, ec_env%mo_occ(ispin), nocc)
367 headline =
"CORE HAMILTONIAN MATRIX"
368 ALLOCATE (ec_env%matrix_h(1, 1)%matrix)
369 CALL dbcsr_create(ec_env%matrix_h(1, 1)%matrix, name=trim(headline), &
370 template=matrix_h(1, 1)%matrix, matrix_type=dbcsr_type_symmetric)
372 CALL dbcsr_copy(ec_env%matrix_h(1, 1)%matrix, matrix_h(1, 1)%matrix)
379 IF (calculate_forces)
THEN
381 CALL ec_debug_force(qs_env, matrix_p, unit_nr)
384 CALL timestop(handle)
386 END SUBROUTINE ec_ext_debug
394 SUBROUTINE ec_debug_force(qs_env, matrix_p, unit_nr)
396 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_p
397 INTEGER,
INTENT(IN) :: unit_nr
399 CHARACTER(LEN=*),
PARAMETER :: routinen =
'ec_debug_force'
401 INTEGER :: handle, iounit, nder, nimages
402 LOGICAL :: calculate_forces, debug_forces, &
403 debug_stress, use_virial
404 REAL(kind=
dp) :: fconv
405 REAL(kind=
dp),
DIMENSION(3, 3) :: stdeb, sttot
414 CALL timeset(routinen, handle)
416 debug_forces = .true.
417 debug_stress = .true.
420 calculate_forces = .true.
425 dft_control=dft_control, &
428 nimages = dft_control%nimages
429 IF (nimages /= 1)
THEN
430 cpabort(
"K-points not implemented")
434 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
436 fconv = 1.0e-9_dp*
pascal/cell%deth
437 IF (debug_stress .AND. use_virial)
THEN
438 sttot = virial%pv_virial
444 ALLOCATE (scrm(1, 1)%matrix)
445 CALL dbcsr_create(scrm(1, 1)%matrix, template=matrix_p(1, 1)%matrix)
446 CALL get_qs_env(qs_env=qs_env, sab_orb=sab_orb)
451 calculate_forces=calculate_forces, &
452 debug_forces=debug_forces, debug_stress=debug_stress)
455 CALL core_matrices(qs_env, scrm, matrix_p, calculate_forces, nder, &
456 debug_forces=debug_forces, debug_stress=debug_stress)
458 IF (debug_stress .AND. use_virial)
THEN
459 stdeb = fconv*(virial%pv_virial - sttot)
460 CALL para_env%sum(stdeb)
461 IF (iounit > 0)
WRITE (unit=iounit, fmt=
"(T2,A,T41,2(1X,ES19.11))") &
463 IF (iounit > 0)
WRITE (unit=iounit, fmt=
"(T2,A,T41,2(1X,ES19.11))")
' '
469 CALL timestop(handle)
471 END SUBROUTINE ec_debug_force
482 SUBROUTINE ec_ext_setup(qs_env, ec_env, calc_forces, unit_nr)
485 LOGICAL,
INTENT(IN) :: calc_forces
486 INTEGER,
INTENT(IN) :: unit_nr
488 CHARACTER(LEN=*),
PARAMETER :: routinen =
'ec_ext_setup'
490 CHARACTER(LEN=default_string_length) :: headline
491 INTEGER :: handle, ispin, nao, nocc, nspins
492 REAL(kind=
dp) :: a_max, c_max
495 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_ks, matrix_p, matrix_s
501 CALL timeset(routinen, handle)
504 dft_control=dft_control, &
507 matrix_s_kp=matrix_s, &
508 matrix_ks_kp=matrix_ks, &
509 matrix_h_kp=matrix_h)
511 nspins = dft_control%nspins
516 headline =
"HAMILTONIAN MATRIX"
518 ALLOCATE (ec_env%matrix_ks(ispin, 1)%matrix)
519 CALL dbcsr_create(ec_env%matrix_ks(ispin, 1)%matrix, name=trim(headline), &
520 template=matrix_ks(ispin, 1)%matrix, matrix_type=dbcsr_type_symmetric)
522 CALL dbcsr_copy(ec_env%matrix_ks(ispin, 1)%matrix, matrix_ks(ispin, 1)%matrix)
528 headline =
"OVERLAP MATRIX"
529 ALLOCATE (ec_env%matrix_s(1, 1)%matrix)
530 CALL dbcsr_create(ec_env%matrix_s(1, 1)%matrix, name=trim(headline), &
531 template=matrix_s(1, 1)%matrix, matrix_type=dbcsr_type_symmetric)
533 CALL dbcsr_copy(ec_env%matrix_s(1, 1)%matrix, matrix_s(1, 1)%matrix)
540 headline =
"DENSITY MATRIX"
542 ALLOCATE (ec_env%matrix_p(ispin, 1)%matrix)
543 CALL dbcsr_create(ec_env%matrix_p(ispin, 1)%matrix, name=trim(headline), &
544 template=matrix_p(ispin, 1)%matrix, matrix_type=dbcsr_type_symmetric)
546 CALL dbcsr_copy(ec_env%matrix_p(ispin, 1)%matrix, matrix_p(ispin, 1)%matrix)
549 IF (calc_forces)
THEN
554 headline =
"ENERGY WEIGHTED DENSITY MATRIX"
556 ALLOCATE (ec_env%matrix_w(ispin, 1)%matrix)
557 CALL dbcsr_create(ec_env%matrix_w(ispin, 1)%matrix, name=trim(headline), &
558 template=matrix_p(ispin, 1)%matrix, matrix_type=dbcsr_type_symmetric)
560 CALL dbcsr_set(ec_env%matrix_w(ispin, 1)%matrix, 0.0_dp)
566 headline =
"Hz MATRIX"
568 ALLOCATE (ec_env%matrix_hz(ispin)%matrix)
569 CALL dbcsr_create(ec_env%matrix_hz(ispin)%matrix, name=trim(headline), &
570 template=matrix_s(1, 1)%matrix, matrix_type=dbcsr_type_symmetric)
572 CALL dbcsr_set(ec_env%matrix_hz(ispin)%matrix, 0.0_dp)
577 mat_struct => ec_env%mo_occ(ispin)%matrix_struct
581 ksmo, nocc, alpha=1.0_dp, beta=0.0_dp)
584 smo, nocc, alpha=1.0_dp, beta=0.0_dp)
586 template_fmstruct=mat_struct)
588 CALL parallel_gemm(
'T',
'N', nocc, nocc, nao, 1.0_dp, ec_env%mo_occ(ispin), ksmo, 0.0_dp, emat)
589 CALL parallel_gemm(
'N',
'N', nao, nocc, nocc, -1.0_dp, smo, emat, 1.0_dp, ksmo)
596 IF (unit_nr > 0)
THEN
597 WRITE (unit_nr,
"(T3,A,T50,I2,T61,F20.12)")
"External:: Max value of MO coeficients", ispin, c_max
598 WRITE (unit_nr,
"(T3,A,T50,I2,T61,F20.12)")
"External:: Max value of MO gradients", ispin, a_max
603 CALL timestop(handle)
605 END SUBROUTINE ec_ext_setup
617 SUBROUTINE align_vectors(cpmos, mo_ref, mo_occ, matrix_s, orbrot_index, phase_index, unit_nr)
618 TYPE(
cp_fm_type),
INTENT(IN) :: cpmos, mo_ref, mo_occ
620 REAL(kind=
dp),
INTENT(OUT) :: orbrot_index, phase_index
621 INTEGER,
INTENT(IN) :: unit_nr
623 CHARACTER(LEN=*),
PARAMETER :: routinen =
'align_vectors'
625 INTEGER :: handle, i, nao, nocc, scg
626 REAL(kind=
dp) :: a_max
627 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) ::
diag
631 CALL timeset(routinen, handle)
633 mat_struct => cpmos%matrix_struct
638 template_fmstruct=mat_struct)
640 CALL parallel_gemm(
'T',
'N', nocc, nocc, nao, 1.0_dp, mo_ref, smo, 0.0_dp, emat)
641 CALL parallel_gemm(
'N',
'N', nao, nocc, nocc, 1.0_dp, cpmos, emat, 0.0_dp, smo)
645 ALLOCATE (
diag(nocc))
647 a_max = nocc - sum(
diag)
650 IF (abs(
diag(i) + 1.0_dp) < 0.001) scg = scg + 1
652 IF (unit_nr > 0)
THEN
653 WRITE (unit_nr,
"(T3,A,T61,F20.8)")
"External:: Orbital rotation index", a_max
654 WRITE (unit_nr,
"(T3,A,T71,I10)")
"External:: Number of orbital phase changes", scg
657 phase_index = real(scg, kind=
dp)
664 CALL timestop(handle)
666 END SUBROUTINE align_vectors
679 debug_forces, debug_stress)
681 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: cpmos, mo_occ
683 INTEGER,
INTENT(IN) :: unit_nr
684 LOGICAL,
INTENT(IN),
OPTIONAL :: debug_forces, debug_stress
686 CHARACTER(LEN=*),
PARAMETER :: routinen =
'matrix_r_forces'
688 INTEGER :: handle, iounit, ispin, nao, nocc, nspins
689 LOGICAL :: my_debug_forces, my_debug_stress, &
691 REAL(kind=
dp) :: fconv, focc
692 REAL(kind=
dp),
DIMENSION(3) :: fodeb
693 REAL(kind=
dp),
DIMENSION(3, 3) :: stdeb
706 CALL timeset(routinen, handle)
708 my_debug_forces = .true.
709 my_debug_stress = .true.
710 IF (
PRESENT(debug_forces)) my_debug_forces = debug_forces
711 IF (
PRESENT(debug_stress)) my_debug_stress = debug_stress
714 nspins =
SIZE(mo_occ)
716 IF (nspins == 1) focc = 2.0_dp
721 CALL cp_fm_get_info(cpmos(ispin), matrix_struct=fm_struct, nrow_global=nao, ncol_global=nocc)
723 CALL cp_fm_struct_create(mat_struct, nrow_global=nocc, ncol_global=nocc, template_fmstruct=fm_struct)
725 CALL parallel_gemm(
"T",
"N", nocc, nocc, nao, 1.0_dp, mo_occ(ispin), cpmos(ispin), 0.0_dp, chcmat)
726 CALL parallel_gemm(
"N",
"N", nao, nocc, nocc, 1.0_dp, mo_occ(ispin), chcmat, 0.0_dp, rcvec)
735 dft_control=dft_control, &
742 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
743 fconv = 1.0e-9_dp*
pascal/cell%deth
745 IF (my_debug_forces) fodeb(1:3) = force(1)%overlap(1:3, 1)
746 IF (my_debug_stress .AND. use_virial) stdeb = virial%pv_overlap
749 matrix_name=
"OVERLAP MATRIX", &
750 basis_type_a=
"ORB", basis_type_b=
"ORB", &
751 sab_nl=sab_orb, calculate_forces=.true., &
753 IF (my_debug_forces)
THEN
754 fodeb(1:3) = force(1)%overlap(1:3, 1) - fodeb(1:3)
755 CALL para_env%sum(fodeb)
756 IF (iounit > 0)
WRITE (iounit,
"(T3,A,T33,3F16.8)")
"DEBUG:: Wz*dS ", fodeb
758 IF (my_debug_stress .AND. use_virial)
THEN
759 stdeb = fconv*(virial%pv_overlap - stdeb)
760 CALL para_env%sum(stdeb)
761 IF (iounit > 0)
WRITE (unit=iounit, fmt=
"(T2,A,T41,2(1X,ES19.11))") &
766 CALL timestop(handle)
Handles all functions related to the CELL.
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)
...
subroutine, public dbcsr_set(matrix, alpha)
...
Routines that link DBCSR and CP2K concepts together.
subroutine, public cp_dbcsr_alloc_block_from_nbl(matrix, sab_orb, desymmetrize)
allocate the blocks of a dbcsr based on the neighbor list
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,...
Utility routines to open and close files. Tracking of preconnections.
subroutine, public open_file(file_name, file_status, file_form, file_action, file_position, file_pad, unit_number, debug, skip_get_unit_number, file_access)
Opens the requested file using a free unit number.
subroutine, public close_file(unit_number, file_status, keep_preconnection)
Close an open file given by its logical unit number. Optionally, keep the file and unit preconnected.
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_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_create(matrix, matrix_struct, name, use_sp, nrow, ncol, set_zero)
creates a new full matrix with the given structure
subroutine, public cp_fm_maxabsval(matrix, a_max, ir_max, ic_max)
find the maximum absolute value of the matrix element maxval(abs(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_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,...
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
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
Types needed for a for a Energy Correction.
Routines for an external energy correction on top of a Kohn-Sham calculation.
subroutine, public ec_ext_energy(qs_env, ec_env, calculate_forces)
External energy method.
subroutine, public matrix_r_forces(qs_env, cpmos, mo_occ, matrix_r, unit_nr, debug_forces, debug_stress)
...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Collection of simple mathematical functions and subroutines.
subroutine, public diag(n, a, d, v)
Diagonalize matrix a. The eigenvalues are returned in vector d and the eigenvectors are returned in m...
Interface to the message passing library MPI.
basic linear algebra operations for full matrixes
Definition of physical constants:
real(kind=dp), parameter, public pascal
Calculation of the energies concerning the core charge distribution.
Calculation of the core Hamiltonian integral matrix <a|H|b> over Cartesian Gaussian-type functions.
subroutine, public kinetic_energy_matrix(qs_env, matrixkp_t, matrix_t, matrix_p, matrix_name, calculate_forces, nderivative, sab_orb, eps_filter, basis_type, debug_forces, debug_stress)
Calculate kinetic energy matrix and possible relativistic correction.
subroutine, public core_matrices(qs_env, matrix_h, matrix_p, calculate_forces, nder, ec_env, dcdr_env, ec_env_matrices, basis_type, debug_forces, debug_stress, atcore)
...
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.
Definition and initialisation of the mo data type.
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.
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.
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...
The module to read/write TREX IO files for interfacing CP2K with other programs.
subroutine, public read_trexio(qs_env, trexio_filename, mo_set_trexio, energy_derivative)
Read a trexio file.
pure real(kind=dp) function, public one_third_sum_diag(a)
...
Type defining parameters related to the simulation cell.
keeps the information about the structure of a full matrix
type of a logger, at the moment it contains just a print level starting at which level it should be l...
Contains information on the energy correction functional for KG.
stores all the informations relevant to an mpi environment
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.