54#include "../base/base_uses.f90"
60 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'mimic_communicator'
70 TYPE(mp_para_env_type),
POINTER :: para_env => null()
71 LOGICAL :: is_ionode = .false.
72 INTEGER :: mcl_server = 0, &
82 INTEGER :: n_atoms = -1, &
85 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: npts_pproc
87 INTEGER,
DIMENSION(:),
ALLOCATABLE :: lb_pproc
93 PROCEDURE :: receive_request
94 PROCEDURE :: send_value
95 PROCEDURE :: send_client_info
96 PROCEDURE :: send_atom_info
97 PROCEDURE :: send_kind_info
98 PROCEDURE :: send_box_info
99 PROCEDURE :: send_result
100 PROCEDURE :: send_grid_coordinates
101 PROCEDURE :: send_density
102 PROCEDURE :: send_forces
103 PROCEDURE :: send_positions
104 PROCEDURE :: receive_positions
105 PROCEDURE :: receive_potential
122 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':initialize'
131 CALL timeset(routinen, handle)
135 NULLIFY (subsys, qs_env, ks_env, pw_env)
136 this%force_env => force_env
137 CALL force_env_get(this%force_env, subsys=subsys, para_env=this%para_env, qs_env=qs_env)
138 CALL cp_subsys_get(subsys, natom=this%n_atoms, particles=this%atoms, &
139 nkind=this%n_kinds, atomic_kinds=this%kinds)
140 CALL get_qs_env(qs_env, energy=this%energy, vee=this%potential, rho=this%density, &
141 dft_control=dft_control, ks_env=ks_env, pw_env=pw_env)
142 CALL pw_env_get(pw_env, auxbas_pw_pool=this%pw_info)
144 this%is_ionode = this%para_env%is_source()
146 ALLOCATE (this%npts_pproc(3, 0:this%para_env%num_pe - 1), source=0)
147 this%npts_pproc(:, this%para_env%mepos) = this%pw_info%pw_grid%npts_local
148 CALL this%para_env%sum(this%npts_pproc)
150 ALLOCATE (this%lb_pproc(0:this%para_env%num_pe - 1), source=0)
151 this%lb_pproc(this%para_env%mepos) = this%pw_info%pw_grid%bounds_local(1, 1) &
152 - this%pw_info%pw_grid%bounds(1, 1)
153 CALL this%para_env%sum(this%lb_pproc)
155 this%n_spins = dft_control%nspins
158 dft_control%apply_external_potential = .true.
159 dft_control%eval_external_potential = .false.
162 IF (
ASSOCIATED(this%potential))
THEN
163 CALL this%potential%release()
164 DEALLOCATE (this%potential)
166 ALLOCATE (this%potential)
167 CALL this%pw_info%create_pw(this%potential)
170 CALL timestop(handle)
178 SUBROUTINE finalize(this)
181 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':finalize'
185 CALL timeset(routinen, handle)
187 CALL this%para_env%sync()
191 CALL timestop(handle)
193 END SUBROUTINE finalize
200 FUNCTION receive_request(this)
RESULT(request)
204 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':receive_request'
208 CALL timeset(routinen, handle)
212 CALL this%para_env%bcast(request)
214 CALL timestop(handle)
216 END FUNCTION receive_request
224 SUBROUTINE send_value(this, option)
226 CHARACTER(LEN=*) :: option
228 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':send_value'
233 CALL timeset(routinen, handle)
236 CASE (
"num_atoms",
"num_atoms_in_fragments")
240 CASE (
"num_fragments")
247 energy = this%energy%total - this%energy%ee
250 cpabort(
"The value chosen in "//routinen//
" is not implemented.")
253 CALL timestop(handle)
255 END SUBROUTINE send_value
262 SUBROUTINE send_client_info(this, option)
264 CHARACTER(LEN=*) :: option
266 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':send_client_info'
268 CHARACTER(LEN=*),
PARAMETER :: client_name =
"CP2K"
269 INTEGER,
DIMENSION(3) :: api_version
270 INTEGER :: handle, length
272 CALL timeset(routinen, handle)
278 length = len(client_name)
287 cpabort(
"The value chosen in "//routinen//
" is not implemented.")
290 CALL timestop(handle)
292 END SUBROUTINE send_client_info
299 SUBROUTINE send_atom_info(this, option)
301 CHARACTER(LEN=*) :: option
303 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':send_atom_info'
305 INTEGER,
DIMENSION(:),
ALLOCATABLE :: buffer
308 CALL timeset(routinen, handle)
310 ALLOCATE (buffer(this%n_atoms))
313 DO i = 1, this%n_atoms
314 buffer(i) = this%atoms%els(i)%atomic_kind%kind_number
317 DO i = 1, this%n_atoms
318 buffer(i) = this%atoms%els(i)%atom_index
321 cpabort(
"The value chosen in "//routinen//
" is not implemented.")
325 CALL timestop(handle)
327 END SUBROUTINE send_atom_info
334 SUBROUTINE send_kind_info(this, option)
336 CHARACTER(LEN=*) :: option
338 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':send_kind_info'
342 REAL(dp),
DIMENSION(:),
ALLOCATABLE :: buffer_dp
343 INTEGER,
DIMENSION(:),
ALLOCATABLE :: buffer_i
344 CHARACTER(LEN=:),
ALLOCATABLE :: labels
345 CHARACTER(LEN=default_string_length) :: label
346 INTEGER :: handle, length, i
348 CALL timeset(routinen, handle)
352 ALLOCATE (
CHARACTER(30*this%n_kinds) :: labels)
354 DO i = 1, this%n_kinds
356 labels = trim(labels)//trim(label)//
","
358 length = len(trim(labels)) - 1
362 ALLOCATE (buffer_i(this%n_kinds))
363 DO i = 1, this%n_kinds
368 ALLOCATE (buffer_dp(this%n_kinds))
369 DO i = 1, this%n_kinds
373 CASE (
"nuclear_charges")
374 NULLIFY (qs_env, qs_kinds)
377 ALLOCATE (buffer_dp(this%n_kinds))
378 DO i = 1, this%n_kinds
383 cpabort(
"The value chosen in "//routinen//
" is not implemented.")
386 CALL timestop(handle)
388 END SUBROUTINE send_kind_info
395 SUBROUTINE send_box_info(this, option)
397 CHARACTER(LEN=*) :: option
399 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':send_box_info'
401 INTEGER,
DIMENSION(3) :: npts_glob
402 REAL(dp),
DIMENSION(3) :: origin
403 REAL(dp),
DIMENSION(9) :: box_vectors
406 CALL timeset(routinen, handle)
408 npts_glob = this%pw_info%pw_grid%npts
411 CASE (
"num_gridpoints")
417 box_vectors = [(this%pw_info%pw_grid%dh(:, i)*real(npts_glob(i), dp), i=1, 3)]
420 cpabort(
"The value chosen in "//routinen//
" is not implemented.")
423 CALL timestop(handle)
425 END SUBROUTINE send_box_info
432 SUBROUTINE send_result(this, option)
434 CHARACTER(LEN=*) :: option
436 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':send_result'
440 CHARACTER(LEN=default_string_length) :: description
441 REAL(KIND=
dp),
DIMENSION(:),
ALLOCATABLE :: buffer
444 CALL timeset(routinen, handle)
446 NULLIFY (qs_env, results)
451 CASE (
"hirshfeld_charges")
452 description =
"[HIRSHFELD-CHARGES]"
453 ALLOCATE (buffer(this%n_atoms), source=0.0_dp)
457 cpabort(
"The value chosen in "//routinen//
" is not implemented.")
460 CALL timestop(handle)
462 END SUBROUTINE send_result
468 SUBROUTINE send_grid_coordinates(this)
471 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':send_grid_coordinates'
473 INTEGER,
DIMENSION(3) :: npts_glob, npts, lb_glob, lb, ub
474 REAL(dp),
DIMENSION(3) :: origin
475 REAL(dp),
DIMENSION(3, 3) :: box_vectors
476 REAL(dp),
DIMENSION(:, :),
ALLOCATABLE :: coords
477 INTEGER :: handle, i, j, k, offset
479 CALL timeset(routinen, handle)
482 box_vectors = this%pw_info%pw_grid%dh
484 npts_glob = this%pw_info%pw_grid%npts
485 npts = this%pw_info%pw_grid%npts_local
487 lb_glob = this%pw_info%pw_grid%bounds(1, :)
488 lb = this%pw_info%pw_grid%bounds_local(1, :)
489 ub = this%pw_info%pw_grid%bounds_local(2, :)
491 ALLOCATE (coords(3, product(npts_glob)), source=0.0_dp)
492 offset = (lb(1) - lb_glob(1))*product(npts(2:))
497 coords(:, offset) = origin + box_vectors(:, 1)*real(i - lb_glob(1), dp) &
498 + box_vectors(:, 2)*real(j - lb_glob(2), dp) &
499 + box_vectors(:, 3)*real(k - lb_glob(3), dp)
503 CALL this%para_env%sum(coords)
507 CALL timestop(handle)
509 END SUBROUTINE send_grid_coordinates
515 SUBROUTINE receive_potential(this)
518 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':receive_potential'
520 INTEGER,
DIMENSION(3) :: npts, lb, ub
521 REAL(dp),
DIMENSION(:),
ALLOCATABLE,
TARGET :: buffer
522 REAL(dp),
DIMENSION(:),
ALLOCATABLE :: buffer_loc
523 REAL(dp),
DIMENSION(:),
POINTER :: buffer_p
524 INTEGER :: i, j, k, i_proc, offset
525 INTEGER :: handle, length, tag
527 CALL timeset(routinen, handle)
530 npts = this%pw_info%pw_grid%npts_local
531 lb = this%pw_info%pw_grid%bounds_local(1, :)
532 ub = this%pw_info%pw_grid%bounds_local(2, :)
533 ALLOCATE (buffer_loc(product(npts)))
537 IF (this%is_ionode)
THEN
538 ALLOCATE (buffer(product(this%pw_info%pw_grid%npts)))
542 DO i_proc = 0, this%para_env%num_pe - 1
543 length = product(this%npts_pproc(:, i_proc))
544 offset = this%lb_pproc(i_proc)*product(npts(2:)) + 1
545 buffer_p => buffer(offset:offset + length - 1)
546 IF (i_proc /= this%para_env%source)
THEN
548 CALL this%para_env%send(buffer_p, i, tag)
550 buffer_loc(:) = buffer_p
554 CALL this%para_env%recv(buffer_loc, this%para_env%source, tag)
563 this%potential%array(i, j, k) = -buffer_loc(offset)
568 CALL timestop(handle)
570 END SUBROUTINE receive_potential
576 SUBROUTINE send_density(this)
579 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':send_density'
581 INTEGER,
DIMENSION(3) :: npts, lb, ub
583 REAL(dp),
DIMENSION(:),
ALLOCATABLE,
TARGET :: buffer
584 REAL(dp),
DIMENSION(:),
ALLOCATABLE :: buffer_loc
585 REAL(dp),
DIMENSION(:),
POINTER :: buffer_p
586 INTEGER :: i_spin, i_proc, i, j, k, offset
587 INTEGER :: handle, length, tag
589 CALL timeset(routinen, handle)
591 NULLIFY (rho, buffer_p)
593 npts = this%pw_info%pw_grid%npts_local
594 lb = this%pw_info%pw_grid%bounds_local(1, :)
595 ub = this%pw_info%pw_grid%bounds_local(2, :)
596 ALLOCATE (buffer_loc(product(npts)))
600 DO i_spin = 1, this%n_spins
606 buffer_loc(offset) = buffer_loc(offset) + rho(i_spin)%array(i, j, k)
614 IF (.NOT. this%is_ionode)
THEN
615 CALL this%para_env%send(buffer_loc, this%para_env%source, tag)
617 ALLOCATE (buffer(product(this%pw_info%pw_grid%npts)))
619 DO i_proc = 0, this%para_env%num_pe - 1
620 length = product(this%npts_pproc(:, i_proc))
621 offset = this%lb_pproc(i_proc)*product(npts(2:)) + 1
622 buffer_p => buffer(offset:offset + length - 1)
623 IF (i_proc /= this%para_env%source)
THEN
625 CALL this%para_env%recv(buffer_p, i, tag)
627 buffer_p = buffer_loc
634 CALL timestop(handle)
636 END SUBROUTINE send_density
642 SUBROUTINE send_positions(this)
645 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':send_positions'
647 REAL(dp),
DIMENSION(:, :),
ALLOCATABLE :: buffer
648 INTEGER :: handle, i_atom
650 CALL timeset(routinen, handle)
652 ALLOCATE (buffer(3, this%n_atoms))
653 DO i_atom = 1, this%n_atoms
654 buffer(:, i_atom) = this%atoms%els(i_atom)%r
658 CALL timestop(handle)
660 END SUBROUTINE send_positions
666 SUBROUTINE receive_positions(this)
669 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':receive_positions'
671 REAL(dp),
DIMENSION(:, :),
ALLOCATABLE :: buffer
672 INTEGER :: handle, i_atom
674 CALL timeset(routinen, handle)
676 ALLOCATE (buffer(3, this%n_atoms))
678 CALL this%para_env%bcast(buffer)
679 DO i_atom = 1, this%n_atoms
680 this%atoms%els(i_atom)%r = buffer(:, i_atom)
683 CALL timestop(handle)
685 END SUBROUTINE receive_positions
691 SUBROUTINE send_forces(this)
694 CHARACTER(LEN=*),
PARAMETER :: routineN = modulen//
':send_forces'
696 REAL(dp),
DIMENSION(:, :),
ALLOCATABLE :: buffer
697 INTEGER :: handle, i_atom
699 CALL timeset(routinen, handle)
701 ALLOCATE (buffer(3, this%n_atoms))
702 DO i_atom = 1, this%n_atoms
703 buffer(:, i_atom) = this%atoms%els(i_atom)%f
707 CALL timestop(handle)
709 END SUBROUTINE send_forces
represent a simple array based list of the given type
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.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
set of type/routines to handle the storage of results in force_envs
set of type/routines to handle the storage of results in force_envs
types that represent a subsys, i.e. a part of the system
subroutine, public cp_subsys_get(subsys, ref_count, atomic_kinds, atomic_kind_set, particles, particle_set, local_particles, molecules, molecule_set, molecule_kinds, molecule_kind_set, local_molecules, para_env, colvar_p, shell_particles, core_particles, gci, multipoles, natom, nparticle, ncore, nshell, nkind, atprop, virial, results, cell)
returns information about various attributes of the given subsys
real(kind=dp) function, public cp_unit_from_cp2k(value, unit_str, defaults, power)
converts from the internal cp2k units to the given unit
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, ipi_env)
returns various attributes about the force environment
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Wrapper module for MiMiC Communication Library (MCL) routines.
subroutine, public mcl_finalize()
subroutine, public mcl_get_program_id(id)
subroutine, public mcl_get_api_version(version)
Wrapper module for MiMiC Communication Library (MCL) request labels.
integer, parameter, public mcl_request
integer, parameter, public mcl_data
integer, parameter, public mcl_runtype_qm_rs_grid
integer, parameter, public mcl_length
Interface to the message passing library MPI.
Module containing a MiMiC communicator class.
subroutine initialize(this, force_env)
Initialize the communicator by loading data and saving pointers to relevant data.
represent a simple array based list of the given type
container for various plainwaves related things
subroutine, public pw_env_get(pw_env, pw_pools, cube_info, gridlevel_info, auxbas_pw_pool, auxbas_grid, auxbas_rs_desc, auxbas_rs_grid, rs_descs, rs_grids, xc_pw_pool, vdw_pw_pool, poisson_env, interp_section)
returns the various attributes of the pw env
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
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, 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.
subroutine, public set_qs_env(qs_env, super_cell, mos, qmmm, qmmm_periodic, mimic, ewald_env, ewald_pw, mpools, rho_external, external_vxc, mask, scf_control, rel_control, qs_charges, ks_env, ks_qmmm_env, wf_history, scf_env, active_space, input, oce, rho_atom_set, rho0_atom_set, rho0_mpole, run_rtp, rtp, rhoz_set, rhoz_tot, ecoul_1c, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, efield, rhoz_cneo_set, linres_control, xas_env, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, ls_scf_env, do_transport, transport_env, lri_env, lri_density, exstate_env, ec_env, dispersion_env, harris_env, gcp_env, mp2_env, bs_env, kg_env, force, kpoints, wanniercentres, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs, do_rixs, tb_tblite)
Set the QUICKSTEP environment.
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, cneo_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, monovalent, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
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_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
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...
represent a list of objects
contains arbitrary information which need to be stored
represents a system: atoms, molecules, their pos,vel,...
wrapper to abstract the force evaluation of the various methods
stores all the informations relevant to an mpi environment
MiMiC communicator class that facilitates MiMiC client-server data exchange.
represent a list of objects
contained for different pw related things
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
Provides all information about a quickstep kind.
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.