64#include "./base/base_uses.f90"
70 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'preconditioner'
118 matrix_t, mo_set, energy_gap, convert_precond_to_dbcsr, chol_type)
121 INTEGER,
INTENT(IN) :: precon_type, solver_type
123 TYPE(
dbcsr_type),
OPTIONAL,
POINTER :: matrix_s, matrix_t
125 REAL(kind=
dp) :: energy_gap
126 LOGICAL,
INTENT(IN),
OPTIONAL :: convert_precond_to_dbcsr
127 INTEGER,
INTENT(IN),
OPTIONAL :: chol_type
129 CHARACTER(len=*),
PARAMETER :: routinen =
'make_preconditioner'
131 INTEGER :: handle, k, my_solver_type, nao, nhomo
132 LOGICAL :: my_convert_precond_to_dbcsr, &
133 needs_full_spectrum, needs_homo, &
135 REAL(kind=
dp) :: energy_homo
136 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: eigenvalues_ot
142 CALL timeset(routinen, handle)
144 CALL get_mo_set(mo_set=mo_set, mo_coeff=mo_coeff, mo_coeff_b=mo_coeff_b, homo=nhomo)
145 use_mo_coeff_b = mo_set%use_mo_coeff_b
149 my_convert_precond_to_dbcsr = .false.
150 IF (
PRESENT(convert_precond_to_dbcsr)) my_convert_precond_to_dbcsr = convert_precond_to_dbcsr
159 needs_full_spectrum = .false.
162 SELECT CASE (precon_type)
164 needs_full_spectrum = .true.
166 IF (use_mo_coeff_b)
THEN
172 needs_full_spectrum = .true.
177 cpabort(
"The preconditioner is unknown ...")
180 ALLOCATE (eigenvalues_ot(k))
182 IF (needs_full_spectrum)
THEN
189 IF (use_mo_coeff_b)
THEN
191 eigenvalues_ot, do_rotation=.false., &
192 para_env=mo_coeff%matrix_struct%para_env, &
193 blacs_env=mo_coeff%matrix_struct%context)
196 eigenvalues_ot, do_rotation=.false.)
199 cpassert(nhomo > 0 .AND. nhomo <= k)
200 energy_homo = eigenvalues_ot(nhomo)
204 cpabort(
"Not yet implemented")
211 my_solver_type = solver_type
212 preconditioner_env%in_use = precon_type
214 IF (
PRESENT(chol_type)) preconditioner_env%cholesky_use = chol_type
215 preconditioner_env%in_use = precon_type
218 energy_homo, eigenvalues_ot, energy_gap, my_solver_type)
221 context=preconditioner_env%ctxt, &
222 para_env=preconditioner_env%para_env)
228 energy_homo, eigenvalues_ot(1:nhomo), energy_gap, my_solver_type)
238 IF (my_convert_precond_to_dbcsr)
THEN
242 preconditioner_env%para_env, preconditioner_env%ctxt)
245 DEALLOCATE (eigenvalues_ot)
247 CALL timestop(handle)
265 matrix_c_re, matrix_c_im, &
266 matrix_h_re, matrix_h_im, &
267 matrix_s_re, matrix_s_im, &
268 mo_set, energy_gap, solver_type)
271 TYPE(
dbcsr_type),
POINTER :: matrix_c_re, matrix_c_im, matrix_h_re, &
272 matrix_h_im, matrix_s_re, matrix_s_im
274 REAL(kind=
dp),
INTENT(IN) :: energy_gap
275 INTEGER,
INTENT(IN) :: solver_type
277 CHARACTER(len=*),
PARAMETER :: routinen =
'make_preconditioner_complex_full_all'
280 REAL(kind=
dp),
DIMENSION(:),
POINTER :: eigenvalues
283 CALL timeset(routinen, handle)
285 NULLIFY (eigenvalues)
286 cpassert(
ASSOCIATED(matrix_c_re))
287 cpassert(
ASSOCIATED(matrix_c_im))
288 cpassert(
ASSOCIATED(matrix_h_re))
289 cpassert(
ASSOCIATED(matrix_h_im))
290 cpassert(
ASSOCIATED(matrix_s_re))
291 cpassert(
ASSOCIATED(matrix_s_im))
293 cpabort(
'Complex FULL_ALL supports only PRECOND_SOLVER DEFAULT')
297 CALL get_mo_set(mo_set, eigenvalues=eigenvalues)
298 cpassert(
ASSOCIATED(eigenvalues))
299 cpassert(
SIZE(eigenvalues) >= k)
302 'complex FULL_ALL C', matrix_c)
304 'complex FULL_ALL H', matrix_h)
306 'complex FULL_ALL S', matrix_s)
308 eigenvalues(1:k), energy_gap)
314 CALL timestop(handle)
330 matrix_h_re, matrix_h_im, &
331 matrix_s_re, matrix_s_im, &
332 mo_set, energy_gap, solver_type)
335 TYPE(
dbcsr_type),
POINTER :: matrix_h_re, matrix_h_im, matrix_s_re, &
338 REAL(kind=
dp),
INTENT(IN) :: energy_gap
339 INTEGER,
INTENT(IN) :: solver_type
342 REAL(kind=
dp),
DIMENSION(:),
POINTER :: eigenvalues
345 NULLIFY (eigenvalues)
346 cpassert(
ASSOCIATED(matrix_h_re))
347 cpassert(
ASSOCIATED(matrix_h_im))
348 cpassert(
ASSOCIATED(matrix_s_re))
349 cpassert(
ASSOCIATED(matrix_s_im))
351 cpabort(
'Complex FULL_SINGLE supports only PRECOND_SOLVER DEFAULT')
353 CALL get_mo_set(mo_set, homo=homo, eigenvalues=eigenvalues)
354 cpassert(
ASSOCIATED(eigenvalues))
355 cpassert(homo > 0 .AND. homo <=
SIZE(eigenvalues))
358 'complex FULL_SINGLE H', matrix_h)
360 'complex FULL_SINGLE S', matrix_s)
362 eigenvalues(homo), energy_gap)
381 matrix_c_re, matrix_c_im, &
382 matrix_h_re, matrix_h_im, &
383 matrix_s_re, matrix_s_im, &
384 energy_gap, solver_type)
387 TYPE(
dbcsr_type),
POINTER :: matrix_c_re, matrix_c_im, matrix_h_re, &
388 matrix_h_im, matrix_s_re, matrix_s_im
389 REAL(kind=
dp),
INTENT(IN) :: energy_gap
390 INTEGER,
INTENT(IN) :: solver_type
395 TYPE(
cp_fm_type) :: matrix_c_im_fm, matrix_c_re_fm, &
396 matrix_h_im_fm, matrix_h_re_fm, &
397 matrix_s_im_fm, matrix_s_re_fm
399 NULLIFY (fm_struct_mo, fm_struct_square)
400 cpassert(
ASSOCIATED(matrix_c_re))
401 cpassert(
ASSOCIATED(matrix_c_im))
402 cpassert(
ASSOCIATED(matrix_h_re))
403 cpassert(
ASSOCIATED(matrix_h_im))
404 cpassert(
ASSOCIATED(matrix_s_re))
405 cpassert(
ASSOCIATED(matrix_s_im))
408 cpabort(
"Complex FULL_SINGLE_INVERSE supports only PRECOND_SOLVER DEFAULT/INVERSE_CHOLESKY")
410 CALL dbcsr_get_info(matrix_c_re, nfullrows_total=n, nfullcols_total=k)
411 cpassert(n > 0 .AND. k > 0 .AND. k <= n)
414 context=preconditioner_env%ctxt, &
415 para_env=preconditioner_env%para_env)
417 context=preconditioner_env%ctxt, &
418 para_env=preconditioner_env%para_env)
419 CALL cp_fm_create(matrix_c_re_fm, fm_struct_mo, name=
'complex preconditioner C real')
420 CALL cp_fm_create(matrix_c_im_fm, fm_struct_mo, name=
'complex preconditioner C imaginary')
421 CALL cp_fm_create(matrix_h_re_fm, fm_struct_square, name=
'complex preconditioner H real')
422 CALL cp_fm_create(matrix_h_im_fm, fm_struct_square, name=
'complex preconditioner H imaginary')
423 CALL cp_fm_create(matrix_s_re_fm, fm_struct_square, name=
'complex preconditioner S real')
424 CALL cp_fm_create(matrix_s_im_fm, fm_struct_square, name=
'complex preconditioner S imaginary')
434 CALL cp_cfm_create(matrix_c, matrix_c_re_fm%matrix_struct, name=
'complex preconditioner C')
435 CALL cp_cfm_create(matrix_h, matrix_h_re_fm%matrix_struct, name=
'complex preconditioner H')
436 CALL cp_cfm_create(matrix_s, matrix_s_re_fm%matrix_struct, name=
'complex preconditioner S')
437 CALL cp_fm_to_cfm(matrix_c_re_fm, matrix_c_im_fm, matrix_c)
438 CALL cp_fm_to_cfm(matrix_h_re_fm, matrix_h_im_fm, matrix_h)
439 CALL cp_fm_to_cfm(matrix_s_re_fm, matrix_s_im_fm, matrix_s)
442 preconditioner_env%solver = solver_type
464 matrix_s_re, matrix_s_im, solver_type)
467 TYPE(
dbcsr_type),
POINTER :: matrix_s_re, matrix_s_im
468 INTEGER,
INTENT(IN) :: solver_type
474 cpabort(
"Complex FULL_S_INVERSE supports only PRECOND_SOLVER DEFAULT/INVERSE_CHOLESKY")
477 'complex preconditioner S', matrix_s)
479 preconditioner_env%solver = solver_type
495 matrix_t_re, matrix_t_im, &
496 matrix_s_re, matrix_s_im, &
497 energy_gap, solver_type)
500 TYPE(
dbcsr_type),
POINTER :: matrix_t_re, matrix_t_im, matrix_s_re, &
502 REAL(kind=
dp),
INTENT(IN) :: energy_gap
503 INTEGER,
INTENT(IN) :: solver_type
509 cpabort(
"Complex FULL_KINETIC supports only PRECOND_SOLVER DEFAULT/INVERSE_CHOLESKY")
512 'complex preconditioner T', matrix_t)
514 'complex preconditioner S', matrix_s)
516 preconditioner_env%solver = solver_type
532 TYPE(
dbcsr_type),
POINTER :: matrix_re, matrix_im
534 CHARACTER(LEN=*),
INTENT(IN) :: matrix_name
537 INTEGER :: ncol, nrow
539 TYPE(
cp_fm_type) :: matrix_im_fm, matrix_re_fm
542 cpassert(
ASSOCIATED(matrix_re))
543 cpassert(
ASSOCIATED(matrix_im))
544 CALL dbcsr_get_info(matrix_re, nfullrows_total=nrow, nfullcols_total=ncol)
546 context=preconditioner_env%ctxt, &
547 para_env=preconditioner_env%para_env)
548 CALL cp_fm_create(matrix_re_fm, fm_struct, name=trim(matrix_name)//
' real')
549 CALL cp_fm_create(matrix_im_fm, fm_struct, name=trim(matrix_name)//
' imaginary')
553 CALL cp_cfm_create(matrix, matrix_re_fm%matrix_struct, name=matrix_name)
572 INTEGER,
INTENT(IN) :: prec_type, nspins
578 NULLIFY (para_env, blacs_env)
579 CALL get_qs_env(qs_env, para_env=para_env, blacs_env=blacs_env)
582 SELECT CASE (prec_type)
593 cpabort(
"Unknown preconditioner type")
599 SELECT CASE (prec_type)
633 ot_preconditioner, prec_type, solver_type, &
634 energy_gap, nspins, has_unit_metric, &
635 convert_to_dbcsr, chol_type, full_mo_set, chebyshev_degree)
638 TYPE(
mo_set_type),
DIMENSION(:),
INTENT(INOUT) :: mos
639 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_s
641 INTEGER,
INTENT(IN) :: prec_type, solver_type
642 REAL(
dp),
INTENT(IN) :: energy_gap
643 INTEGER,
INTENT(IN) :: nspins
644 LOGICAL,
INTENT(IN),
OPTIONAL :: has_unit_metric, convert_to_dbcsr
645 INTEGER,
INTENT(IN),
OPTIONAL :: chol_type
646 LOGICAL,
INTENT(IN),
OPTIONAL :: full_mo_set
647 INTEGER,
INTENT(IN),
OPTIONAL :: chebyshev_degree
649 CHARACTER(LEN=*),
PARAMETER :: routinen =
'prepare_preconditioner'
651 CHARACTER(LEN=default_string_length) :: msg
652 INTEGER :: handle, icall, ispin, &
653 my_chebyshev_degree, n_loops
654 INTEGER,
DIMENSION(5) :: nocc, norb
655 LOGICAL :: do_co_rotate, my_convert_to_dbcsr, &
656 my_full_mo_set, my_has_unit_metric, &
661 TYPE(
dbcsr_type),
POINTER :: matrix_t, mo_coeff_b
665 CALL timeset(routinen, handle)
666 NULLIFY (matrix_t, mo_coeff_b, mo_coeff, kinetic, dft_control, para_env, blacs_env)
667 my_has_unit_metric = .false.
668 IF (
PRESENT(has_unit_metric)) my_has_unit_metric = has_unit_metric
669 my_convert_to_dbcsr = .true.
670 IF (
PRESENT(convert_to_dbcsr)) my_convert_to_dbcsr = convert_to_dbcsr
671 my_full_mo_set = .false.
672 IF (
PRESENT(full_mo_set)) my_full_mo_set = full_mo_set
673 my_chebyshev_degree = 8
674 IF (
PRESENT(chebyshev_degree)) my_chebyshev_degree = chebyshev_degree
677 dft_control=dft_control, &
681 IF (dft_control%qs_control%semi_empirical .OR. dft_control%qs_control%dftb .OR. &
682 dft_control%qs_control%xtb)
THEN
684 msg =
"Full_kinetic not available for semi-empirical methods"
687 matrix_t => matrix_s(1)%matrix
689 cpassert(.NOT. my_has_unit_metric)
691 matrix_t => kinetic(1)%matrix
697 IF (my_full_mo_set)
THEN
699 CALL get_mo_set(mo_set=mos(ispin), homo=nocc(ispin), nmo=norb(ispin))
700 CALL set_mo_set(mo_set=mos(ispin), homo=norb(ispin))
707 SELECT CASE (prec_type)
712 do_co_rotate =
ASSOCIATED(qs_env%mo_derivs)
714 CALL get_mo_set(mo_set=mos(ispin), mo_coeff_b=mo_coeff_b, mo_coeff=mo_coeff)
715 use_mo_coeff_b = mos(ispin)%use_mo_coeff_b
716 IF (use_mo_coeff_b .AND. do_co_rotate)
THEN
718 do_rotation=.true., &
719 co_rotate=qs_env%mo_derivs(ispin)%matrix, &
722 ELSE IF (use_mo_coeff_b)
THEN
724 do_rotation=.true., &
737 SELECT CASE (prec_type)
739 DO ispin = 1,
SIZE(ot_preconditioner)
740 ot_preconditioner(ispin)%preconditioner%in_use = 0
743 DO icall = 1, n_loops
744 ot_preconditioner(icall)%preconditioner%polynomial_degree = my_chebyshev_degree
745 IF (my_has_unit_metric)
THEN
749 matrix_h=matrix_ks(icall)%matrix, &
751 energy_gap=energy_gap, &
752 convert_precond_to_dbcsr=my_convert_to_dbcsr)
757 matrix_h=matrix_ks(icall)%matrix, &
758 matrix_s=matrix_s(1)%matrix, &
761 energy_gap=energy_gap, &
762 convert_precond_to_dbcsr=my_convert_to_dbcsr, chol_type=chol_type)
768 IF (my_full_mo_set)
THEN
770 CALL set_mo_set(mo_set=mos(ispin), homo=nocc(ispin))
774 CALL timestop(handle)
methods related to the blacs parallel environment
Represents a complex full matrix distributed on many processors.
subroutine, public cp_cfm_release(matrix)
Releases a full matrix.
subroutine, public cp_fm_to_cfm(msourcer, msourcei, mtarget)
Construct a complex full matrix by taking its real and imaginary parts from two separate real-value f...
subroutine, public cp_cfm_create(matrix, matrix_struct, name, nrow, ncol, set_zero)
Creates a new full matrix with the given structure.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
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)
...
DBCSR operations in CP2K.
subroutine, public copy_dbcsr_to_fm(matrix, fm)
Copy a DBCSR matrix to a BLACS matrix.
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_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, nrow, ncol, set_zero)
creates a new full matrix with the given structure
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Interface to the message passing library MPI.
computes preconditioners, and implements methods to apply them currently used in qs_ot
subroutine, public apply_preconditioner_dbcsr_complex(preconditioner_env, matrix_in_re, matrix_in_im, matrix_out_re, matrix_out_im)
Apply a complex orbital preconditioner to paired real/imaginary DBCSR matrices.
subroutine, public apply_preconditioner_fm(preconditioner_env, matrix_in, matrix_out)
applies a previously created preconditioner to a full matrix
subroutine, public apply_preconditioner_cfm_complex(preconditioner_env, matrix_in, matrix_out)
Apply a complex k-point orbital preconditioner.
subroutine, public apply_preconditioner_dbcsr(preconditioner_env, matrix_in, matrix_out)
...
computes preconditioners, and implements methods to apply them currently used in qs_ot
subroutine, public make_complex_full_single_inverse(preconditioner_env, matrix_c0, matrix_h, matrix_s, energy_gap)
Build a gauge-covariant FULL_SINGLE_INVERSE operator for a complex k-point channel.
subroutine, public make_complex_full_kinetic(preconditioner_env, matrix_t, matrix_s, energy_gap)
Build the inverse complex kinetic-plus-overlap preconditioner.
subroutine, public make_complex_full_s_inverse(preconditioner_env, matrix_s)
Build the inverse complex overlap preconditioner.
subroutine, public make_complex_full_single(preconditioner_env, matrix_h, matrix_s, energy_homo, energy_gap)
Build the complex spectral FULL_SINGLE preconditioner.
subroutine, public make_preconditioner_matrix(preconditioner_env, matrix_h, matrix_s, matrix_t, mo_coeff, energy_homo, eigenvalues_ot, energy_gap, my_solver_type)
...
subroutine, public make_complex_full_all(preconditioner_env, matrix_c0, matrix_h, matrix_s, c0_evals, energy_gap)
Build the state-selective FULL_ALL operator for a complex k-point channel. The occupied/reference sub...
solves the preconditioner, contains to utility function for fm<->dbcsr transfers, should be moved soo...
subroutine, public transfer_dbcsr_to_fm(dbcsr_matrix, fm_matrix, para_env, context)
transfers a dbcsr to a full matrix
subroutine, public solve_preconditioner(my_solver_type, preconditioner_env, matrix_s, matrix_h)
...
subroutine, public transfer_fm_to_dbcsr(fm_matrix, dbcsr_matrix, template_mat)
transfers a full matrix to a dbcsr
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_complex_full_all(preconditioner_env, matrix_c_re, matrix_c_im, matrix_h_re, matrix_h_im, matrix_s_re, matrix_s_im, mo_set, energy_gap, solver_type)
Construct FULL_ALL directly from one complex H(k), S(k), and C(k) channel.
subroutine, public make_preconditioner_complex_full_s_inverse(preconditioner_env, matrix_s_re, matrix_s_im, solver_type)
Construct a complex FULL_S_INVERSE preconditioner.
subroutine, public make_preconditioner_complex_full_single(preconditioner_env, matrix_h_re, matrix_h_im, matrix_s_re, matrix_s_im, mo_set, energy_gap, solver_type)
Construct a complex FULL_SINGLE preconditioner from H(k) and S(k).
subroutine, public dbcsr_pair_to_cfm(matrix_re, matrix_im, preconditioner_env, matrix_name, matrix)
Copy a real/imaginary DBCSR pair to one distributed complex full matrix.
subroutine, public make_preconditioner_complex_full_single_inverse(preconditioner_env, matrix_c_re, matrix_c_im, matrix_h_re, matrix_h_im, matrix_s_re, matrix_s_im, energy_gap, solver_type)
Construct a complex FULL_SINGLE_INVERSE preconditioner without discarding Im(H,S,C).
subroutine, public restart_preconditioner(qs_env, preconditioner, prec_type, nspins)
Allows for a restart of the preconditioner depending on the method it purges all arrays or keeps them...
subroutine, public prepare_preconditioner(qs_env, mos, matrix_ks, matrix_s, ot_preconditioner, prec_type, solver_type, energy_gap, nspins, has_unit_metric, convert_to_dbcsr, chol_type, full_mo_set, chebyshev_degree)
...
subroutine, public make_preconditioner_complex_full_kinetic(preconditioner_env, matrix_t_re, matrix_t_im, matrix_s_re, matrix_s_im, energy_gap, solver_type)
Construct a complex FULL_KINETIC preconditioner.
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)
...
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, matrix_vhxc, 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.
collects routines that perform operations directly related to MOs
Definition and initialisation of the mo data type.
subroutine, public set_mo_set(mo_set, maxocc, homo, lfomo, nao, nelectron, n_el_f, nmo, eigenvalues, occupation_numbers, uniform_occupation, kts, mu, flexible_electron_count)
Set the components of a MO set data structure.
subroutine, public 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.
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
Represent a complex full matrix.
keeps the information about the structure of a full matrix
stores all the informations relevant to an mpi environment