57#include "./base/base_uses.f90"
68 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'optbas_fenv_manipulation'
85 CHARACTER(LEN=default_string_length) ::
atom
86 CHARACTER(LEN=default_string_length), &
87 DIMENSION(:),
POINTER :: abasinfo, obasinfo
88 INTEGER :: ibasis, ikind, jkind, nbasis, nkind
90 kind_section, subsys_section
107 c_val=basis_optimization%work_basis_file)
113 c_val=
atom, i_rep_section=ikind)
117 CALL cp_abort(__location__, &
118 "Basis set optimization: Only one single BASIS_SET allowed per KIND in the reference input")
121 c_vals=obasinfo, i_rep_val=1, i_rep_section=ikind)
122 ALLOCATE (abasinfo(2))
123 abasinfo(1) =
"AUX_OPT"
124 IF (
SIZE(obasinfo) == 1)
THEN
125 abasinfo(2) = obasinfo(1)
127 abasinfo(2) = obasinfo(2)
130 c_vals_ptr=abasinfo, i_rep_val=2, i_rep_section=ikind)
132 cpassert(nbasis == 2)
134 DO jkind = 1, basis_optimization%nkind
135 IF (
atom == basis_optimization%kind_basis(jkind)%element)
THEN
139 c_vals=abasinfo, i_rep_val=2, i_rep_section=ikind)
140 ibasis = basis_optimization%combination(bas_id, jkind)
141 cpassert(
SIZE(abasinfo) == 2)
142 cpassert(abasinfo(1) ==
"AUX_OPT")
143 abasinfo(2) = trim(adjustl(basis_optimization%kind_basis(jkind)%flex_basis(ibasis)%basis_name))
159 INTEGER,
DIMENSION(2) :: nelectron_spin
160 LOGICAL :: natom_mismatch
167 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
172 dft_control=dft_control, &
173 mos=mos, nelectron_spin=nelectron_spin, &
174 atomic_kind_set=atomic_kind_set, &
175 qs_kind_set=qs_kind_set, &
176 particle_set=particle_set, &
180 CALL mpools_get(qs_env%mpools, ao_mo_fm_pools=ao_mo_fm_pools)
181 DO ispin = 1, dft_control%nspins
182 IF (.NOT.
ASSOCIATED(mos(ispin)%mo_coeff))
THEN
184 fm_pool=ao_mo_fm_pools(ispin)%pool, &
190 id_nr=0, multiplicity=dft_control%multiplicity, dft_section=dft_section, &
191 natom_mismatch=natom_mismatch)
207 NULLIFY (rho, dft_control, rho_ao)
210 CALL get_qs_env(qs_env, rho=rho, dft_control=dft_control)
212 DO ispin = 1, dft_control%nspins
217 qs_env%requires_mo_derivs = .false.
241 para_env=para_env, context=context)
243 CALL cp_fm_create(matrix_s_inv, matrix_struct=fm_struct_tmp)
265 CHARACTER(*) :: basis_type
268 CHARACTER(default_string_length) :: elem
269 INTEGER :: ibasis, ikind, jkind
273 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
275 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control, &
276 atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set)
277 DO ikind = 1,
SIZE(qs_kind_set)
278 DO jkind = 1, opt_bas%nkind
281 IF (elem == opt_bas%kind_basis(jkind)%element)
THEN
282 ibasis = opt_bas%combination(bas_id, jkind)
284 basis_type=basis_type)
285 CALL transfer_data_to_gto(gto_basis, opt_bas%kind_basis(jkind)%flex_basis(ibasis))
300 SUBROUTINE transfer_data_to_gto(gto_basis, basis)
304 INTEGER :: ipgf, iset, ishell
306 DO iset = 1, basis%nsets
307 DO ishell = 1, basis%subset(iset)%ncon_tot
308 DO ipgf = 1, basis%subset(iset)%nexp
309 gto_basis%gcc(ipgf, ishell, iset) = basis%subset(iset)%coeff(ipgf, ishell)
312 DO ipgf = 1, basis%subset(iset)%nexp
313 gto_basis%zet(ipgf, iset) = basis%subset(iset)%exps(ipgf)
317 END SUBROUTINE transfer_data_to_gto
void update_basis_set(const int nkinds, const grid_basis_set **const basis_sets, grid_context *data)
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.
subroutine, public get_basis_from_container(container, basis_set, inumbas, basis_type)
Retrieve a basis set from the container.
subroutine, public init_orb_basis_set(gto_basis_set)
Initialise a Gaussian-type orbital (GTO) basis set data set.
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_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.
basic linear algebra operations for full matrices
subroutine, public cp_fm_uplo_to_full(matrix, work, uplo)
given a triangular matrix according to uplo, computes the corresponding full matrix
various cholesky decomposition related routines
subroutine, public cp_fm_cholesky_invert(matrix, n, info_out)
used to replace the cholesky decomposition by the inverse
subroutine, public cp_fm_cholesky_decompose(matrix, n, info_out)
used to replace a symmetric positive def. matrix M with its cholesky decomposition U: M = U^T * U,...
pool for for elements that are retained and released
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_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 ...
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public debug_print_level
Defines the basic variable types.
integer, parameter, public default_string_length
Interface to the message passing library MPI.
subroutine, public modify_input_settings(basis_optimization, bas_id, input_file)
change settings in the training input files to initialize all needed structures and adjust settings t...
subroutine, public calculate_ks_matrix(qs_env)
...
subroutine, public calculate_overlap_inverse(matrix_s, matrix_s_inv, para_env, context)
...
subroutine, public allocate_mo_sets(qs_env)
...
Define the data structure for the particle information.
collects routines that calculate density matrices
Utility subroutine for qs energy calculation.
subroutine, public qs_energies_init(qs_env, calc_forces)
Refactoring of qs_energies_scf. Driver routine for the initial setup and calculations for a qs energy...
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.
Calculate the interaction radii for the operator matrix calculation.
subroutine, public init_interaction_radii(qs_control, qs_kind_set)
Initialize all the atomic kind radii for a given threshold value.
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...
wrapper for the pools of matrixes
subroutine, public mpools_get(mpools, ao_mo_fm_pools, ao_ao_fm_pools, mo_mo_fm_pools, ao_mosub_fm_pools, mosub_mosub_fm_pools, maxao_maxmo_fm_pool, maxao_maxao_fm_pool, maxmo_maxmo_fm_pool)
returns various attributes of the mpools (notably the pools contained in it)
Definition and initialisation of the mo data type.
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 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 ...
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...
Utilities for string manipulations.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.
Provides all information about an atomic kind.
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
to create arrays of pools
keeps the information about the structure of a full matrix
stores all the informations relevant to an mpi environment
type containing all information needed for basis matching
Provides all information about a quickstep kind.
keeps the density in various representations, keeping track of which ones are valid.