36#if defined(HAVE_ETSF_IO)
52 use,
intrinsic :: iso_fortran_env
115 subroutine output_init(outp, namespace, space, st, gr, nst, ks)
116 type(output_t),
intent(out) :: outp
117 type(namespace_t),
intent(in) :: namespace
118 class(space_t),
intent(in) :: space
119 type(states_elec_t),
intent(in) :: st
120 type(grid_t),
intent(in) :: gr
121 integer,
intent(in) :: nst
122 type(v_ks_t),
intent(inout) :: ks
126 character(len=80) :: nst_string, default
136 if (outp%what(option__output__wfs_fourier))
then
138 message(1) =
"Wave functions in Fourier space not supported on GPUs."
145 if (outp%what(option__output__elf) .or. outp%what(option__output__elf_basins))
then
146 if (space%dim /= 2 .and. space%dim /= 3)
then
147 outp%what(option__output__elf) = .false.
148 outp%what(option__output__elf_basins) = .false.
149 write(
message(1),
'(a)')
'Cannot calculate ELF except in 2D and 3D.'
155 if (outp%what(option__output__mmb_wfs))
then
159 if (outp%what(option__output__xc_torque))
then
160 if (st%d%ispin /=
spinors)
then
161 write(
message(1),
'(a)')
'The output xc_torque can only be computed for spinors.'
164 if (space%dim /= 3)
then
165 write(
message(1),
'(a)')
'The output xc_torque can only be computed in the 3D case.'
169 if (outp%what(option__output__mmb_den))
then
178 if (outp%what(option__output__energy_density))
call messages_experimental(
"'Output = energy_density'", namespace=namespace)
179 if (outp%what(option__output__heat_current))
call messages_experimental(
"'Output = heat_current'", namespace=namespace)
181 if (outp%what(option__output__wfs) .or. outp%what(option__output__wfs_sqmod))
then
193 write(nst_string,
'(i6)') nst
194 write(default,
'(a,a)')
"1-", trim(adjustl(nst_string))
195 call parse_variable(namespace,
'OutputWfsNumber', default, outp%wfs_list)
198 if (
parse_block(namespace,
'CurrentThroughPlane', blk) == 0)
then
199 if (.not. outp%what(option__output__j_flow))
then
200 outp%what(option__output__j_flow) = .
true.
201 call parse_variable(namespace,
'OutputInterval', 50, outp%output_interval(option__output__j_flow))
252 select case (space%dim)
270 norm = norm2(outp%plane%u(1:3))
272 write(
message(1),
'(a)')
'u-vector for CurrentThroughPlane cannot have norm zero.'
275 outp%plane%u(1:3) = outp%plane%u(1:3) / norm
277 norm = norm2(outp%plane%v(1:3))
279 write(
message(1),
'(a)')
'v-vector for CurrentThroughPlane cannot have norm zero.'
282 outp%plane%v(1:3) = outp%plane%v(1:3) / norm
284 outp%plane%n(1) = outp%plane%u(2)*outp%plane%v(3) - outp%plane%u(3)*outp%plane%v(2)
285 outp%plane%n(2) = outp%plane%u(3)*outp%plane%v(1) - outp%plane%u(1)*outp%plane%v(3)
286 outp%plane%n(3) = outp%plane%u(1)*outp%plane%v(2) - outp%plane%u(2)*outp%plane%v(1)
298 norm = norm2(outp%line%u(1:2))
300 write(
message(1),
'(a)')
'u-vector for CurrentThroughPlane cannot have norm zero.'
303 outp%line%u(1:2) = outp%line%u(1:2) / norm
305 outp%line%n(1) = -outp%line%u(2)
306 outp%line%n(2) = outp%line%u(1)
320 if (outp%what(option__output__matrix_elements))
then
323 outp%me%what = .false.
326 if (outp%what(option__output__berkeleygw))
then
328 message(1) =
"BerkeleyGW is not compatible with GPUs."
335 if (outp%what(option__output__potential_gradient) .and. .not. outp%what(option__output__potential))
then
336 outp%what(option__output__potential) = .
true.
337 outp%output_interval(option__output__potential) = outp%output_interval(option__output__potential_gradient)
349 call parse_variable(namespace,
'OutputDuringSCF', .false., outp%duringscf)
352 write(
message(1),
'(a)')
'Input variable RestartWriteInterval is obsolete.'
353 write(
message(2),
'(a)')
'Restart files are now written in periods of the wallclock time'
354 write(
message(3),
'(a)')
'given by RestartWallTimePeriod, so you can simply delete this variable.'
369 call parse_variable(namespace,
'OutputIterDir',
"output_iter", outp%iter_dir)
370 if (any(outp%what) .and. any(outp%output_interval > 0))
then
371 call io_mkdir(outp%iter_dir, namespace)
384 if (outp%what(option__output__current_dia))
then
385 message(1) =
"The diamagnetic current will be calculated only if CalculateDiamagneticCurrent = yes."
390 do iout = lbound(outp%how, 1), ubound(outp%how, 1)
391 if (
bitand(outp%how(iout), option__outputformat__etsf) /= 0)
then
392 message(1) =
"ETSF output can only be used if Octopus is compiled with ETSF-IO"
402 subroutine output_all(outp, namespace, space, dir, gr, ions, iter, st, hm, ks)
405 class(
space_t),
intent(in) :: space
406 character(len=*),
intent(in) :: dir
407 type(
grid_t),
intent(in) :: gr
408 type(
ions_t),
intent(in) :: ions
409 integer,
intent(in) :: iter
412 type(
v_ks_t),
intent(inout) :: ks
414 integer :: idir, ierr, iout, iunit
415 character(len=MAX_PATH_LEN) :: fname
420 if (any(outp%what))
then
421 message(1) =
"Info: Writing output to " // trim(dir)
426 if (outp%what_now(option__output__mesh_r, iter))
then
427 do idir = 1, space%dim
428 write(fname,
'(a,a)')
'mesh_r-',
index2axis(idir)
430 gr, gr%x_t(:,idir),
units_out%length, ierr, pos=ions%pos, atoms=ions%atom)
434 call output_states(outp, namespace, space, dir, st, gr, ions, hm, iter)
435 call output_hamiltonian(outp, namespace, space, dir, hm, st, gr%der, ions, gr, iter, st%st_kpt_mpi_grp)
438 if (outp%what_now(option__output__el_pressure, iter))
then
442 if (st%d%spin_channels > 1)
then
448 if (outp%what(option__output__kanamoriu) .and. hm%lda_u_level /=
dft_u_acbn0)
then
449 message(1) =
"kanamoriU output can only be computed for DFTULevel = dft_u_acbn0"
456 if (outp%what_now(option__output__j_flow, iter))
then
460 if (outp%what_now(option__output__geometry, iter))
then
461 if (
bitand(outp%how(option__output__geometry), option__outputformat__xcrysden) /= 0)
then
464 if (
bitand(outp%how(option__output__geometry), option__outputformat__xyz) /= 0)
then
465 call ions%write_xyz(trim(dir)//
'/geometry')
466 if (ions%space%is_periodic())
then
467 call ions%write_crystal(dir)
470 if (
bitand(outp%how(option__output__geometry), option__outputformat__vtk) /= 0)
then
471 call ions%write_vtk_geometry(trim(dir)//
'/geometry')
473 if (
bitand(outp%how(option__output__geometry), option__outputformat__poscar) /= 0)
then
474 call ions%write_poscar(trim(dir)//
'/POSCAR')
478 if (outp%what_now(option__output__forces, iter))
then
479 if (
bitand(outp%how(option__output__forces), option__outputformat__bild) /= 0)
then
480 call ions%write_bild_forces_file(dir,
"forces")
483 gr, namespace, total_forces = ions%tot_force)
487 if (outp%what_now(option__output__matrix_elements, iter))
then
488 call output_me(outp%me, namespace, space, dir, st, gr, ions, hm)
491 do iout = lbound(outp%how, 1), ubound(outp%how, 1)
492 if (
bitand(outp%how(iout), option__outputformat__etsf) /= 0)
then
493 call output_etsf(outp, namespace, space, dir, st, gr, hm%kpoints, ions, iter)
498 if (outp%what_now(option__output__berkeleygw, iter))
then
502 if (outp%what_now(option__output__energy_density, iter))
then
506 if (outp%what_now(option__output__stress, iter))
then
508 iunit =
io_open(trim(dir)//
'/stress', namespace, action=
'write')
509 call output_stress(iunit, space%periodic_dim, st%stress_tensors)
514 if (outp%what_now(option__output__occ_matrices, iter))&
517 if (outp%what_now(option__output__effectiveu, iter))&
520 if (outp%what_now(option__output__magnetization, iter))&
523 if (outp%what_now(option__output__local_orbitals, iter))&
524 call output_dftu_orbitals(outp, dir, namespace, space, hm%lda_u, st, gr, ions, hm%phase%is_allocated())
526 if (outp%what_now(option__output__kanamoriu, iter))&
530 if (outp%what_now(option__output__photon_correlator, iter))
then
531 write(fname,
'(a)')
'photon_correlator'
532 call dio_function_output(outp%how(option__output__photon_correlator), dir, trim(fname), namespace, space, &
533 gr, ks%oep_photon%pt%correlator(:,1),
units_out%length, ierr, pos=ions%pos, atoms=ions%atom)
539 if (outp%what_now(option__output__xc_torque, iter))
then
541 write(
message(1),
'(a)')
'The output xc_torque can only be computed when there is a xc potential.'
557 class(
space_t),
intent(in) :: space
558 character(len=*),
intent(in) :: dir
561 type(
grid_t),
intent(in) :: gr
562 type(
ions_t),
intent(in) :: ions
563 integer,
intent(in) :: iter
565 real(real64),
allocatable :: f_loc(:,:)
566 character(len=MAX_PATH_LEN) :: fname
567 integer :: is, ierr, imax
572 mpi_grp = st%dom_st_kpt_mpi_grp
578 safe_allocate(f_loc(1:gr%np, 1:imax))
581 if (outp%what_now(option__output__elf, iter) .or. outp%what_now(option__output__elf_basins, iter))
then
582 assert(space%dim /= 1)
584 call elf_calc(space, st, gr, hm%kpoints, f_loc)
587 if (outp%what_now(option__output__elf, iter))
then
588 write(fname,
'(a)')
'elf_rs'
589 call dio_function_output(outp%how(option__output__elf), dir, trim(fname), namespace, space, gr, &
590 f_loc(:,imax),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
595 write(fname,
'(a,i1)')
'elf_rs-sp', is
596 call dio_function_output(outp%how(option__output__elf), dir, trim(fname), namespace, space, gr, &
597 f_loc(:, is),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
603 if (outp%what_now(option__output__elf_basins, iter))
then
604 call out_basins(f_loc(:,1),
"elf_rs_basins", outp%how(option__output__elf_basins))
609 if (outp%what_now(option__output__bader, iter))
then
610 do is = 1, st%d%nspin
615 call dio_function_output(outp%how(option__output__bader), dir, trim(fname), namespace, space, gr, &
616 f_loc(:,is),
units_out%length**(-2 - space%dim), ierr, &
617 pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
620 call out_basins(f_loc(:,1), fname, outp%how(option__output__bader))
625 if (outp%what_now(option__output__el_pressure, iter))
then
627 call dio_function_output(outp%how(option__output__el_pressure), dir,
"el_pressure", namespace, space, gr, &
628 f_loc(:,1),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
632 safe_deallocate_a(f_loc)
638 subroutine out_basins(ff, filename, output_how)
639 real(real64),
intent(in) :: ff(:)
640 character(len=*),
intent(in) :: filename
641 integer(int64),
intent(in) :: output_how
643 character(len=MAX_PATH_LEN) :: fname
650 call basins_analyze(basins, namespace, gr, ff(:), st%rho, 0.01_real64)
653 real(basins%map, real64) , unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
656 write(fname,
'(4a)') trim(dir),
'/', trim(filename),
'.info'
657 iunit =
io_open(trim(fname), namespace, action =
'write')
673 type(
grid_t),
intent(in) :: gr
674 real(real64),
intent(out) :: pressure(:)
676 real(real64),
allocatable :: rho(:,:), lrho(:), tau(:,:)
677 real(real64) :: p_tf, dens
682 safe_allocate( rho(1:gr%np_part, 1:st%d%nspin))
683 safe_allocate(lrho(1:gr%np))
684 safe_allocate( tau(1:gr%np, 1:st%d%nspin))
691 do is = 1, st%d%spin_channels
695 pressure(:) = pressure(:) + &
700 dens = sum(rho(ii,1:st%d%spin_channels))
707 pressure(ii) = pressure(ii) + (dens*hm%ks_pot%vxc(ii,1) - hm%energy%exchange - hm%energy%correlation)
709 pressure(ii) = pressure(ii)/p_tf
721 class(
space_t),
intent(in) :: space
722 character(len=*),
intent(in) :: dir
724 type(
v_ks_t),
intent(inout) :: ks
726 type(
ions_t),
intent(in) :: ions
727 type(
grid_t),
intent(in) :: gr
729 integer :: is, ierr, ip
730 character(len=MAX_PATH_LEN) :: fname
732 real(real64),
allocatable :: energy_density(:, :)
733 real(real64),
allocatable :: ex_density(:)
734 real(real64),
allocatable :: ec_density(:)
739 safe_allocate(energy_density(1:gr%np, 1:st%d%nspin))
745 do is = 1, st%d%nspin
747 energy_density(ip, is) = energy_density(ip, is) + st%rho(ip, is)*hm%ep%vpsl(ip)
752 do is = 1, st%d%nspin
754 energy_density(ip, is) = energy_density(ip, is) +
m_half*st%rho(ip, is)*hm%ks_pot%vhartree(ip)
759 safe_allocate(ex_density(1:gr%np))
760 safe_allocate(ec_density(1:gr%np))
762 call xc_get_vxc(gr, ks%xc, st, hm%kpoints, hm%psolver, namespace, space, st%rho, st%d%ispin, &
763 hm%ions%latt%rcell_volume, ex_density = ex_density, ec_density = ec_density)
764 do is = 1, st%d%nspin
766 energy_density(ip, is) = energy_density(ip, is) + ex_density(ip) + ec_density(ip)
770 safe_deallocate_a(ex_density)
771 safe_deallocate_a(ec_density)
773 do is = 1, st%d%spin_channels
775 call dio_function_output(outp%how(option__output__energy_density), dir, trim(fname), namespace, space, gr, &
776 energy_density(:, is),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = st%dom_st_kpt_mpi_grp)
778 safe_deallocate_a(energy_density)
788 need_exx =(outp%what(option__output__berkeleygw) &
789 .or. outp%me%what(option__outputmatrixelements__two_body) &
790 .or. outp%me%what(option__outputmatrixelements__two_body_exc_k))
797 character(len=*),
intent(in) :: dir
799 class(
space_t),
intent(in) :: space
800 type(
lda_u_t),
intent(in) :: this
802 class(
mesh_t),
intent(in) :: mesh
803 type(
ions_t),
intent(in) :: ions
804 logical,
intent(in) :: has_phase
806 integer :: ios, im, ik, idim, ierr
807 complex(real64),
allocatable :: tmp(:)
808 real(real64),
allocatable :: dtmp(:)
811 character(len=MAX_PATH_LEN) :: fname
817 if (this%basis%use_submesh)
then
819 safe_allocate(dtmp(1:mesh%np))
821 safe_allocate(tmp(1:mesh%np))
825 do ios = 1, this%norbsets
826 os => this%orbsets(ios)
827 do ik = st%d%kpt%start, st%d%kpt%end
828 do im = 1, this%orbsets(ios)%norbs
829 do idim = 1, min(os%ndim, st%d%dim)
831 if (min(os%ndim, st%d%dim) > 1)
then
832 write(fname,
'(a,i1,a,i3.3,a,i8.8,a,i1)')
'orb', im,
'-os', ios,
'-k', ik,
'-sp', idim
834 write(fname,
'(a,i1,a,i3.3,a,i8.8)')
'orb', im,
'-os', ios,
'-k', ik
837 if (min(os%ndim, st%d%dim) > 1)
then
838 write(fname,
'(a,i1,a,i3.3,a,i1)')
'orb', im,
'-os', ios,
'-sp', idim
840 write(fname,
'(a,i1,a,i3.3)')
'orb', im,
'-os', ios
844 if (.not. this%basis%use_submesh)
then
845 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
846 mesh, os%eorb_mesh(1:mesh%np,im,idim,ik), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
850 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
851 mesh, tmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
854 if (.not. this%basis%use_submesh)
then
856 call dio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, mesh, &
857 os%dorb(1:mesh%np,idim,im), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
859 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, mesh, &
860 os%zorb(1:mesh%np,idim,im), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
866 call dio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
867 mesh, dtmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
871 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
872 mesh, tmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
881 safe_deallocate_a(tmp)
882 safe_deallocate_a(dtmp)
890 logical,
intent(in) :: states_are_real
894 if (outp%what(option__output__current) &
895 .or. outp%what(option__output__current_dia) &
896 .or. outp%what(option__output__heat_current) &
897 .or. outp%what(option__output__current_kpt))
then
898 if (.not. states_are_real)
then
901 message(1) =
'No current density output for real states since it is identically zero.'
909#include "output_etsf_inc.F90"
911#include "output_states_inc.F90"
913#include "output_h_inc.F90"
916#include "complex.F90"
917#include "output_linear_response_inc.F90"
921#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.
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:
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)
integer, parameter, public oep_level_full
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)
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.