36#if defined(HAVE_ETSF_IO)
52 use,
intrinsic :: iso_fortran_env
114 subroutine output_init(outp, namespace, space, st, gr, nst, ks)
115 type(output_t),
intent(out) :: outp
116 type(namespace_t),
intent(in) :: namespace
117 class(space_t),
intent(in) :: space
118 type(states_elec_t),
intent(in) :: st
119 type(grid_t),
intent(in) :: gr
120 integer,
intent(in) :: nst
121 type(v_ks_t),
intent(inout) :: ks
125 character(len=80) :: nst_string, default
135 if (outp%what(option__output__wfs_fourier))
then
137 message(1) =
"Wave functions in Fourier space not supported on GPUs."
144 if (outp%what(option__output__elf) .or. outp%what(option__output__elf_basins))
then
145 if (space%dim /= 2 .and. space%dim /= 3)
then
146 outp%what(option__output__elf) = .false.
147 outp%what(option__output__elf_basins) = .false.
148 write(
message(1),
'(a)')
'Cannot calculate ELF except in 2D and 3D.'
154 if (outp%what(option__output__mmb_wfs))
then
158 if (outp%what(option__output__xc_torque))
then
159 if (st%d%ispin /=
spinors)
then
160 write(
message(1),
'(a)')
'The output xc_torque can only be computed for spinors.'
163 if (space%dim /= 3)
then
164 write(
message(1),
'(a)')
'The output xc_torque can only be computed in the 3D case.'
168 if (outp%what(option__output__mmb_den))
then
177 if (outp%what(option__output__energy_density))
call messages_experimental(
"'Output = energy_density'", namespace=namespace)
178 if (outp%what(option__output__heat_current))
call messages_experimental(
"'Output = heat_current'", namespace=namespace)
180 if (outp%what(option__output__wfs) .or. outp%what(option__output__wfs_sqmod))
then
192 write(nst_string,
'(i6)') nst
193 write(default,
'(a,a)')
"1-", trim(adjustl(nst_string))
194 call parse_variable(namespace,
'OutputWfsNumber', default, outp%wfs_list)
197 if (
parse_block(namespace,
'CurrentThroughPlane', blk) == 0)
then
198 if (.not. outp%what(option__output__j_flow))
then
199 outp%what(option__output__j_flow) = .
true.
200 call parse_variable(namespace,
'OutputInterval', 50, outp%output_interval(option__output__j_flow))
251 select case (space%dim)
269 norm = norm2(outp%plane%u(1:3))
271 write(
message(1),
'(a)')
'u-vector for CurrentThroughPlane cannot have norm zero.'
274 outp%plane%u(1:3) = outp%plane%u(1:3) / norm
276 norm = norm2(outp%plane%v(1:3))
278 write(
message(1),
'(a)')
'v-vector for CurrentThroughPlane cannot have norm zero.'
281 outp%plane%v(1:3) = outp%plane%v(1:3) / norm
283 outp%plane%n(1) = outp%plane%u(2)*outp%plane%v(3) - outp%plane%u(3)*outp%plane%v(2)
284 outp%plane%n(2) = outp%plane%u(3)*outp%plane%v(1) - outp%plane%u(1)*outp%plane%v(3)
285 outp%plane%n(3) = outp%plane%u(1)*outp%plane%v(2) - outp%plane%u(2)*outp%plane%v(1)
297 norm = norm2(outp%line%u(1:2))
299 write(
message(1),
'(a)')
'u-vector for CurrentThroughPlane cannot have norm zero.'
302 outp%line%u(1:2) = outp%line%u(1:2) / norm
304 outp%line%n(1) = -outp%line%u(2)
305 outp%line%n(2) = outp%line%u(1)
319 if (outp%what(option__output__matrix_elements))
then
322 outp%me%what = .false.
325 if (outp%what(option__output__berkeleygw))
then
327 message(1) =
"BerkeleyGW is not compatible with GPUs."
334 if (outp%what(option__output__potential_gradient) .and. .not. outp%what(option__output__potential))
then
335 outp%what(option__output__potential) = .
true.
336 outp%output_interval(option__output__potential) = outp%output_interval(option__output__potential_gradient)
348 call parse_variable(namespace,
'OutputDuringSCF', .false., outp%duringscf)
361 call parse_variable(namespace,
'RestartWriteInterval', 50, outp%restart_write_interval)
362 if (outp%restart_write_interval <= 0)
then
363 message(1) =
"RestartWriteInterval must be > 0."
378 call parse_variable(namespace,
'OutputIterDir',
"output_iter", outp%iter_dir)
379 if (any(outp%what) .and. any(outp%output_interval > 0))
then
380 call io_mkdir(outp%iter_dir, namespace)
393 if (outp%what(option__output__current_dia))
then
394 message(1) =
"The diamagnetic current will be calculated only if CalculateDiamagneticCurrent = yes."
399 do iout = lbound(outp%how, 1), ubound(outp%how, 1)
400 if (
bitand(outp%how(iout), option__outputformat__etsf) /= 0)
then
401 message(1) =
"ETSF output can only be used if Octopus is compiled with ETSF-IO"
411 subroutine output_all(outp, namespace, space, dir, gr, ions, iter, st, hm, ks)
414 class(
space_t),
intent(in) :: space
415 character(len=*),
intent(in) :: dir
416 type(
grid_t),
intent(in) :: gr
417 type(
ions_t),
intent(in) :: ions
418 integer,
intent(in) :: iter
421 type(
v_ks_t),
intent(inout) :: ks
423 integer :: idir, ierr, iout, iunit
424 character(len=MAX_PATH_LEN) :: fname
429 if (any(outp%what))
then
430 message(1) =
"Info: Writing output to " // trim(dir)
435 if (outp%what_now(option__output__mesh_r, iter))
then
436 do idir = 1, space%dim
437 write(fname,
'(a,a)')
'mesh_r-',
index2axis(idir)
439 gr, gr%x(:,idir),
units_out%length, ierr, pos=ions%pos, atoms=ions%atom)
443 call output_states(outp, namespace, space, dir, st, gr, ions, hm, iter)
444 call output_hamiltonian(outp, namespace, space, dir, hm, st, gr%der, ions, gr, iter, st%st_kpt_mpi_grp)
447 if (outp%what_now(option__output__el_pressure, iter))
then
451 if (st%d%spin_channels > 1)
then
457 if (outp%what(option__output__kanamoriu) .and. hm%lda_u_level /=
dft_u_acbn0)
then
458 message(1) =
"kanamoriU output can only be computed for DFTULevel = dft_u_acbn0"
465 if (outp%what_now(option__output__j_flow, iter))
then
469 if (outp%what_now(option__output__geometry, iter))
then
470 if (
bitand(outp%how(option__output__geometry), option__outputformat__xcrysden) /= 0)
then
473 if (
bitand(outp%how(option__output__geometry), option__outputformat__xyz) /= 0)
then
474 call ions%write_xyz(trim(dir)//
'/geometry')
475 if (ions%space%is_periodic())
then
476 call ions%write_crystal(dir)
479 if (
bitand(outp%how(option__output__geometry), option__outputformat__vtk) /= 0)
then
480 call ions%write_vtk_geometry(trim(dir)//
'/geometry')
484 if (outp%what_now(option__output__forces, iter))
then
485 if (
bitand(outp%how(option__output__forces), option__outputformat__bild) /= 0)
then
486 call ions%write_bild_forces_file(dir,
"forces")
489 gr, namespace, total_forces = ions%tot_force)
493 if (outp%what_now(option__output__matrix_elements, iter))
then
494 call output_me(outp%me, namespace, space, dir, st, gr, ions, hm)
497 do iout = lbound(outp%how, 1), ubound(outp%how, 1)
498 if (
bitand(outp%how(iout), option__outputformat__etsf) /= 0)
then
499 call output_etsf(outp, namespace, space, dir, st, gr, hm%kpoints, ions, iter)
504 if (outp%what_now(option__output__berkeleygw, iter))
then
508 if (outp%what_now(option__output__energy_density, iter))
then
512 if (outp%what_now(option__output__stress, iter))
then
514 iunit =
io_open(trim(dir)//
'/stress', namespace, action=
'write')
515 call output_stress(iunit, space%periodic_dim, st%stress_tensors)
520 if (outp%what_now(option__output__occ_matrices, iter))&
523 if (outp%what_now(option__output__effectiveu, iter))&
526 if (outp%what_now(option__output__magnetization, iter))&
529 if (outp%what_now(option__output__local_orbitals, iter))&
530 call output_dftu_orbitals(outp, dir, namespace, space, hm%lda_u, st, gr, ions, hm%phase%is_allocated())
532 if (outp%what_now(option__output__kanamoriu, iter))&
536 if (outp%what_now(option__output__photon_correlator, iter))
then
537 write(fname,
'(a)')
'photon_correlator'
538 call dio_function_output(outp%how(option__output__photon_correlator), dir, trim(fname), namespace, space, &
539 gr, ks%oep_photon%pt%correlator(:,1),
units_out%length, ierr, pos=ions%pos, atoms=ions%atom)
545 if (outp%what_now(option__output__xc_torque, iter))
then
547 write(
message(1),
'(a)')
'The output xc_torque can only be computed when there is a xc potential.'
563 class(
space_t),
intent(in) :: space
564 character(len=*),
intent(in) :: dir
567 type(
grid_t),
intent(in) :: gr
568 type(
ions_t),
intent(in) :: ions
569 integer,
intent(in) :: iter
571 real(real64),
allocatable :: f_loc(:,:)
572 character(len=MAX_PATH_LEN) :: fname
573 integer :: is, ierr, imax
578 mpi_grp = st%dom_st_kpt_mpi_grp
584 safe_allocate(f_loc(1:gr%np, 1:imax))
587 if (outp%what_now(option__output__elf, iter) .or. outp%what_now(option__output__elf_basins, iter))
then
588 assert(space%dim /= 1)
590 call elf_calc(space, st, gr, hm%kpoints, f_loc)
593 if (outp%what_now(option__output__elf, iter))
then
594 write(fname,
'(a)')
'elf_rs'
595 call dio_function_output(outp%how(option__output__elf), dir, trim(fname), namespace, space, gr, &
596 f_loc(:,imax),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
601 write(fname,
'(a,i1)')
'elf_rs-sp', is
602 call dio_function_output(outp%how(option__output__elf), dir, trim(fname), namespace, space, gr, &
603 f_loc(:, is),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
609 if (outp%what_now(option__output__elf_basins, iter))
then
610 call out_basins(f_loc(:,1),
"elf_rs_basins", outp%how(option__output__elf_basins))
615 if (outp%what_now(option__output__bader, iter))
then
616 do is = 1, st%d%nspin
621 call dio_function_output(outp%how(option__output__bader), dir, trim(fname), namespace, space, gr, &
622 f_loc(:,is),
units_out%length**(-2 - space%dim), ierr, &
623 pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
626 call out_basins(f_loc(:,1), fname, outp%how(option__output__bader))
631 if (outp%what_now(option__output__el_pressure, iter))
then
633 call dio_function_output(outp%how(option__output__el_pressure), dir,
"el_pressure", namespace, space, gr, &
634 f_loc(:,1),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
638 safe_deallocate_a(f_loc)
645 real(real64),
intent(in) :: ff(:)
646 character(len=*),
intent(in) :: filename
647 integer(int64),
intent(in) :: output_how
649 character(len=MAX_PATH_LEN) :: fname
656 call basins_analyze(basins, namespace, gr, ff(:), st%rho, 0.01_real64)
659 real(basins%map, real64) , unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
662 write(fname,
'(4a)') trim(dir),
'/', trim(filename),
'.info'
663 iunit =
io_open(trim(fname), namespace, action =
'write')
679 type(
grid_t),
intent(in) :: gr
680 real(real64),
intent(out) :: pressure(:)
682 real(real64),
allocatable :: rho(:,:), lrho(:), tau(:,:)
683 real(real64) :: p_tf, dens
688 safe_allocate( rho(1:gr%np_part, 1:st%d%nspin))
689 safe_allocate(lrho(1:gr%np))
690 safe_allocate( tau(1:gr%np, 1:st%d%nspin))
697 do is = 1, st%d%spin_channels
701 pressure(:) = pressure(:) + &
706 dens = sum(rho(ii,1:st%d%spin_channels))
713 pressure(ii) = pressure(ii) + (dens*hm%ks_pot%vxc(ii,1) - hm%energy%exchange - hm%energy%correlation)
715 pressure(ii) = pressure(ii)/p_tf
727 class(
space_t),
intent(in) :: space
728 character(len=*),
intent(in) :: dir
730 type(
v_ks_t),
intent(inout) :: ks
732 type(
ions_t),
intent(in) :: ions
733 type(
grid_t),
intent(in) :: gr
735 integer :: is, ierr, ip
736 character(len=MAX_PATH_LEN) :: fname
738 real(real64),
allocatable :: energy_density(:, :)
739 real(real64),
allocatable :: ex_density(:)
740 real(real64),
allocatable :: ec_density(:)
745 safe_allocate(energy_density(1:gr%np, 1:st%d%nspin))
751 do is = 1, st%d%nspin
753 energy_density(ip, is) = energy_density(ip, is) + st%rho(ip, is)*hm%ep%vpsl(ip)
758 do is = 1, st%d%nspin
760 energy_density(ip, is) = energy_density(ip, is) +
m_half*st%rho(ip, is)*hm%ks_pot%vhartree(ip)
765 safe_allocate(ex_density(1:gr%np))
766 safe_allocate(ec_density(1:gr%np))
768 call xc_get_vxc(gr, ks%xc, st, hm%kpoints, hm%psolver, namespace, space, st%rho, st%d%ispin, &
769 hm%ions%latt%rcell_volume, ex_density = ex_density, ec_density = ec_density)
770 do is = 1, st%d%nspin
772 energy_density(ip, is) = energy_density(ip, is) + ex_density(ip) + ec_density(ip)
776 safe_deallocate_a(ex_density)
777 safe_deallocate_a(ec_density)
779 do is = 1, st%d%spin_channels
781 call dio_function_output(outp%how(option__output__energy_density), dir, trim(fname), namespace, space, gr, &
782 energy_density(:, is),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = st%dom_st_kpt_mpi_grp)
784 safe_deallocate_a(energy_density)
794 need_exx =(outp%what(option__output__berkeleygw) &
795 .or. outp%me%what(option__outputmatrixelements__two_body) &
796 .or. outp%me%what(option__outputmatrixelements__two_body_exc_k))
803 character(len=*),
intent(in) :: dir
805 class(
space_t),
intent(in) :: space
806 type(
lda_u_t),
intent(in) :: this
809 type(
ions_t),
intent(in) :: ions
810 logical,
intent(in) :: has_phase
812 integer :: ios, im, ik, idim, ierr
813 complex(real64),
allocatable :: tmp(:)
814 real(real64),
allocatable :: dtmp(:)
817 character(len=MAX_PATH_LEN) :: fname
823 if (this%basis%use_submesh)
then
825 safe_allocate(dtmp(1:mesh%np))
827 safe_allocate(tmp(1:mesh%np))
831 do ios = 1, this%norbsets
832 os => this%orbsets(ios)
833 do ik = st%d%kpt%start, st%d%kpt%end
834 do im = 1, this%orbsets(ios)%norbs
835 do idim = 1, min(os%ndim, st%d%dim)
837 if (min(os%ndim, st%d%dim) > 1)
then
838 write(fname,
'(a,i1,a,i3.3,a,i8.8,a,i1)')
'orb', im,
'-os', ios,
'-k', ik,
'-sp', idim
840 write(fname,
'(a,i1,a,i3.3,a,i8.8)')
'orb', im,
'-os', ios,
'-k', ik
843 if (min(os%ndim, st%d%dim) > 1)
then
844 write(fname,
'(a,i1,a,i3.3,a,i1)')
'orb', im,
'-os', ios,
'-sp', idim
846 write(fname,
'(a,i1,a,i3.3)')
'orb', im,
'-os', ios
850 if (.not. this%basis%use_submesh)
then
851 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
852 mesh, os%eorb_mesh(1:mesh%np,im,idim,ik), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
856 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
857 mesh, tmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
860 if (.not. this%basis%use_submesh)
then
862 call dio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, mesh, &
863 os%dorb(1:mesh%np,idim,im), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
865 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, mesh, &
866 os%zorb(1:mesh%np,idim,im), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
872 call dio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
873 mesh, dtmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
877 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
878 mesh, tmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
887 safe_deallocate_a(tmp)
888 safe_deallocate_a(dtmp)
896 logical,
intent(in) :: states_are_real
900 if (outp%what(option__output__current) &
901 .or. outp%what(option__output__current_dia) &
902 .or. outp%what(option__output__heat_current) &
903 .or. outp%what(option__output__current_kpt))
then
904 if (.not. states_are_real)
then
907 message(1) =
'No current density output for real states since it is identically zero.'
915#include "output_etsf_inc.F90"
917#include "output_states_inc.F90"
919#include "output_h_inc.F90"
922#include "complex.F90"
923#include "output_linear_response_inc.F90"
927#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
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.
integer, parameter, public generalized_kohn_sham_dft
integer, parameter, public kohn_sham_dft
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_magnetization(dir, this, ions, mesh, st, namespace)
subroutine, public lda_u_write_effectiveu(dir, this, namespace)
integer, parameter, public dft_u_none
integer, parameter, public dft_u_acbn0
This module is intended to contain "only mathematical" functions and procedures.
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)
subroutine output_etsf(outp, namespace, space, dir, st, gr, kpoints, ions, iter)
To create an etsf file one has to do the following:
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)
integer, parameter, public oep_level_full
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.