48 use,
intrinsic :: iso_fortran_env
110 subroutine output_init(outp, namespace, space, st, gr, nst, ks)
111 type(output_t),
intent(out) :: outp
112 type(namespace_t),
intent(in) :: namespace
113 class(space_t),
intent(in) :: space
114 type(states_elec_t),
intent(in) :: st
115 type(grid_t),
intent(in) :: gr
116 integer,
intent(in) :: nst
117 type(v_ks_t),
intent(inout) :: ks
121 character(len=80) :: nst_string, default
128 if (outp%what(option__output__wfs_fourier))
then
130 message(1) =
"Wave functions in Fourier space not supported on GPUs."
137 if (outp%what(option__output__elf) .or. outp%what(option__output__elf_basins))
then
138 if (space%dim /= 2 .and. space%dim /= 3)
then
139 outp%what(option__output__elf) = .false.
140 outp%what(option__output__elf_basins) = .false.
141 write(
message(1),
'(a)')
'Cannot calculate ELF except in 2D and 3D.'
147 if (outp%what(option__output__mmb_wfs))
then
151 if (outp%what(option__output__xc_torque))
then
152 if (st%d%ispin /=
spinors)
then
153 write(
message(1),
'(a)')
'The output xc_torque can only be computed for spinors.'
156 if (space%dim /= 3)
then
157 write(
message(1),
'(a)')
'The output xc_torque can only be computed in the 3D case.'
161 if (outp%what(option__output__mmb_den))
then
170 if (outp%what(option__output__energy_density))
call messages_experimental(
"'Output = energy_density'", namespace=namespace)
171 if (outp%what(option__output__heat_current))
call messages_experimental(
"'Output = heat_current'", namespace=namespace)
173 if (outp%what(option__output__wfs) .or. outp%what(option__output__wfs_sqmod))
then
185 write(nst_string,
'(i6)') nst
186 write(default,
'(a,a)')
"1-", trim(adjustl(nst_string))
187 call parse_variable(namespace,
'OutputWfsNumber', default, outp%wfs_list)
190 if (
parse_block(namespace,
'CurrentThroughPlane', blk) == 0)
then
191 if (.not. outp%what(option__output__j_flow))
then
192 outp%what(option__output__j_flow) = .
true.
193 call parse_variable(namespace,
'OutputInterval', 50, outp%output_interval(option__output__j_flow))
244 select case (space%dim)
262 norm = norm2(outp%plane%u(1:3))
264 write(
message(1),
'(a)')
'u-vector for CurrentThroughPlane cannot have norm zero.'
267 outp%plane%u(1:3) = outp%plane%u(1:3) / norm
269 norm = norm2(outp%plane%v(1:3))
271 write(
message(1),
'(a)')
'v-vector for CurrentThroughPlane cannot have norm zero.'
274 outp%plane%v(1:3) = outp%plane%v(1:3) / norm
276 outp%plane%n(1:3) =
dcross_product(outp%plane%u(1:3), outp%plane%v(1:3))
288 norm = norm2(outp%line%u(1:2))
290 write(
message(1),
'(a)')
'u-vector for CurrentThroughPlane cannot have norm zero.'
293 outp%line%u(1:2) = outp%line%u(1:2) / norm
295 outp%line%n(1) = -outp%line%u(2)
296 outp%line%n(2) = outp%line%u(1)
310 if (outp%what(option__output__matrix_elements))
then
313 outp%me%what = .false.
316 if (outp%what(option__output__berkeleygw))
then
318 message(1) =
"BerkeleyGW is not compatible with GPUs."
325 if (outp%what(option__output__potential_gradient) .and. .not. outp%what(option__output__potential))
then
326 outp%what(option__output__potential) = .
true.
327 outp%output_interval(option__output__potential) = outp%output_interval(option__output__potential_gradient)
339 call parse_variable(namespace,
'OutputDuringSCF', .false., outp%duringscf)
342 write(
message(1),
'(a)')
'Input variable RestartWriteInterval is obsolete.'
343 write(
message(2),
'(a)')
'Restart files are now written in periods of the wallclock time'
344 write(
message(3),
'(a)')
'given by RestartWallTimePeriod, so you can simply delete this variable.'
359 call parse_variable(namespace,
'OutputIterDir',
"output_iter", outp%iter_dir)
360 if (any(outp%what) .and. any(outp%output_interval > 0))
then
361 call io_mkdir(outp%iter_dir, namespace)
374 if (outp%what(option__output__current_dia))
then
375 message(1) =
"The diamagnetic current will be calculated only if CalculateDiamagneticCurrent = yes."
383 subroutine output_all(outp, namespace, space, dir, gr, ions, iter, st, hm, ks)
386 class(
space_t),
intent(in) :: space
387 character(len=*),
intent(in) :: dir
388 type(
grid_t),
intent(in) :: gr
389 type(
ions_t),
intent(in) :: ions
390 integer,
intent(in) :: iter
393 type(
v_ks_t),
intent(inout) :: ks
395 integer :: idir, ierr, iunit
396 character(len=MAX_PATH_LEN) :: fname
401 if (any(outp%what))
then
402 message(1) =
"Info: Writing output to " // trim(dir)
407 if (outp%what_now(option__output__mesh_r, iter))
then
408 do idir = 1, space%dim
409 write(fname,
'(a,a)')
'mesh_r-',
index2axis(idir)
411 gr, gr%x_t(:,idir),
units_out%length, ierr, pos=ions%pos, atoms=ions%atom)
415 call output_states(outp, namespace, space, dir, st, gr, ions, hm, iter)
416 call output_hamiltonian(outp, namespace, space, dir, hm, st, gr%der, ions, gr, iter, st%st_kpt_mpi_grp)
419 if (outp%what_now(option__output__el_pressure, iter))
then
423 if (st%d%spin_channels > 1)
then
429 if (outp%what(option__output__kanamoriu) .and. hm%lda_u_level /=
dft_u_acbn0)
then
430 message(1) =
"kanamoriU output can only be computed for DFTULevel = dft_u_acbn0"
437 if (outp%what_now(option__output__j_flow, iter))
then
441 if (outp%what_now(option__output__geometry, iter))
then
442 if (
bitand(outp%how(option__output__geometry), option__outputformat__xcrysden) /= 0)
then
445 if (
bitand(outp%how(option__output__geometry), option__outputformat__xyz) /= 0)
then
446 call ions%write_xyz(trim(dir)//
'/geometry')
447 if (ions%space%is_periodic())
then
448 call ions%write_crystal(dir)
451 if (
bitand(outp%how(option__output__geometry), option__outputformat__vtk) /= 0)
then
452 call ions%write_vtk_geometry(trim(dir)//
'/geometry')
454 if (
bitand(outp%how(option__output__geometry), option__outputformat__poscar) /= 0)
then
455 call ions%write_poscar(trim(dir)//
'/POSCAR')
459 if (outp%what_now(option__output__forces, iter))
then
460 if (
bitand(outp%how(option__output__forces), option__outputformat__bild) /= 0)
then
461 call ions%write_bild_forces_file(dir,
"forces")
464 gr, namespace, total_forces = ions%tot_force)
468 if (outp%what_now(option__output__matrix_elements, iter))
then
469 call output_me(outp%me, namespace, space, dir, st, gr, ions, hm)
472 if (outp%what_now(option__output__berkeleygw, iter))
then
476 if (outp%what_now(option__output__energy_density, iter))
then
480 if (outp%what_now(option__output__stress, iter))
then
482 iunit =
io_open(trim(dir)//
'/stress', namespace, action=
'write')
483 call output_stress(iunit, space%periodic_dim, st%stress_tensors)
488 if (outp%what_now(option__output__occ_matrices, iter))&
491 if (outp%what_now(option__output__effectiveu, iter))&
494 if (outp%what_now(option__output__magnetization, iter))&
497 if (outp%what_now(option__output__local_orbitals, iter))&
498 call output_dftu_orbitals(outp, dir, namespace, space, hm%lda_u, st, gr, ions, hm%phase%is_allocated())
500 if (outp%what_now(option__output__kanamoriu, iter))&
503 if (ks%v_ks_photons%oep_full())
then
504 if (outp%what_now(option__output__photon_correlator, iter))
then
505 write(fname,
'(a)')
'photon_correlator'
506 call dio_function_output(outp%how(option__output__photon_correlator), dir, trim(fname), namespace, space, &
507 gr, ks%v_ks_photons%correlator(),
units_out%length, ierr, pos=ions%pos, atoms=ions%atom)
513 if (outp%what_now(option__output__xc_torque, iter))
then
515 write(
message(1),
'(a)')
'The output xc_torque can only be computed when there is a xc potential.'
531 class(
space_t),
intent(in) :: space
532 character(len=*),
intent(in) :: dir
535 type(
grid_t),
intent(in) :: gr
536 type(
ions_t),
intent(in) :: ions
537 integer,
intent(in) :: iter
539 real(real64),
allocatable :: f_loc(:,:)
540 character(len=MAX_PATH_LEN) :: fname
541 integer :: is, ierr, imax
546 mpi_grp = st%dom_st_kpt_mpi_grp
552 safe_allocate(f_loc(1:gr%np, 1:imax))
555 if (outp%what_now(option__output__elf, iter) .or. outp%what_now(option__output__elf_basins, iter))
then
556 assert(space%dim /= 1)
558 call elf_calc(space, st, gr, hm%kpoints, f_loc)
561 if (outp%what_now(option__output__elf, iter))
then
562 write(fname,
'(a)')
'elf_rs'
563 call dio_function_output(outp%how(option__output__elf), dir, trim(fname), namespace, space, gr, &
564 f_loc(:,imax),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
569 write(fname,
'(a,i1)')
'elf_rs-sp', is
570 call dio_function_output(outp%how(option__output__elf), dir, trim(fname), namespace, space, gr, &
571 f_loc(:, is),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
577 if (outp%what_now(option__output__elf_basins, iter))
then
578 call out_basins(f_loc(:,1),
"elf_rs_basins", outp%how(option__output__elf_basins))
583 if (outp%what_now(option__output__bader, iter))
then
584 do is = 1, st%d%nspin
589 call dio_function_output(outp%how(option__output__bader), dir, trim(fname), namespace, space, gr, &
590 f_loc(:,is),
units_out%length**(-2 - space%dim), ierr, &
591 pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
594 call out_basins(f_loc(:, is), fname, outp%how(option__output__bader))
599 if (outp%what_now(option__output__el_pressure, iter))
then
601 call dio_function_output(outp%how(option__output__el_pressure), dir,
"el_pressure", namespace, space, gr, &
602 f_loc(:,1),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
606 safe_deallocate_a(f_loc)
612 subroutine out_basins(ff, filename, output_how)
613 real(real64),
intent(in) :: ff(:)
614 character(len=*),
intent(in) :: filename
615 integer(int64),
intent(in) :: output_how
617 character(len=MAX_PATH_LEN) :: fname
624 call basins_analyze(basins, namespace, gr, ff(:), st%rho, 0.01_real64)
627 real(basins%map, real64) , unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
630 write(fname,
'(4a)') trim(dir),
'/', trim(filename),
'.info'
631 iunit =
io_open(trim(fname), namespace, action =
'write')
647 type(
grid_t),
intent(in) :: gr
648 real(real64),
intent(out) :: pressure(:)
650 real(real64),
allocatable :: rho(:,:), lrho(:), tau(:,:)
651 real(real64) :: p_tf, dens
656 safe_allocate( rho(1:gr%np_part, 1:st%d%nspin))
657 safe_allocate(lrho(1:gr%np))
658 safe_allocate( tau(1:gr%np, 1:st%d%nspin))
665 do is = 1, st%d%spin_channels
669 pressure(:) = pressure(:) + &
674 dens = sum(rho(ii,1:st%d%spin_channels))
681 pressure(ii) = pressure(ii) + (dens*hm%ks_pot%vxc(ii,1) - hm%energy%exchange - hm%energy%correlation)
683 pressure(ii) = pressure(ii)/p_tf
695 class(
space_t),
intent(in) :: space
696 character(len=*),
intent(in) :: dir
698 type(
v_ks_t),
intent(inout) :: ks
700 type(
ions_t),
intent(in) :: ions
701 type(
grid_t),
intent(in) :: gr
703 integer :: is, ierr, ip
704 character(len=MAX_PATH_LEN) :: fname
706 real(real64),
allocatable :: energy_density(:, :)
707 real(real64),
allocatable :: ex_density(:)
708 real(real64),
allocatable :: ec_density(:)
713 safe_allocate(energy_density(1:gr%np, 1:st%d%nspin))
719 do is = 1, st%d%nspin
721 energy_density(ip, is) = energy_density(ip, is) + st%rho(ip, is)*hm%ep%vpsl(ip)
726 do is = 1, st%d%nspin
728 energy_density(ip, is) = energy_density(ip, is) +
m_half*st%rho(ip, is)*hm%ks_pot%vhartree(ip)
733 safe_allocate(ex_density(1:gr%np))
734 safe_allocate(ec_density(1:gr%np))
736 call xc_get_vxc(gr, ks%xc, st, hm%kpoints, hm%psolver, namespace, space, st%rho, st%d%ispin, &
737 hm%ions%latt%rcell_volume, ex_density = ex_density, ec_density = ec_density)
738 do is = 1, st%d%nspin
740 energy_density(ip, is) = energy_density(ip, is) + ex_density(ip) + ec_density(ip)
744 safe_deallocate_a(ex_density)
745 safe_deallocate_a(ec_density)
747 do is = 1, st%d%spin_channels
749 call dio_function_output(outp%how(option__output__energy_density), dir, trim(fname), namespace, space, gr, &
750 energy_density(:, is),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = st%dom_st_kpt_mpi_grp)
752 safe_deallocate_a(energy_density)
762 need_exx =(outp%what(option__output__berkeleygw) &
763 .or. outp%me%what(option__outputmatrixelements__two_body) &
764 .or. outp%me%what(option__outputmatrixelements__two_body_exc_k))
771 character(len=*),
intent(in) :: dir
773 class(
space_t),
intent(in) :: space
774 type(
lda_u_t),
intent(in) :: this
776 class(
mesh_t),
intent(in) :: mesh
777 type(
ions_t),
intent(in) :: ions
778 logical,
intent(in) :: has_phase
780 integer :: ios, im, ik, idim, ierr
781 complex(real64),
allocatable :: tmp(:)
782 real(real64),
allocatable :: dtmp(:)
785 character(len=MAX_PATH_LEN) :: fname
791 if (this%basis%use_submesh)
then
793 safe_allocate(dtmp(1:mesh%np))
795 safe_allocate(tmp(1:mesh%np))
799 do ios = 1, this%norbsets
800 os => this%orbsets(ios)
801 do ik = st%d%kpt%start, st%d%kpt%end
802 do im = 1, this%orbsets(ios)%norbs
803 do idim = 1, min(os%ndim, st%d%dim)
805 if (min(os%ndim, st%d%dim) > 1)
then
806 write(fname,
'(a,i1,a,i3.3,a,i8.8,a,i1)')
'orb', im,
'-os', ios,
'-k', ik,
'-sp', idim
808 write(fname,
'(a,i1,a,i3.3,a,i8.8)')
'orb', im,
'-os', ios,
'-k', ik
811 if (min(os%ndim, st%d%dim) > 1)
then
812 write(fname,
'(a,i1,a,i3.3,a,i1)')
'orb', im,
'-os', ios,
'-sp', idim
814 write(fname,
'(a,i1,a,i3.3)')
'orb', im,
'-os', ios
818 if (.not. this%basis%use_submesh)
then
819 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
820 mesh, os%eorb_mesh(1:mesh%np,im,idim,ik), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
824 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
825 mesh, tmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
828 if (.not. this%basis%use_submesh)
then
830 call dio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, mesh, &
831 os%dorb(1:mesh%np,idim,im), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
833 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, mesh, &
834 os%zorb(1:mesh%np,idim,im), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
840 call dio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
841 mesh, dtmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
845 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
846 mesh, tmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
855 safe_deallocate_a(tmp)
856 safe_deallocate_a(dtmp)
864 logical,
intent(in) :: states_are_real
868 if (outp%what(option__output__current) &
869 .or. outp%what(option__output__current_dia) &
870 .or. outp%what(option__output__heat_current) &
871 .or. outp%what(option__output__current_kpt))
then
872 if (.not. states_are_real)
then
875 message(1) =
'No current density output for real states since it is identically zero.'
883#include "output_states_inc.F90"
885#include "output_h_inc.F90"
888#include "complex.F90"
889#include "output_linear_response_inc.F90"
893#include "output_linear_response_inc.F90"
pure logical function, public accel_is_enabled()
subroutine, public basins_write(this, mesh, iunit)
subroutine, public basins_init(this, namespace, mesh)
subroutine, public basins_analyze(this, namespace, mesh, f, rho, threshold)
subroutine, public basins_end(this)
This module implements a calculator for the density and defines related functions.
subroutine, public density_calc(st, gr, density, istin)
Computes the density from the orbitals in st.
This module calculates the derivatives (gradients, Laplacians, etc.) of a function.
subroutine, public dderivatives_lapl(der, ff, op_ff, ghost_update, set_bc, factor)
apply the Laplacian to a mesh function
Module that handles computing and output of various density of states.
integer, parameter, public unpolarized
Parameters...
integer, parameter, public spinors
integer, parameter, public spin_polarized
subroutine, public elf_calc(space, st, gr, kpoints, elf, de)
(time-dependent) electron localization function, (TD)ELF.
Fast Fourier Transform module. This module provides a single interface that works with different FFT ...
real(real64), parameter, public m_two
real(real64), parameter, public m_zero
real(real64), parameter, public m_four
real(real64), parameter, public m_pi
some mathematical constants
complex(real64), parameter, public m_z0
integer, parameter, public generalized_kohn_sham_dft
integer, parameter, public kohn_sham_dft
real(real64), parameter, public m_epsilon
real(real64), parameter, public m_half
real(real64), parameter, public m_one
real(real64), parameter, public m_three
real(real64), parameter, public m_five
This module implements the underlying real-space grid.
This module defines classes and functions for interaction partners.
subroutine, public zio_function_output(how, dir, fname, namespace, space, mesh, ff, unit, ierr, pos, atoms, grp, root)
Top-level IO routine for functions defined on the mesh.
subroutine, public io_function_read_what_how_when(namespace, space, what, how, output_interval, what_tag_in, how_tag_in, output_interval_tag_in, ignore_error)
subroutine, public dio_function_output(how, dir, fname, namespace, space, mesh, ff, unit, ierr, pos, atoms, grp, root)
Top-level IO routine for functions defined on the mesh.
subroutine, public write_xsf_geometry_file(dir, fname, space, latt, pos, atoms, mesh, namespace, total_forces)
subroutine, public io_close(iunit, grp)
subroutine, public io_mkdir(fname, namespace, parents)
integer function, public io_open(file, namespace, action, status, form, position, die, recl, grp)
A module to handle KS potential, without the external potential.
subroutine, public lda_u_write_occupation_matrices(dir, this, st, namespace)
Prints the occupation matrices at the end of the scf calculation.
subroutine, public lda_u_write_kanamoriu(dir, st, this, namespace)
subroutine, public lda_u_write_effectiveu(dir, this, st, namespace)
subroutine, public lda_u_write_magnetization(dir, this, ions, mesh, st, namespace)
integer, parameter, public dft_u_none
integer, parameter, public dft_u_acbn0
System information (time, memory, sysname)
This module is intended to contain "only mathematical" functions and procedures.
pure real(real64) function, dimension(1:3), public dcross_product(a, b)
This module defines various routines, operating on mesh functions.
This module defines the meshes, which are used in Octopus.
subroutine, public messages_not_implemented(feature, namespace)
subroutine, public messages_warning(no_lines, all_nodes, namespace)
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_fatal(no_lines, only_root_writes, namespace)
subroutine, public messages_experimental(name, namespace)
subroutine, public messages_info(no_lines, iunit, debug_only, stress, all_nodes, namespace)
subroutine, public output_berkeleygw(bgw, namespace, space, dir, st, gr, ks, hm, ions)
subroutine, public output_berkeleygw_init(nst, namespace, bgw, periodic_dim)
this module contains the low-level part of the output system
character(len=max_path_len) function, public get_filename_with_spin(output, nspin, spin_index)
Returns the filame as output, or output-spX is spin polarized.
subroutine, public output_me_init(this, namespace, space, st, gr, nst)
subroutine, public output_me(this, namespace, space, dir, st, gr, ions, hm)
this module contains the output system
subroutine calc_electronic_pressure(st, hm, gr, pressure)
subroutine, public output_states(outp, namespace, space, dir, st, gr, ions, hm, iter)
logical function, public output_needs_current(outp, states_are_real)
subroutine, public output_hamiltonian(outp, namespace, space, dir, hm, st, der, ions, gr, iter, grp)
subroutine, public output_all(outp, namespace, space, dir, gr, ions, iter, st, hm, ks)
logical function, public output_need_exchange(outp)
subroutine, public output_init(outp, namespace, space, st, gr, nst, ks)
subroutine output_xc_torque(outp, namespace, dir, mesh, hm, st, ions, space)
subroutine, public output_current_flow(outp, namespace, space, dir, gr, st, kpoints)
subroutine, public zoutput_lr(outp, namespace, space, dir, st, mesh, lr, idir, isigma, ions, pert_unit)
subroutine, public doutput_lr(outp, namespace, space, dir, st, mesh, lr, idir, isigma, ions, pert_unit)
subroutine, public output_scalar_pot(outp, namespace, space, dir, mesh, ions, ext_partners, time)
subroutine output_energy_density(outp, namespace, space, dir, hm, ks, st, ions, gr)
subroutine output_dftu_orbitals(outp, dir, namespace, space, this, st, mesh, ions, has_phase)
subroutine output_localization_funct(outp, namespace, space, dir, st, hm, gr, ions, iter)
logical function, public parse_is_defined(namespace, name)
integer function, public parse_block(namespace, name, blk, check_varinfo_)
subroutine, public profiling_out(label)
Increment out counter and sum up difference between entry and exit time.
subroutine, public profiling_in(label, exclude)
Increment in counter and save entry time.
pure logical function, public states_are_real(st)
This module defines routines to write information about states.
subroutine, public states_elec_calc_quantities(gr, st, kpoints, nlcc, kinetic_energy_density, paramagnetic_current, density_gradient, density_laplacian, gi_kinetic_energy_density, st_end)
calculated selected quantities
This module implements the calculation of the stress tensor.
subroutine, public output_stress(iunit, space_dim, stress_tensors, all_terms)
subroutine, public add_last_slash(str)
Adds a '/' in the end of the string, only if it missing. Useful for directories.
brief This module defines the class unit_t which is used by the unit_systems_oct_m module.
This module defines the unit system, used for input and output.
type(unit_system_t), public units_out
type(unit_system_t), public units_inp
the units systems for reading and writing
type(unit_t), public unit_one
some special units required for particular quantities
This module is intended to contain simple general-purpose utility functions and procedures.
character pure function, public index2axis(idir)
subroutine, public v_ks_calculate_current(this, calc_cur)
subroutine, public xc_get_vxc(gr, xcs, st, kpoints, psolver, namespace, space, rho, ispin, rcell_volume, vxc, ex, ec, deltaxc, vtau, ex_density, ec_density, stress_xc, force_orbitalfree, force_host)
subroutine out_basins(ff, filename, output_how)
Description of the grid, containing information on derivatives, stencil, and symmetries.
Class to describe DFT+U parameters.
Describes mesh distribution to nodes.
This is defined even when running serial.
Output information for BerkeleyGW.
The states_elec_t class contains all electronic wave functions.