18 USE dbcsr_api,
ONLY: dbcsr_p_type
72 #include "./base/base_uses.f90"
79 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'optimize_basis'
91 TYPE(section_type),
POINTER :: input_declaration
92 TYPE(section_vals_type),
POINTER :: root_section
93 TYPE(mp_para_env_type),
POINTER :: para_env
95 CHARACTER(len=*),
PARAMETER :: routinen =
'run_optimize_basis'
98 TYPE(basis_optimization_type) :: opt_bas
100 CALL timeset(routinen, handle)
104 CALL driver_para_opt_basis(opt_bas, input_declaration, para_env)
107 CALL timestop(handle)
119 SUBROUTINE driver_para_opt_basis(opt_bas, input_declaration, para_env)
120 TYPE(basis_optimization_type) :: opt_bas
121 TYPE(section_type),
POINTER :: input_declaration
122 TYPE(mp_para_env_type),
POINTER :: para_env
124 CHARACTER(len=*),
PARAMETER :: routinen =
'driver_para_opt_basis'
126 INTEGER :: handle, n_groups_created
127 TYPE(mp_comm_type) :: opt_group
128 INTEGER,
DIMENSION(:),
POINTER :: group_distribution_p
129 INTEGER,
DIMENSION(0:para_env%num_pe-1),
TARGET :: group_distribution
131 CALL timeset(routinen, handle)
132 group_distribution_p => group_distribution
133 CALL opt_group%from_split(para_env, n_groups_created, group_distribution_p, &
134 n_subgroups=
SIZE(opt_bas%group_partition), group_partition=opt_bas%group_partition)
135 opt_bas%opt_id = group_distribution(para_env%mepos) + 1
136 opt_bas%n_groups_created = n_groups_created
137 ALLOCATE (opt_bas%sub_sources(0:para_env%num_pe - 1))
139 CALL driver_optimization_para_low(opt_bas, input_declaration, para_env, opt_group)
141 CALL opt_group%free()
142 CALL timestop(handle)
144 END SUBROUTINE driver_para_opt_basis
156 SUBROUTINE driver_optimization_para_low(opt_bas, input_declaration, para_env_top, mpi_comm_opt)
157 TYPE(basis_optimization_type) :: opt_bas
158 TYPE(section_type),
POINTER :: input_declaration
159 TYPE(mp_para_env_type),
POINTER :: para_env_top
160 TYPE(mp_comm_type),
INTENT(IN) :: mpi_comm_opt
162 CHARACTER(len=*),
PARAMETER :: routinen =
'driver_optimization_para_low'
164 INTEGER :: handle, icalc, iopt, is, mp_id, stat
165 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: f_env_id
166 LOGICAL :: write_basis
167 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: tot_time
168 TYPE(cp_fm_type),
ALLOCATABLE,
DIMENSION(:) :: matrix_s_inv
169 TYPE(f_env_type),
POINTER :: f_env
170 TYPE(mp_para_env_type),
POINTER :: para_env
174 CALL timeset(routinen, handle)
177 mp_id = opt_bas%opt_id
178 NULLIFY (para_env, f_env)
179 ALLOCATE (f_env_id(
SIZE(opt_bas%comp_group(mp_id)%member_list)))
180 ALLOCATE (tot_time(opt_bas%ncombinations*opt_bas%ntraining_sets))
181 ALLOCATE (matrix_s_inv(
SIZE(opt_bas%comp_group(mp_id)%member_list)))
184 para_env = mpi_comm_opt
187 IF (para_env%is_source()) is = para_env_top%mepos
188 CALL para_env_top%allgather(is, opt_bas%sub_sources)
190 CALL init_training_force_envs(opt_bas, f_env_id, input_declaration, matrix_s_inv, para_env, mpi_comm_opt)
192 CALL init_free_vars(opt_bas)
196 DO iopt = 0, opt_bas%powell_param%maxfun
197 CALL compute_residuum_vectors(opt_bas, f_env_id, matrix_s_inv, tot_time, &
198 para_env_top, para_env, iopt)
199 IF (para_env_top%is_source()) &
200 CALL powell_optimize(opt_bas%powell_param%nvar, opt_bas%x_opt, opt_bas%powell_param)
201 CALL para_env_top%bcast(opt_bas%powell_param%state)
202 CALL para_env_top%bcast(opt_bas%x_opt)
203 CALL update_free_vars(opt_bas)
204 write_basis = mod(iopt, opt_bas%write_frequency) == 0
207 IF (opt_bas%powell_param%state == -1)
EXIT
211 IF (para_env_top%is_source())
THEN
212 opt_bas%powell_param%state = 8
213 CALL powell_optimize(opt_bas%powell_param%nvar, opt_bas%x_opt, opt_bas%powell_param)
216 CALL para_env_top%bcast(opt_bas%x_opt)
217 CALL update_free_vars(opt_bas)
223 DO icalc =
SIZE(opt_bas%comp_group(mp_id)%member_list), 1, -1
227 DEALLOCATE (f_env_id);
DEALLOCATE (tot_time)
228 CALL cp_fm_release(matrix_s_inv)
230 CALL timestop(handle)
232 END SUBROUTINE driver_optimization_para_low
247 SUBROUTINE compute_residuum_vectors(opt_bas, f_env_id, matrix_S_inv, tot_time, &
248 para_env_top, para_env, iopt)
249 TYPE(basis_optimization_type) :: opt_bas
250 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: f_env_id
251 TYPE(cp_fm_type),
DIMENSION(:),
INTENT(IN) :: matrix_s_inv
252 REAL(kind=
dp),
DIMENSION(:) :: tot_time
253 TYPE(mp_para_env_type),
POINTER :: para_env_top, para_env
256 CHARACTER(len=*),
PARAMETER :: routinen =
'compute_residuum_vectors'
258 CHARACTER(len=8) :: basis_type
259 INTEGER :: bas_id, handle, icalc, icomb, ispin, &
260 mp_id, my_id, nao, ncalc, nelectron, &
262 REAL(kind=
dp) :: flexible_electron_count, maxocc, n_el_f
263 REAL(kind=
dp),
DIMENSION(:),
POINTER :: cond_vec, energy, f_vec, my_time, &
265 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: gdata
266 TYPE(cp_fm_struct_type),
POINTER :: fm_struct
267 TYPE(cp_fm_type),
POINTER :: mo_coeff
268 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_ks, matrix_s_aux, matrix_s_aux_orb
269 TYPE(f_env_type),
POINTER :: f_env
270 TYPE(force_env_type),
POINTER :: force_env
271 TYPE(mo_set_type),
ALLOCATABLE,
DIMENSION(:) :: mos_aux
272 TYPE(mo_set_type),
DIMENSION(:),
POINTER :: mos
273 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
274 POINTER :: sab_aux, sab_aux_orb
275 TYPE(qs_environment_type),
POINTER :: qs_env
276 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
277 TYPE(qs_ks_env_type),
POINTER :: ks_env
279 CALL timeset(routinen, handle)
281 basis_type =
"AUX_OPT"
283 ncalc = opt_bas%ncombinations*opt_bas%ntraining_sets
284 ALLOCATE (gdata(ncalc, 4))
286 my_time => gdata(:, 2)
287 cond_vec => gdata(:, 3)
288 energy => gdata(:, 4)
290 f_vec = 0.0_dp; cond_vec = 0.0_dp; my_time = 0.0_dp; energy = 0.0_dp
291 mp_id = opt_bas%opt_id
292 ALLOCATE (start_time(
SIZE(opt_bas%comp_group(mp_id)%member_list)))
294 DO icalc = 1,
SIZE(opt_bas%comp_group(mp_id)%member_list)
295 my_id = opt_bas%comp_group(mp_id)%member_list(icalc) + 1
299 NULLIFY (matrix_s_aux_orb, matrix_s_aux)
300 CALL get_set_and_basis_id(opt_bas%comp_group(mp_id)%member_list(icalc), opt_bas, set_id, bas_id)
302 force_env => f_env%force_env
306 NULLIFY (sab_aux, sab_aux_orb)
309 basis_type_a=basis_type, &
310 basis_type_b=basis_type, &
313 basis_type_a=basis_type, &
314 basis_type_b=
"ORB", &
318 CALL get_qs_env(qs_env, mos=mos, matrix_ks=matrix_ks)
321 ALLOCATE (mos_aux(nspins))
322 CALL get_qs_env(qs_env, qs_kind_set=qs_kind_set)
325 CALL get_mo_set(mo_set=mos(ispin), mo_coeff=mo_coeff, maxocc=maxocc, nelectron=nelectron, &
326 n_el_f=n_el_f, nmo=nmo, flexible_electron_count=flexible_electron_count)
328 context=mo_coeff%matrix_struct%context, &
329 para_env=mo_coeff%matrix_struct%para_env)
331 n_el_f, maxocc, flexible_electron_count)
332 CALL init_mo_set(mo_set=mos_aux(ispin), fm_struct=fm_struct, name=
"MO_AUX")
336 CALL fit_mo_coeffs(matrix_s_aux, matrix_s_aux_orb, mos, mos_aux)
337 CALL evaluate_optvals(mos, mos_aux, matrix_ks, matrix_s_aux_orb(1)%matrix, &
338 matrix_s_aux(1)%matrix, matrix_s_inv(icalc), &
339 f_vec(my_id), energy(my_id), cond_vec(my_id))
348 my_time(my_id) =
m_walltime() - start_time(icalc)
351 DEALLOCATE (start_time)
353 IF (.NOT. para_env%is_source())
THEN
354 f_vec = 0.0_dp; cond_vec = 0.0_dp; my_time = 0.0_dp; energy = 0.0_dp
357 CALL para_env_top%sum(gdata)
359 opt_bas%powell_param%f = 0.0_dp
360 IF (para_env_top%is_source())
THEN
361 DO icalc = 1,
SIZE(f_vec)
362 icomb = mod(icalc - 1, opt_bas%ncombinations)
363 opt_bas%powell_param%f = opt_bas%powell_param%f + &
364 (f_vec(icalc) + energy(icalc))*opt_bas%fval_weight(icomb)
365 IF (opt_bas%use_condition_number) &
366 opt_bas%powell_param%f = opt_bas%powell_param%f + &
367 log(cond_vec(icalc))*opt_bas%condition_weight(icomb)
370 f_vec = 0.0_dp; cond_vec = 0.0_dp; my_time = 0.0_dp; energy = 0.0_dp
372 CALL para_env_top%bcast(opt_bas%powell_param%f)
375 CALL output_opt_info(f_vec, cond_vec, my_time, tot_time, opt_bas, iopt, para_env_top)
378 CALL para_env_top%sync()
380 CALL timestop(handle)
382 END SUBROUTINE compute_residuum_vectors
394 SUBROUTINE init_training_force_envs(opt_bas, f_env_id, input_declaration, matrix_s_inv, para_env, mpi_comm_opt)
396 TYPE(basis_optimization_type) :: opt_bas
397 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: f_env_id
398 TYPE(section_type),
POINTER :: input_declaration
399 TYPE(cp_fm_type),
DIMENSION(:),
INTENT(OUT) :: matrix_s_inv
400 TYPE(mp_para_env_type),
POINTER :: para_env
401 TYPE(mp_comm_type) :: mpi_comm_opt
403 CHARACTER(len=*),
PARAMETER :: routinen =
'init_training_force_envs'
405 CHARACTER(len=default_path_length) :: main_dir
406 INTEGER :: bas_id, handle, icalc, ierr, mp_id, &
408 TYPE(cp_blacs_env_type),
POINTER :: blacs_env
409 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s
410 TYPE(f_env_type),
POINTER :: f_env
411 TYPE(force_env_type),
POINTER :: force_env
412 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
414 TYPE(qs_environment_type),
POINTER :: qs_env
415 TYPE(qs_ks_env_type),
POINTER :: ks_env
416 TYPE(section_vals_type),
POINTER :: input_file
418 CALL timeset(routinen, handle)
420 NULLIFY (matrix_s, blacs_env, ks_env)
422 mp_id = opt_bas%opt_id
426 DO icalc = 1,
SIZE(opt_bas%comp_group(mp_id)%member_list)
429 CALL get_set_and_basis_id(opt_bas%comp_group(mp_id)%member_list(icalc), opt_bas, set_id, bas_id)
430 CALL m_chdir(trim(opt_bas%training_dir(set_id)), ierr)
432 CALL cp_abort(__location__, &
433 "Could not change to directory <"//trim(opt_bas%training_dir(set_id))//
">")
436 opt_bas%training_input(set_id), &
437 initial_variables=empty_initial_variables, &
442 input_declaration=input_declaration, &
443 input_path=opt_bas%training_input(set_id), &
445 output_path=
"scrap_information", &
446 mpi_comm=mpi_comm_opt, &
452 force_env => f_env%force_env
458 force_env_section=qs_env%input)
463 matrix_name=
"OVERLAP", &
464 basis_type_a=
"ORB", &
465 basis_type_b=
"ORB", &
468 CALL get_qs_env(qs_env, matrix_s=matrix_s, blacs_env=blacs_env)
477 CALL m_chdir(trim(adjustl(main_dir)), ierr)
480 CALL timestop(handle)
482 END SUBROUTINE init_training_force_envs
490 SUBROUTINE update_free_vars(opt_bas)
491 TYPE(basis_optimization_type) :: opt_bas
493 CHARACTER(len=*),
PARAMETER :: routinen =
'update_free_vars'
495 INTEGER :: handle, ikind, iset, ix
497 CALL timeset(routinen, handle)
499 DO ikind = 1, opt_bas%nkind
500 DO iset = 1, opt_bas%kind_basis(ikind)%flex_basis(0)%nsets
501 CALL update_subset_freevars(opt_bas%kind_basis(ikind)%flex_basis(0)%subset(iset), ix, opt_bas%x_opt)
504 CALL timestop(handle)
506 END SUBROUTINE update_free_vars
516 SUBROUTINE update_subset_freevars(subset, ix, x)
517 TYPE(subset_type) :: subset
519 REAL(kind=
dp),
DIMENSION(:) :: x
521 CHARACTER(len=*),
PARAMETER :: routinen =
'update_subset_freevars'
523 INTEGER :: handle, icon1, icon2, icont, iexp, il, &
525 REAL(kind=
dp) :: fermi_f, gs_scale
527 CALL timeset(routinen, handle)
528 DO iexp = 1, subset%nexp
529 IF (subset%opt_exps(iexp))
THEN
531 subset%exps(iexp) = abs(x(ix))
532 IF (subset%exp_has_const(iexp))
THEN
534 fermi_f = 1.0_dp/(exp((x(ix) - 1.0_dp)/0.5_dp) + 1.0_dp)
535 subset%exps(iexp) = (2.0_dp*fermi_f - 1.0_dp)*subset%exp_const(iexp)%var_fac*subset%exp_const(iexp)%init + &
536 subset%exp_const(iexp)%init
541 DO icont = 1, subset%ncon_tot
542 IF (subset%opt_coeff(iexp, icont))
THEN
544 subset%coeff(iexp, icont) = x(ix)
552 DO icon1 = istart, istart + subset%l(il) - 2
553 DO icon2 = icon1 + 1, istart + subset%l(il) - 1
554 gs_scale = dot_product(subset%coeff(:, icon2), subset%coeff(:, icon1))/ &
555 dot_product(subset%coeff(:, icon1), subset%coeff(:, icon1))
556 subset%coeff(:, icon2) = subset%coeff(:, icon2) - gs_scale*subset%coeff(:, icon1)
559 istart = istart + subset%l(il)
562 DO icon1 = 1, subset%ncon_tot
563 subset%coeff(:, icon1) = subset%coeff(:, icon1)/ &
564 sqrt(dot_product(subset%coeff(:, icon1), subset%coeff(:, icon1)))
566 CALL timestop(handle)
568 END SUBROUTINE update_subset_freevars
576 SUBROUTINE init_free_vars(opt_bas)
577 TYPE(basis_optimization_type) :: opt_bas
579 CHARACTER(len=*),
PARAMETER :: routinen =
'init_free_vars'
581 INTEGER :: handle, ikind, iset, ix
583 CALL timeset(routinen, handle)
585 DO ikind = 1, opt_bas%nkind
586 DO iset = 1, opt_bas%kind_basis(ikind)%flex_basis(0)%nsets
587 CALL init_subset_freevars(opt_bas%kind_basis(ikind)%flex_basis(0)%subset(iset), ix, opt_bas%x_opt)
590 CALL timestop(handle)
592 END SUBROUTINE init_free_vars
603 SUBROUTINE init_subset_freevars(subset, ix, x)
604 TYPE(subset_type) :: subset
606 REAL(kind=
dp),
DIMENSION(:) :: x
608 CHARACTER(len=*),
PARAMETER :: routinen =
'init_subset_freevars'
610 INTEGER :: handle, icont, iexp
611 REAL(kind=
dp) :: fract
613 CALL timeset(routinen, handle)
615 DO iexp = 1, subset%nexp
616 IF (subset%opt_exps(iexp))
THEN
618 x(ix) = subset%exps(iexp)
619 IF (subset%exp_has_const(iexp))
THEN
620 IF (subset%exp_const(iexp)%const_type == 0)
THEN
621 fract = 1.0_dp + (subset%exps(iexp) - subset%exp_const(iexp)%init)/ &
622 (subset%exp_const(iexp)%init*subset%exp_const(iexp)%var_fac)
623 x(ix) = 0.5_dp*log((2.0_dp/fract - 1.0_dp)) + 1.0_dp
625 IF (subset%exp_const(iexp)%const_type == 1)
THEN
630 DO icont = 1, subset%ncon_tot
631 IF (subset%opt_coeff(iexp, icont))
THEN
633 x(ix) = subset%coeff(iexp, icont)
637 CALL timestop(handle)
639 END SUBROUTINE init_subset_freevars
653 SUBROUTINE output_opt_info(f_vec, cond_vec, my_time, tot_time, opt_bas, iopt, para_env_top)
654 REAL(kind=
dp),
DIMENSION(:) :: f_vec, cond_vec, my_time, tot_time
655 TYPE(basis_optimization_type) :: opt_bas
657 TYPE(mp_para_env_type),
POINTER :: para_env_top
659 CHARACTER(len=*),
PARAMETER :: routinen =
'output_opt_info'
661 INTEGER :: handle, ibasis, icalc, iset, unit_nr
662 TYPE(cp_logger_type),
POINTER :: logger
664 CALL timeset(routinen, handle)
667 tot_time = tot_time + my_time
670 IF (para_env_top%is_source() .AND. (mod(iopt, opt_bas%write_frequency) == 0 .OR. iopt == opt_bas%powell_param%maxfun)) &
673 IF (unit_nr .GT. 0)
THEN
674 WRITE (unit_nr,
'(1X,A,I8)')
"BASOPT| Information at iteration number:", iopt
675 WRITE (unit_nr,
'(1X,A)')
"BASOPT| Training set | Combination | Rho difference | Condition num. | Time"
676 WRITE (unit_nr,
'(1X,A)')
"BASOPT| -----------------------------------------------------------------------"
678 DO iset = 1, opt_bas%ntraining_sets
679 DO ibasis = 1, opt_bas%ncombinations
681 WRITE (unit_nr,
'(1X,A,2(5X,I3,5X,A),2(1X,E14.8,1X,A),1X,F8.1)') &
682 'BASOPT| ', iset,
"|", ibasis,
"|", f_vec(icalc),
"|", cond_vec(icalc),
"|", tot_time(icalc)
685 WRITE (unit_nr,
'(1X,A)')
"BASOPT| -----------------------------------------------------------------------"
686 WRITE (unit_nr,
'(1X,A,E14.8)')
"BASOPT| Total residuum value: ", opt_bas%powell_param%f
687 WRITE (unit_nr,
'(A)')
""
689 CALL timestop(handle)
690 END SUBROUTINE output_opt_info
void update_basis_set(const int nkinds, const grid_basis_set **const basis_sets, grid_context *data)
methods related to the blacs parallel environment
DBCSR operations in CP2K.
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
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
interface to use cp2k as library
recursive subroutine, public destroy_force_env(env_id, ierr, q_finalize)
deallocates the force_env with the given id
subroutine, public f_env_get_from_id(f_env_id, f_env)
...
subroutine, public f_env_add_defaults(f_env_id, f_env, handle)
adds the default environments of the f_env to the stack of the defaults, and returns a new error and ...
recursive subroutine, public create_force_env(new_env_id, input_declaration, input_path, output_path, mpi_comm, output_unit, owns_out_unit, input, ierr, work_dir, initial_variables)
creates a new force environment using the given input, and writing the output to the given output uni...
subroutine, public f_env_rm_defaults(f_env, ierr, handle)
removes the default environments of the f_env to the stack of the defaults, and sets ierr accordingly...
Interface for the force calculations.
recursive subroutine, public force_env_get(force_env, in_use, fist_env, qs_env, meta_env, fp_env, subsys, para_env, potential_energy, additional_potential, kinetic_energy, harmonic_shell, kinetic_shell, cell, sub_force_env, qmmm_env, qmmmx_env, eip_env, pwdft_env, globenv, input, force_env_section, method_name_id, root_section, mixed_env, nnp_env, embed_env)
returns various attributes about the force environment
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_path_length
Machine interface based on Fortran 2003 and POSIX.
subroutine, public m_getcwd(curdir)
...
subroutine, public m_chdir(dir, ierror)
...
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.
subroutine, public mp_para_env_release(para_env)
releases the para object (to be called when you don't want anymore the shared copy of this object)
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)
...
subroutine, public optbas_build_neighborlist(qs_env, sab_aux, sab_aux_orb, basis_type)
rebuilds neighborlist for absis sets
subroutine, public fit_mo_coeffs(saux, sauxorb, mos, mosaux)
...
subroutine, public evaluate_optvals(mos, mos_aux_fit, matrix_ks, Q, Snew, S_inv_orb, fval, energy, S_cond_number)
...
subroutine, public deallocate_basis_optimization_type(opt_bas)
Deallocate everything which was allocated before. Note not all arrays are used depending on the type ...
subroutine, public get_set_and_basis_id(calc_id, opt_bas, set_id, bas_id)
returns a mapping from the calculation id to the trainings set id and basis combination id
subroutine, public optimize_basis_init_read_input(opt_bas, root_section, para_env)
initialize all parts of the optimization type and read input settings
subroutine, public update_derived_basis_sets(opt_bas, write_it, output_file, para_env)
Regenerate the basis sets from reference 0 after an update from the optimizer to reference was perfor...
subroutine, public run_optimize_basis(input_declaration, root_section, para_env)
main entry point for methods aimed at optimizing basis sets
subroutine, public powell_optimize(n, x, optstate)
...
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_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, 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, rhs)
Get the QUICKSTEP environment.
subroutine, public qs_env_part_release(qs_env)
releases part of the given qs_env in order to save memory
Define the quickstep kind type and their sub types.
subroutine, public get_qs_kind_set(qs_kind_set, all_potential_present, tnadd_potential_present, gth_potential_present, sgp_potential_present, paw_atom_present, dft_plus_u_atom_present, maxcgf, maxsgf, maxco, maxco_proj, maxgtops, maxlgto, maxlprj, maxnset, maxsgf_set, ncgf, npgf, nset, nsgf, nshell, maxpol, maxlppl, maxlppnl, maxppnl, nelectron, maxder, max_ngrid_rad, max_sph_harm, maxg_iso_not0, lmax_rho0, basis_rcut, basis_type, total_zeff_corr)
Get attributes of an atomic kind set.
subroutine, public get_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_RI_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_RI_aux_kp, matrix_ks_im_kp, rho, rho_xc, vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, task_list, task_list_soft, kpoints, do_kpoints, atomic_kind_set, qs_kind_set, cell, cell_ref, use_ref_cell, particle_set, energy, force, local_particles, local_molecules, molecule_kind_set, molecule_set, subsys, cp_subsys, virial, results, atprop, nkind, natom, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env, nelectron_total, nelectron_spin)
...
subroutine, public set_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_RI_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_RI_aux_kp, matrix_ks_im_kp, vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, kpoints, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
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.
subroutine, public release_neighbor_list_sets(nlists)
releases an array of neighbor_list_sets
Generate the atomic neighbor lists.
subroutine, public build_qs_neighbor_lists(qs_env, para_env, molecular, force_env_section)
Build all the required neighbor lists for Quickstep.
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.