25 dbcsr_type_antisymmetric,&
77#include "./base/base_uses.f90"
82 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_wannier90'
84 TYPE berry_matrix_type
85 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: sinmat => null(), cosmat => null()
86 END TYPE berry_matrix_type
105 CHARACTER(len=*),
PARAMETER :: routinen =
'wannier90_interface'
107 INTEGER :: handle, iw
113 CALL timeset(routinen, handle)
115 subsection_name=
"DFT%PRINT%WANNIER90")
122 WRITE (iw,
'(/,T2,A)') &
123 '!-----------------------------------------------------------------------------!'
124 WRITE (iw,
'(T32,A)')
"Interface to Wannier90"
125 WRITE (iw,
'(T2,A)') &
126 '!-----------------------------------------------------------------------------!'
129 CALL wannier90_files(qs_env, w_input, iw)
132 WRITE (iw,
'(/,T2,A)') &
133 '!--------------------------------End of Wannier90-----------------------------!'
136 CALL timestop(handle)
146 SUBROUTINE wannier90_files(qs_env, input, iw)
149 INTEGER,
INTENT(IN) :: iw
151 INTEGER,
PARAMETER :: num_nnmax = 12
153 CHARACTER(len=2) :: asym
154 CHARACTER(len=20),
ALLOCATABLE,
DIMENSION(:) :: atom_symbols
155 CHARACTER(LEN=256) :: datx
156 CHARACTER(len=default_string_length) :: filename, seed_name
157 INTEGER :: i, i_rep, ib, ib1, ib2, ibs, ik, ik2, ikk, ikpgr, ispin, iunit, ix, iy, iz, k, &
158 n_rep, nadd, nao, nbs, nexcl, nkp, nmo, nntot, nspins, num_atoms, num_bands, &
159 num_bands_tot, num_kpts, num_wann
160 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: exclude_bands
161 INTEGER,
ALLOCATABLE,
DIMENSION(:, :) :: nblist, nnlist
162 INTEGER,
ALLOCATABLE,
DIMENSION(:, :, :) :: nncell
163 INTEGER,
DIMENSION(2) :: kp_range
164 INTEGER,
DIMENSION(3) :: mp_grid
165 INTEGER,
DIMENSION(:),
POINTER :: invals
166 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index
167 LOGICAL :: diis_step, do_kpoints, gamma_only, &
168 my_kpgrp, mygrp, spinors
169 REAL(kind=
dp) :: cmmn, ksign, rmmn
170 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: eigval
171 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: atoms_cart, b_latt, kpt_latt
172 REAL(kind=
dp),
DIMENSION(3) :: bvec
173 REAL(kind=
dp),
DIMENSION(3, 3) :: real_lattice, recip_lattice
174 REAL(kind=
dp),
DIMENSION(:),
POINTER :: eigenvalues
175 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: xkp
176 TYPE(berry_matrix_type),
DIMENSION(:),
POINTER :: berry_matrix
180 TYPE(
cp_fm_type) :: fm_tmp, mmn_imag, mmn_real
182 TYPE(
cp_fm_type),
POINTER :: fmdummy, fmi, fmr
183 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_ks, matrix_s
206 mp_grid(1:3) = invals(1:3)
207 num_kpts = mp_grid(1)*mp_grid(2)*mp_grid(3)
213 nexcl = nexcl +
SIZE(invals)
216 ALLOCATE (exclude_bands(nexcl))
220 exclude_bands(nexcl + 1:nexcl +
SIZE(invals)) = invals(:)
221 nexcl = nexcl +
SIZE(invals)
227 CALL get_cell(cell, h=real_lattice, h_inv=recip_lattice)
228 real_lattice(1:3, 1:3) =
angstrom*real_lattice(1:3, 1:3)
229 recip_lattice(1:3, 1:3) = (
twopi/
angstrom)*transpose(recip_lattice(1:3, 1:3))
231 ALLOCATE (kpt_latt(3, num_kpts))
232 CALL get_qs_env(qs_env, particle_set=particle_set)
235 kpoint%kp_scheme =
"MONKHORST-PACK"
236 kpoint%symmetry = .false.
237 kpoint%nkp_grid(1:3) = mp_grid(1:3)
238 kpoint%verbose = .false.
239 kpoint%full_grid = .true.
240 kpoint%eps_geo = 1.0e-6_dp
241 kpoint%use_real_wfn = .false.
242 kpoint%parallel_group_size = 0
244 DO ix = 0, mp_grid(1) - 1
245 DO iy = 0, mp_grid(2) - 1
246 DO iz = 0, mp_grid(3) - 1
248 kpt_latt(1, i) = real(ix, kind=
dp)/real(mp_grid(1), kind=
dp)
249 kpt_latt(2, i) = real(iy, kind=
dp)/real(mp_grid(2), kind=
dp)
250 kpt_latt(3, i) = real(iz, kind=
dp)/real(mp_grid(3), kind=
dp)
254 kpoint%nkp = num_kpts
255 ALLOCATE (kpoint%xkp(3, num_kpts), kpoint%wkp(num_kpts))
256 kpoint%wkp(:) = 1._dp/real(num_kpts, kind=
dp)
258 kpoint%xkp(1:3, i) = (
angstrom/
twopi)*matmul(recip_lattice, kpt_latt(:, i))
262 CALL get_mo_set(mo_set=mos(1), nao=nao, nmo=num_bands_tot)
263 num_bands_tot = min(nao, num_bands_tot + nadd)
265 num_atoms =
SIZE(particle_set)
266 ALLOCATE (atoms_cart(3, num_atoms))
267 ALLOCATE (atom_symbols(num_atoms))
269 atoms_cart(1:3, i) = particle_set(i)%r(1:3)
271 atom_symbols(i) = asym
276 ALLOCATE (nnlist(num_kpts, num_nnmax))
277 ALLOCATE (nncell(3, num_kpts, num_nnmax))
284 CALL wannier_setup(mp_grid, num_kpts, real_lattice, recip_lattice, &
285 kpt_latt, nntot, nnlist, nncell, iw)
289 CALL para_env%sum(nntot)
290 CALL para_env%sum(nnlist)
291 CALL para_env%sum(nncell)
293 IF (para_env%is_source())
THEN
295 WRITE (filename,
'(A,A)') trim(seed_name),
".win"
296 CALL open_file(filename, unit_number=iunit, file_status=
"UNKNOWN", file_action=
"WRITE")
299 WRITE (iunit,
"(A)")
"! Wannier90 input file generated by CP2K "
300 WRITE (iunit,
"(A,/)")
"! Creation date "//trim(datx)
302 WRITE (iunit,
"(A,I5)")
"num_wann = ", num_wann
303 IF (num_bands /= num_wann)
THEN
304 WRITE (iunit,
"(A,I5)")
"num_bands = ", num_bands
306 WRITE (iunit,
"(/,A,/)")
"length_unit = bohr "
307 WRITE (iunit,
"(/,A,/)")
"! System"
308 WRITE (iunit,
"(/,A)")
"begin unit_cell_cart"
309 WRITE (iunit,
"(A)")
"bohr"
311 WRITE (iunit,
"(3F12.6)") cell%hmat(i, 1:3)
313 WRITE (iunit,
"(A,/)")
"end unit_cell_cart"
314 WRITE (iunit,
"(/,A)")
"begin atoms_cart"
316 WRITE (iunit,
"(A,3F15.10)") atom_symbols(i), atoms_cart(1:3, i)
318 WRITE (iunit,
"(A,/)")
"end atoms_cart"
319 WRITE (iunit,
"(/,A,/)")
"! Kpoints"
320 WRITE (iunit,
"(/,A,3I6/)")
"mp_grid = ", mp_grid(1:3)
321 WRITE (iunit,
"(A)")
"begin kpoints"
323 WRITE (iunit,
"(3F12.6)") kpt_latt(1:3, i)
325 WRITE (iunit,
"(A)")
"end kpoints"
333 CALL get_qs_env(qs_env, do_kpoints=do_kpoints)
343 WRITE (unit=iw, fmt=
"(/,T2,A)")
"Start K-Point Calculation ..."
345 CALL get_qs_env(qs_env=qs_env_kp, para_env=para_env, blacs_env=blacs_env)
350 CALL get_qs_env(qs_env=qs_env_kp, sab_orb=sab_nl, dft_control=dft_control)
353 CALL get_qs_env(qs_env=qs_env_kp, matrix_ks_kp=matrix_ks, matrix_s_kp=matrix_s, &
354 scf_env=scf_env, scf_control=scf_control)
355 CALL do_general_diag_kp(matrix_ks, matrix_s, kpoint, scf_env, scf_control, .false., diis_step)
358 WRITE (iw,
'(T69,A)')
"... Finished"
363 IF (para_env%is_source())
THEN
364 WRITE (filename,
'(A,A)') trim(seed_name),
".mmn"
365 CALL open_file(filename, unit_number=iunit, file_status=
"UNKNOWN", file_action=
"WRITE")
367 WRITE (iunit,
"(A)")
"! Wannier90 file generated by CP2K "//trim(datx)
368 WRITE (iunit,
"(3I8)") num_bands, num_kpts, nntot
374 ALLOCATE (nblist(num_kpts, nntot))
375 ALLOCATE (b_latt(3, num_kpts*nntot))
380 bvec(1:3) = kpt_latt(1:3, nnlist(ik, i)) - kpt_latt(1:3, ik) + nncell(1:3, ik, i)
383 IF (sum(abs(bvec(1:3) - b_latt(1:3, k))) < 1.e-6_dp)
THEN
387 IF (sum(abs(bvec(1:3) + b_latt(1:3, k))) < 1.e-6_dp)
THEN
398 b_latt(1:3, nbs) = bvec(1:3)
404 ALLOCATE (berry_matrix(nbs))
406 NULLIFY (berry_matrix(i)%cosmat)
407 NULLIFY (berry_matrix(i)%sinmat)
408 bvec(1:3) =
twopi*matmul(transpose(cell%h_inv(1:3, 1:3)), b_latt(1:3, i))
410 berry_matrix(i)%sinmat, bvec)
413 kp => kpoint%kp_env(1)%kpoint_env
415 NULLIFY (matrix_struct_work)
426 NULLIFY (matrix_struct_mmn)
434 ALLOCATE (rmatrix, cmatrix)
435 CALL dbcsr_create(rmatrix, template=matrix_s(1, 1)%matrix, &
436 matrix_type=dbcsr_type_symmetric)
437 CALL dbcsr_create(cmatrix, template=matrix_s(1, 1)%matrix, &
438 matrix_type=dbcsr_type_antisymmetric)
444 nspins = dft_control%nspins
449 my_kpgrp = (ik >= kpoint%kp_range(1) .AND. ik <= kpoint%kp_range(2))
451 ikk = ik - kpoint%kp_range(1) + 1
452 kp => kpoint%kp_env(ikk)%kpoint_env
453 cpassert(
SIZE(kp%mos, 1) == 2)
454 fmr => kp%mos(1, ispin)%mo_coeff
455 fmi => kp%mos(2, ispin)%mo_coeff
459 NULLIFY (fmr, fmi, kp)
467 mygrp = (ik2 >= kpoint%kp_range(1) .AND. ik2 <= kpoint%kp_range(2))
469 ikk = ik2 - kpoint%kp_range(1) + 1
470 kp => kpoint%kp_env(ikk)%kpoint_env
471 cpassert(
SIZE(kp%mos, 1) == 2)
472 fmr => kp%mos(1, ispin)%mo_coeff
473 fmi => kp%mos(2, ispin)%mo_coeff
477 NULLIFY (fmr, fmi, kp)
484 ksign = sign(1.0_dp, real(ibs, kind=
dp))
488 CALL rskp_transform(rmatrix, cmatrix, rsmat=berry_matrix(ibs)%cosmat, ispin=1, &
489 xkp=kpoint%xkp(1:3, ik2), cell_to_index=cell_to_index, sab_nl=sab_nl, &
490 is_complex=.false., rs_sign=ksign)
491 CALL rskp_transform(cmatrix, rmatrix, rsmat=berry_matrix(ibs)%sinmat, ispin=1, &
492 xkp=kpoint%xkp(1:3, ik2), cell_to_index=cell_to_index, sab_nl=sab_nl, &
493 is_complex=.true., rs_sign=ksign)
497 CALL parallel_gemm(
"T",
"N", nmo, nmo, nao, 1.0_dp, fmk1(1), fm_tmp, 0.0_dp, mmn_real)
498 CALL parallel_gemm(
"T",
"N", nmo, nmo, nao, 1.0_dp, fmk1(2), fm_tmp, 0.0_dp, mmn_imag)
500 CALL parallel_gemm(
"T",
"N", nmo, nmo, nao, 1.0_dp, fmk1(1), fm_tmp, 1.0_dp, mmn_imag)
501 CALL parallel_gemm(
"T",
"N", nmo, nmo, nao, 1.0_dp, fmk1(2), fm_tmp, -1.0_dp, mmn_real)
503 CALL parallel_gemm(
"T",
"N", nmo, nmo, nao, 1.0_dp, fmk1(1), fm_tmp, 1.0_dp, mmn_imag)
504 CALL parallel_gemm(
"T",
"N", nmo, nmo, nao, 1.0_dp, fmk1(2), fm_tmp, -1.0_dp, mmn_real)
506 CALL parallel_gemm(
"T",
"N", nmo, nmo, nao, 1.0_dp, fmk1(1), fm_tmp, -1.0_dp, mmn_real)
507 CALL parallel_gemm(
"T",
"N", nmo, nmo, nao, 1.0_dp, fmk1(2), fm_tmp, -1.0_dp, mmn_imag)
510 IF (para_env%is_source())
THEN
511 WRITE (iunit,
"(2I8,3I5)") ik, ik2, nncell(1:3, ik, i)
517 IF (para_env%is_source())
THEN
518 WRITE (iunit,
"(2E30.14)") rmmn, cmmn
530 DEALLOCATE (berry_matrix)
543 IF (para_env%is_source())
THEN
550 nspins = dft_control%nspins
551 kp => kpoint%kp_env(1)%kpoint_env
553 ALLOCATE (eigval(nmo))
555 IF (para_env%is_source())
THEN
556 WRITE (filename,
'(A,A)') trim(seed_name),
".eig"
557 CALL open_file(filename, unit_number=iunit, file_status=
"UNKNOWN", file_action=
"WRITE")
563 my_kpgrp = (ik >= kp_range(1) .AND. ik <= kp_range(2))
566 ikpgr = ik - kp_range(1) + 1
567 kp => kpoint%kp_env(ikpgr)%kpoint_env
568 CALL get_mo_set(kp%mos(1, ispin), eigenvalues=eigenvalues)
569 eigval(1:nmo) = eigenvalues(1:nmo)
571 eigval(1:nmo) = 0.0_dp
573 CALL kpoint%para_env_inter_kp%sum(eigval)
574 eigval(1:nmo) = eigval(1:nmo)*
evolt
578 WRITE (iunit,
"(2I8,F24.14)") ib, ik, eigval(ib)
583 IF (para_env%is_source())
THEN
588 DEALLOCATE (kpt_latt, atoms_cart, atom_symbols, eigval)
589 DEALLOCATE (nnlist, nncell)
590 DEALLOCATE (nblist, b_latt)
592 DEALLOCATE (exclude_bands)
598 DEALLOCATE (qs_env_kp)
604 END SUBROUTINE wannier90_files
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.
Handles all functions related to the CELL.
subroutine, public get_cell(cell, alpha, beta, gamma, deth, orthorhombic, abc, periodic, h, h_inv, symmetry_id, tag)
Get informations about a simulation cell.
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_deallocate_matrix(matrix)
...
subroutine, public dbcsr_set(matrix, alpha)
...
Routines that link DBCSR and CP2K concepts together.
subroutine, public cp_dbcsr_alloc_block_from_nbl(matrix, sab_orb, desymmetrize)
allocate the blocks of a dbcsr based on the neighbor list
DBCSR operations in CP2K.
subroutine, public cp_dbcsr_sm_fm_multiply(matrix, fm_in, fm_out, ncol, alpha, beta)
multiply a dbcsr with a fm matrix
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.
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_copy_general(source, destination, para_env)
General copy of a fm matrix to another fm matrix. Uses non-blocking MPI rather than ScaLAPACK.
subroutine, public cp_fm_get_element(matrix, irow_global, icol_global, alpha, local)
returns an element of a fm this value is valid on every cpu using this call is expensive
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 ...
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...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Routines needed for kpoint calculation.
subroutine, public kpoint_initialize_mo_set(kpoint)
...
subroutine, public rskp_transform(rmatrix, cmatrix, rsmat, ispin, xkp, cell_to_index, sab_nl, is_complex, rs_sign)
Transformation of real space matrices to a kpoint.
subroutine, public kpoint_initialize_mos(kpoint, mos, added_mos, for_aux_fit)
Initialize a set of MOs and density matrix for each kpoint (kpoint group)
subroutine, public kpoint_init_cell_index(kpoint, sab_nl, para_env, dft_control)
Generates the mapping of cell indices and linear RS index CELL (0,0,0) is always mapped to index 1.
subroutine, public kpoint_env_initialize(kpoint, para_env, blacs_env, with_aux_fit)
Initialize the kpoint environment.
Types and basic routines needed for a kpoint calculation.
subroutine, public kpoint_release(kpoint)
Release a kpoint environment, deallocate all data.
subroutine, public kpoint_create(kpoint)
Create a kpoint environment.
subroutine, public get_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, sab_nl, sab_nl_nosym)
Retrieve information from a kpoint environment.
Machine interface based on Fortran 2003 and POSIX.
subroutine, public m_datum(cal_date)
returns a datum in human readable format using a standard Fortran routine
Definition of mathematical constants and functions.
real(kind=dp), parameter, public twopi
Interface to the message passing library MPI.
basic linear algebra operations for full matrixes
Define the data structure for the particle information.
Definition of physical constants:
real(kind=dp), parameter, public evolt
real(kind=dp), parameter, public angstrom
subroutine, public qs_env_release(qs_env)
releases the given qs_env (see doc/ReferenceCounting.html)
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.
Initialize a qs_env for kpoint calculations starting from a gamma point qs_env.
subroutine, public create_kp_from_gamma(qs_env, qs_env_kp, with_xc_terms)
...
Definition and initialisation of the mo data type.
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.
Calculates the moment integrals <a|r^m|b> and <a|r x d/dr|b>
subroutine, public build_berry_kpoint_matrix(qs_env, cosmat, sinmat, kvec, basis_type)
...
Define the neighbor list data types and the corresponding functionality.
Different diagonalization schemes that can be used for the iterative solution of the eigenvalue probl...
subroutine, public do_general_diag_kp(matrix_ks, matrix_s, kpoints, scf_env, scf_control, update_p, diis_step, diis_error, qs_env)
Kpoint diagonalization routine Transforms matrices to kpoint, distributes kpoint groups,...
module that contains the definitions of the scf types
Interface to Wannier90 code.
subroutine, public wannier90_interface(input, logger, qs_env)
...
parameters that control an scf iteration
Outtakes from Wannier90 code.
subroutine, public wannier_setup(mp_grid_loc, num_kpts_loc, real_lattice_loc, recip_lattice_loc, kpt_latt_loc, nntot_loc, nnlist_loc, nncell_loc, iounit)
...
Type defining parameters related to the simulation cell.
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
keeps the information about the structure of a full matrix
type of a logger, at the moment it contains just a print level starting at which level it should be l...
Keeps information about a specific k-point.
Contains information about kpoints.
stores all the informations relevant to an mpi environment