72#include "./base/base_uses.f90"
78 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'kg_environment'
101 CALL init_kg_env(qs_env, kg_env, qs_kind_set, input)
115 SUBROUTINE init_kg_env(qs_env, kg_env, qs_kind_set, input)
118 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
121 CHARACTER(LEN=*),
PARAMETER :: routinen =
'init_kg_env'
123 CHARACTER(LEN=10) :: intgrid
124 INTEGER :: handle, i, iatom, ib, ikind, iunit, n, &
125 na, natom, nbatch, nkind, np, nr
126 INTEGER,
ALLOCATABLE,
DIMENSION(:, :) :: bid
127 REAL(kind=
dp) :: load, radb, rmax
135 CALL timeset(routinen, handle)
140 NULLIFY (kg_env%sab_orb_full)
141 NULLIFY (kg_env%sac_kin)
142 NULLIFY (kg_env%subset_of_mol)
143 NULLIFY (kg_env%subset)
144 NULLIFY (kg_env%tnadd_mat)
145 NULLIFY (kg_env%lri_env)
146 NULLIFY (kg_env%lri_env1)
147 NULLIFY (kg_env%int_grid_atom)
148 NULLIFY (kg_env%int_grid_molecules)
149 NULLIFY (kg_env%int_grid_full)
150 NULLIFY (kg_env%lri_density)
151 NULLIFY (kg_env%lri_rho1)
160 SELECT CASE (kg_env%tnadd_method)
164 IF (.NOT.
ASSOCIATED(kg_env%xc_section_kg))
THEN
165 CALL cp_abort(__location__, &
166 "KG runs require a kinetic energy functional set in &KG_METHOD")
169 NULLIFY (kg_env%xc_section_kg)
171 cpabort(
"KG:TNADD METHOD")
178 nkind =
SIZE(qs_kind_set)
180 qs_kind => qs_kind_set(ikind)
181 NULLIFY (lri_aux_basis)
182 CALL get_qs_kind(qs_kind, basis_set=lri_aux_basis, basis_type=
"LRI_AUX")
183 cpassert(
ASSOCIATED(lri_aux_basis))
185 rmax = max(rmax, radb)
190 CALL lri_env_basis(
"LRI", qs_env, kg_env%lri_env, qs_kind_set)
196 CALL lri_env_basis(
"LRI", qs_env, kg_env%lri_env1, qs_kind_set)
202 SELECT CASE (intgrid)
216 cpabort(
"KG:INTEGRATION_GRID")
223 CALL get_qs_env(qs_env=qs_env, natom=natom, para_env=para_env)
225 load = real(natom, kind=
dp)*kg_env%int_grid_atom%ntot/real(np, kind=
dp)
228 ig_full => kg_env%int_grid_full
230 ig_mol => kg_env%int_grid_molecules
231 nbatch = (natom*kg_env%int_grid_atom%nbatch)/np
232 nbatch = nint((nbatch + 1)*1.2_dp)
233 ALLOCATE (bid(2, nbatch))
236 DO ib = 1, kg_env%int_grid_atom%nbatch
237 IF (para_env%mepos == mod(iatom + ib, np))
THEN
239 cpassert(nbatch <=
SIZE(bid, 2))
240 bid(1, nbatch) = iatom
246 ig_full%nbatch = nbatch
247 ALLOCATE (ig_full%grid_batch(nbatch))
249 ig_mol%nbatch = nbatch
250 ALLOCATE (ig_mol%grid_batch(nbatch))
256 ig_full%grid_batch(i)%ref_atom = iatom
257 ig_full%grid_batch(i)%ibatch = ib
258 ig_full%grid_batch(i)%np = kg_env%int_grid_atom%batch(ib)%np
259 ig_full%grid_batch(i)%radius = kg_env%int_grid_atom%batch(ib)%rad
260 ig_full%grid_batch(i)%rcenter(1:3) = kg_env%int_grid_atom%batch(ib)%rcenter(1:3)
261 n = ig_full%grid_batch(i)%np
262 ALLOCATE (ig_full%grid_batch(i)%rco(3, n))
263 ALLOCATE (ig_full%grid_batch(i)%weight(n))
264 ALLOCATE (ig_full%grid_batch(i)%wref(n))
265 ALLOCATE (ig_full%grid_batch(i)%wsum(n))
266 ig_full%grid_batch(i)%weight(:) = kg_env%int_grid_atom%batch(ib)%weight(:)
268 ig_mol%grid_batch(i)%ref_atom = iatom
269 ig_mol%grid_batch(i)%ibatch = ib
270 ig_mol%grid_batch(i)%np = kg_env%int_grid_atom%batch(ib)%np
271 ig_mol%grid_batch(i)%radius = kg_env%int_grid_atom%batch(ib)%rad
272 ig_mol%grid_batch(i)%rcenter(1:3) = kg_env%int_grid_atom%batch(ib)%rcenter(1:3)
273 n = ig_mol%grid_batch(i)%np
274 ALLOCATE (ig_mol%grid_batch(i)%rco(3, n))
275 ALLOCATE (ig_mol%grid_batch(i)%weight(n))
276 ALLOCATE (ig_mol%grid_batch(i)%wref(n))
277 ALLOCATE (ig_mol%grid_batch(i)%wsum(n))
278 ig_mol%grid_batch(i)%weight(:) = kg_env%int_grid_atom%batch(ib)%weight(:)
284 CALL timestop(handle)
286 END SUBROUTINE init_kg_env
302 molecular, subset_of_mol, current_subset)
305 OPTIONAL,
POINTER :: sab_orb, sac_kin
306 LOGICAL,
OPTIONAL :: molecular
307 INTEGER,
DIMENSION(:),
OPTIONAL,
POINTER :: subset_of_mol
308 INTEGER,
OPTIONAL :: current_subset
310 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_build_neighborlist'
312 INTEGER :: handle, ikind, nkind
313 LOGICAL :: mic, molecule_only
314 LOGICAL,
ALLOCATABLE,
DIMENSION(:) :: orb_present, tpot_present
316 REAL(
dp),
ALLOCATABLE,
DIMENSION(:) :: orb_radius, tpot_radius
317 REAL(
dp),
ALLOCATABLE,
DIMENSION(:, :) :: pair_radius
328 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
331 CALL timeset(routinen, handle)
335 molecule_only = .false.
336 IF (
PRESENT(molecular)) molecule_only = molecular
341 atomic_kind_set=atomic_kind_set, &
342 qs_kind_set=qs_kind_set, &
344 distribution_2d=distribution_2d, &
345 molecule_set=molecule_set, &
346 local_particles=distribution_1d, &
347 particle_set=particle_set, &
353 nkind =
SIZE(atomic_kind_set)
354 ALLOCATE (orb_radius(nkind), tpot_radius(nkind))
355 orb_radius(:) = 0.0_dp
356 tpot_radius(:) = 0.0_dp
357 ALLOCATE (orb_present(nkind), tpot_present(nkind))
358 ALLOCATE (pair_radius(nkind, nkind))
359 ALLOCATE (atom2d(nkind))
361 CALL atom2d_build(atom2d, distribution_1d, distribution_2d, atomic_kind_set, &
362 molecule_set, molecule_only, particle_set=particle_set)
365 CALL get_atomic_kind(atomic_kind_set(ikind), atom_list=atom2d(ikind)%list)
366 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
367 IF (
ASSOCIATED(orb_basis_set))
THEN
368 orb_present(ikind) = .true.
369 IF (
PRESENT(subset_of_mol))
THEN
370 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, kind_radius=orb_radius(ikind))
372 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, short_kind_radius=orb_radius(ikind))
375 orb_present(ikind) = .false.
376 orb_radius(ikind) = 0.0_dp
380 IF (
PRESENT(sab_orb))
THEN
382 CALL pair_radius_setup(orb_present, orb_present, orb_radius, orb_radius, pair_radius)
383 IF (
PRESENT(subset_of_mol))
THEN
385 mic=mic, subcells=subcells, molecular=molecule_only, subset_of_mol=subset_of_mol, &
386 current_subset=current_subset, nlname=
"sab_orb")
389 mic=mic, subcells=subcells, molecular=molecule_only, nlname=
"sab_orb")
393 IF (molecule_only)
THEN
395 "/SAB_ORB_MOLECULAR",
"sab_orb",
"MOLECULAR SUBSET NEIGHBORLIST")
398 "/SAB_ORB_FULL",
"sab_orb",
"FULL NEIGHBORLIST")
402 IF (
PRESENT(sac_kin))
THEN
404 tpot_present(ikind) = .false.
405 CALL get_qs_kind(qs_kind_set(ikind), tnadd_potential=tnadd_potential)
406 IF (
ASSOCIATED(tnadd_potential))
THEN
407 CALL get_potential(potential=tnadd_potential, radius=tpot_radius(ikind))
408 tpot_present(ikind) = .true.
411 CALL pair_radius_setup(orb_present, tpot_present, orb_radius, tpot_radius, pair_radius)
413 subcells=subcells, operator_type=
"ABC", nlname=
"sac_kin")
415 "DFT%KG_METHOD%PRINT%NEIGHBOR_LISTS")
417 "/SAC_KIN",
"sac_kin",
"ORBITAL kin energy potential")
423 DEALLOCATE (orb_present, tpot_present)
424 DEALLOCATE (orb_radius, tpot_radius)
425 DEALLOCATE (pair_radius)
427 CALL timestop(handle)
440 SUBROUTINE kg_remove_duplicates(pairs_buffer, n)
441 INTEGER(KIND=int_4),
DIMENSION(:, :), &
442 INTENT(INOUT) :: pairs_buffer
443 INTEGER,
INTENT(INOUT) :: n
445 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_remove_duplicates'
447 INTEGER :: handle, i, npairs
448 INTEGER,
DIMENSION(n) :: ind
449 INTEGER(KIND=int_8),
DIMENSION(n) :: sort_keys
450 INTEGER(KIND=int_4),
DIMENSION(2, n) :: work
452 CALL timeset(routinen, handle)
456 sort_keys(1:n) = ishft(int(pairs_buffer(1, 1:n), kind=
int_8), 8*
int_4_size)
457 sort_keys(1:n) = sort_keys(1:n) + pairs_buffer(2, 1:n)
458 CALL sort(sort_keys, n, ind)
462 work(:, 1) = pairs_buffer(:, ind(1))
466 IF (sort_keys(i) /= sort_keys(i - 1))
THEN
468 work(:, npairs) = pairs_buffer(:, ind(i))
473 pairs_buffer(:, :n) = work(:, :n)
476 CALL timestop(handle)
478 END SUBROUTINE kg_remove_duplicates
495 SUBROUTINE write_to_file(pairs, nnodes)
496 INTEGER(KIND=int_4),
ALLOCATABLE, &
497 DIMENSION(:, :),
INTENT(IN) :: pairs
498 INTEGER,
INTENT(IN) :: nnodes
500 CHARACTER(LEN=*),
PARAMETER :: routinen =
'write_to_file'
502 INTEGER :: handle, i, imol, jmol, npairs, unit_nr
503 INTEGER(KIND=int_4),
ALLOCATABLE,
DIMENSION(:, :) :: sorted_pairs
505 CALL timeset(routinen, handle)
508 npairs =
SIZE(pairs, 2)
510 ALLOCATE (sorted_pairs(2, npairs))
517 IF (imol > jmol)
THEN
519 sorted_pairs(1, i) = jmol
520 sorted_pairs(2, i) = imol
523 sorted_pairs(1, i) = imol
524 sorted_pairs(2, i) = jmol
529 CALL kg_remove_duplicates(sorted_pairs, npairs)
532 cpassert(npairs ==
SIZE(pairs, 2)/2)
534 CALL open_file(unit_number=unit_nr, file_name=
"graph.col")
536 WRITE (unit_nr,
'(A6,1X,I8,1X,I8)')
"p edge", nnodes, npairs
540 WRITE (unit_nr,
'(A1,1X,I8,1X,I8)')
"e", sorted_pairs(1, i), sorted_pairs(2, i)
545 DEALLOCATE (sorted_pairs)
547 CALL timestop(handle)
549 END SUBROUTINE write_to_file
560 CHARACTER(LEN=*),
PARAMETER :: routinen =
'kg_build_subsets'
562 INTEGER :: color, handle, i, iatom, imol, isub, &
563 jatom, jmol, nmol, npairs, npairs_local
564 INTEGER(KIND=int_4) :: ncolors
565 INTEGER(KIND=int_4),
ALLOCATABLE,
DIMENSION(:) :: color_of_node
566 INTEGER(KIND=int_4),
ALLOCATABLE,
DIMENSION(:, :) :: msg_gather, pairs, pairs_buffer
567 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: nnodes_of_color
569 DIMENSION(:),
POINTER :: nl_iterator
571 CALL timeset(routinen, handle)
574 nmol =
SIZE(kg_env%molecule_set)
581 imol = kg_env%atom_to_molecule(iatom)
582 jmol = kg_env%atom_to_molecule(jatom)
585 IF (imol .NE. jmol)
THEN
594 ALLOCATE (pairs_buffer(2, npairs))
601 imol = kg_env%atom_to_molecule(iatom)
602 jmol = kg_env%atom_to_molecule(jatom)
604 IF (imol .NE. jmol)
THEN
611 pairs_buffer(1, npairs) = imol
612 pairs_buffer(2, npairs) = jmol
616 pairs_buffer(2, npairs) = imol
617 pairs_buffer(1, npairs) = jmol
625 CALL kg_remove_duplicates(pairs_buffer, npairs)
629 npairs_local = npairs
630 CALL para_env%max(npairs)
633 ALLOCATE (pairs(2, npairs))
635 pairs(:, 1:npairs_local) = pairs_buffer(:, 1:npairs_local)
636 pairs(:, npairs_local + 1:) = 0
638 DEALLOCATE (pairs_buffer)
644 IF (para_env%is_source())
THEN
645 ALLOCATE (msg_gather(2, npairs*para_env%num_pe))
647 ALLOCATE (msg_gather(2, 1))
652 CALL para_env%gather(pairs, msg_gather)
656 IF (para_env%is_source())
THEN
661 DO i = 1,
SIZE(msg_gather, 2)
662 IF (msg_gather(1, i) .NE. 0)
THEN
664 msg_gather(:, npairs) = msg_gather(:, i)
669 CALL kg_remove_duplicates(msg_gather, npairs)
671 ALLOCATE (pairs(2, npairs))
673 pairs(:, 1:npairs) = msg_gather(:, 1:npairs)
675 DEALLOCATE (msg_gather)
681 CALL write_to_file(pairs,
SIZE(kg_env%molecule_set))
691 DEALLOCATE (msg_gather)
698 CALL para_env%bcast(ncolors)
700 IF (.NOT.
ALLOCATED(color_of_node))
ALLOCATE (color_of_node(nmol))
703 CALL para_env%bcast(color_of_node)
705 IF ((kg_env%nsubsets .NE. 0) .AND. (ncolors .NE. kg_env%nsubsets))
THEN
709 IF (
ASSOCIATED(kg_env%subset))
THEN
710 DO isub = 1, kg_env%nsubsets
714 DEALLOCATE (kg_env%subset)
715 NULLIFY (kg_env%subset)
721 IF (.NOT.
ASSOCIATED(kg_env%subset))
THEN
723 ALLOCATE (kg_env%subset(ncolors))
726 NULLIFY (kg_env%subset(i)%sab_orb)
727 NULLIFY (kg_env%subset(i)%task_list)
732 kg_env%nsubsets = ncolors
735 ALLOCATE (nnodes_of_color(ncolors))
738 color = color_of_node(i)
739 kg_env%subset_of_mol(i) = color
740 nnodes_of_color(color) = nnodes_of_color(color) + 1
743 DEALLOCATE (nnodes_of_color)
744 DEALLOCATE (color_of_node)
746 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.
subroutine, public get_gto_basis_set(gto_basis_set, name, aliases, norm_type, kind_radius, ncgf, nset, nsgf, cgf_symbol, sgf_symbol, norm_cgf, set_radius, lmax, lmin, lx, ly, lz, m, ncgf_set, npgf, nsgf_set, nshell, cphi, pgf_radius, sphi, scon, zet, first_cgf, first_sgf, l, last_cgf, last_sgf, n, gcc, maxco, maxl, maxpgf, maxsgf_set, maxshell, maxso, nco_sum, npgf_sum, nshell_sum, maxder, short_kind_radius, npgf_seg_sum)
...
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public andermatt2016
Handles all functions related to the CELL.
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.
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
stores a lists of integer that are local to a processor. The idea is that these integers represent ob...
stores a mapping of 2D info (e.g. matrix) on a 2D processor distribution (i.e. blacs grid) where cpus...
Definition of the atomic potential types.
subroutine, public allocate_intgrid(int_grid)
Initialize integration_grid_type.
Types needed for a Kim-Gordon-like partitioning into molecular subunits.
Routines for a Kim-Gordon-like partitioning into molecular subunits.
subroutine, public kg_env_create(qs_env, kg_env, qs_kind_set, input)
Allocates and intitializes kg_env.
subroutine, public kg_build_neighborlist(qs_env, sab_orb, sac_kin, molecular, subset_of_mol, current_subset)
builds either the full neighborlist or neighborlists of molecular
subroutine, public kg_build_subsets(kg_env, para_env)
...
Routines for a Kim-Gordon-like partitioning into molecular subunits unsing a vertex coloring algorith...
subroutine, public kg_vertex_coloring(kg_env, pairs, ncolors, color_of_node)
...
Defines the basic variable types.
integer, parameter, public int_8
integer, parameter, public dp
integer, parameter, public int_4_size
integer, parameter, public int_4
initializes the environment for lri lri : local resolution of the identity
subroutine, public lri_env_init(lri_env, lri_section)
initializes the lri env
subroutine, public lri_env_basis(ri_type, qs_env, lri_env, qs_kind_set)
initializes the lri env
Interface to the message passing library MPI.
Define the data structure for the molecule information.
Define the data structure for the particle information.
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.
subroutine, public initialize_atomic_grid(int_grid, nr, na, rmax, quadrature, iunit)
Initialize atomic grid.
Define the quickstep kind type and their sub types.
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zatom, zeff, elec_conf, mao, lmax_dftb, alpha_core_charge, ccore_charge, core_charge, core_charge_radius, paw_proj_set, paw_atom, hard_radius, hard0_radius, max_rad_local, covalent_radius, vdw_radius, gpw_type_forced, harmonics, max_iso_not0, max_s_harm, grid_atom, ngrid_ang, ngrid_rad, lmax_rho0, dft_plus_u_atom, l_of_dft_plus_u, n_of_dft_plus_u, u_minus_j, u_of_dft_plus_u, j_of_dft_plus_u, alpha_of_dft_plus_u, beta_of_dft_plus_u, j0_of_dft_plus_u, occupation_of_dft_plus_u, dispersion, bs_occupation, magnetization, no_optimize, addel, laddel, naddel, orbitals, max_scf, eps_scf, smear, u_ramping, u_minus_j_target, eps_u_ramping, init_u_ramping_each_scf, reltmat, ghost, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
Define the neighbor list data types and the corresponding functionality.
subroutine, public release_neighbor_list_sets(nlists)
releases an array of neighbor_list_sets
subroutine, public neighbor_list_iterator_create(iterator_set, nl, search, nthread)
Neighbor list iterator functions.
subroutine, public neighbor_list_iterator_release(iterator_set)
...
integer function, public neighbor_list_iterate(iterator_set, mepos)
...
subroutine, public get_iterator_info(iterator_set, mepos, ikind, jkind, nkind, ilist, nlist, inode, nnode, iatom, jatom, r, cell)
...
Generate the atomic neighbor lists.
subroutine, public atom2d_cleanup(atom2d)
free the internals of atom2d
subroutine, public pair_radius_setup(present_a, present_b, radius_a, radius_b, pair_radius, prmin)
...
subroutine, public build_neighbor_lists(ab_list, particle_set, atom, cell, pair_radius, subcells, mic, symmetric, molecular, subset_of_mol, current_subset, operator_type, nlname, atomb_to_keep)
Build simple pair neighbor lists.
subroutine, public write_neighbor_lists(ab, particle_set, cell, para_env, neighbor_list_section, nl_type, middle_name, nlname)
Write a set of neighbor lists to the output unit.
subroutine, public atom2d_build(atom2d, distribution_1d, distribution_2d, atomic_kind_set, molecule_set, molecule_only, particle_set)
Build some distribution structure of atoms, refactored from build_qs_neighbor_lists.
Utilities for string manipulations.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.
subroutine, public deallocate_task_list(task_list)
deallocates the components and the object itself
All kind of helpful little routines.
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
structure to store local (to a processor) ordered lists of integers.
distributes pairs on a 2d grid of processors
Contains all the info needed for KG runs...
stores all the informations relevant to an mpi environment
Provides all information about a quickstep kind.