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:3) =
dcross_product(outp%plane%u(1:3), outp%plane%v(1:3))
296 norm = norm2(outp%line%u(1:2))
298 write(
message(1),
'(a)')
'u-vector for CurrentThroughPlane cannot have norm zero.'
301 outp%line%u(1:2) = outp%line%u(1:2) / norm
303 outp%line%n(1) = -outp%line%u(2)
304 outp%line%n(2) = outp%line%u(1)
318 if (outp%what(option__output__matrix_elements))
then
321 outp%me%what = .false.
324 if (outp%what(option__output__berkeleygw))
then
326 message(1) =
"BerkeleyGW is not compatible with GPUs."
333 if (outp%what(option__output__potential_gradient) .and. .not. outp%what(option__output__potential))
then
334 outp%what(option__output__potential) = .
true.
335 outp%output_interval(option__output__potential) = outp%output_interval(option__output__potential_gradient)
347 call parse_variable(namespace,
'OutputDuringSCF', .false., outp%duringscf)
350 write(
message(1),
'(a)')
'Input variable RestartWriteInterval is obsolete.'
351 write(
message(2),
'(a)')
'Restart files are now written in periods of the wallclock time'
352 write(
message(3),
'(a)')
'given by RestartWallTimePeriod, so you can simply delete this variable.'
367 call parse_variable(namespace,
'OutputIterDir',
"output_iter", outp%iter_dir)
368 if (any(outp%what) .and. any(outp%output_interval > 0))
then
369 call io_mkdir(outp%iter_dir, namespace)
382 if (outp%what(option__output__current_dia))
then
383 message(1) =
"The diamagnetic current will be calculated only if CalculateDiamagneticCurrent = yes."
388 do iout = lbound(outp%how, 1), ubound(outp%how, 1)
389 if (
bitand(outp%how(iout), option__outputformat__etsf) /= 0)
then
390 message(1) =
"ETSF output can only be used if Octopus is compiled with ETSF-IO"
400 subroutine output_all(outp, namespace, space, dir, gr, ions, iter, st, hm, ks)
403 class(
space_t),
intent(in) :: space
404 character(len=*),
intent(in) :: dir
405 type(
grid_t),
intent(in) :: gr
406 type(
ions_t),
intent(in) :: ions
407 integer,
intent(in) :: iter
410 type(
v_ks_t),
intent(inout) :: ks
412 integer :: idir, ierr, iout, iunit
413 character(len=MAX_PATH_LEN) :: fname
418 if (any(outp%what))
then
419 message(1) =
"Info: Writing output to " // trim(dir)
424 if (outp%what_now(option__output__mesh_r, iter))
then
425 do idir = 1, space%dim
426 write(fname,
'(a,a)')
'mesh_r-',
index2axis(idir)
428 gr, gr%x_t(:,idir),
units_out%length, ierr, pos=ions%pos, atoms=ions%atom)
432 call output_states(outp, namespace, space, dir, st, gr, ions, hm, iter)
433 call output_hamiltonian(outp, namespace, space, dir, hm, st, gr%der, ions, gr, iter, st%st_kpt_mpi_grp)
436 if (outp%what_now(option__output__el_pressure, iter))
then
440 if (st%d%spin_channels > 1)
then
446 if (outp%what(option__output__kanamoriu) .and. hm%lda_u_level /=
dft_u_acbn0)
then
447 message(1) =
"kanamoriU output can only be computed for DFTULevel = dft_u_acbn0"
454 if (outp%what_now(option__output__j_flow, iter))
then
458 if (outp%what_now(option__output__geometry, iter))
then
459 if (
bitand(outp%how(option__output__geometry), option__outputformat__xcrysden) /= 0)
then
462 if (
bitand(outp%how(option__output__geometry), option__outputformat__xyz) /= 0)
then
463 call ions%write_xyz(trim(dir)//
'/geometry')
464 if (ions%space%is_periodic())
then
465 call ions%write_crystal(dir)
468 if (
bitand(outp%how(option__output__geometry), option__outputformat__vtk) /= 0)
then
469 call ions%write_vtk_geometry(trim(dir)//
'/geometry')
471 if (
bitand(outp%how(option__output__geometry), option__outputformat__poscar) /= 0)
then
472 call ions%write_poscar(trim(dir)//
'/POSCAR')
476 if (outp%what_now(option__output__forces, iter))
then
477 if (
bitand(outp%how(option__output__forces), option__outputformat__bild) /= 0)
then
478 call ions%write_bild_forces_file(dir,
"forces")
481 gr, namespace, total_forces = ions%tot_force)
485 if (outp%what_now(option__output__matrix_elements, iter))
then
486 call output_me(outp%me, namespace, space, dir, st, gr, ions, hm)
489 do iout = lbound(outp%how, 1), ubound(outp%how, 1)
490 if (
bitand(outp%how(iout), option__outputformat__etsf) /= 0)
then
491 call output_etsf(outp, namespace, space, dir, st, gr, hm%kpoints, ions, iter)
496 if (outp%what_now(option__output__berkeleygw, iter))
then
500 if (outp%what_now(option__output__energy_density, iter))
then
504 if (outp%what_now(option__output__stress, iter))
then
506 iunit =
io_open(trim(dir)//
'/stress', namespace, action=
'write')
507 call output_stress(iunit, space%periodic_dim, st%stress_tensors)
512 if (outp%what_now(option__output__occ_matrices, iter))&
515 if (outp%what_now(option__output__effectiveu, iter))&
518 if (outp%what_now(option__output__magnetization, iter))&
521 if (outp%what_now(option__output__local_orbitals, iter))&
522 call output_dftu_orbitals(outp, dir, namespace, space, hm%lda_u, st, gr, ions, hm%phase%is_allocated())
524 if (outp%what_now(option__output__kanamoriu, iter))&
528 if (outp%what_now(option__output__photon_correlator, iter))
then
529 write(fname,
'(a)')
'photon_correlator'
530 call dio_function_output(outp%how(option__output__photon_correlator), dir, trim(fname), namespace, space, &
531 gr, ks%oep_photon%pt%correlator(:,1),
units_out%length, ierr, pos=ions%pos, atoms=ions%atom)
537 if (outp%what_now(option__output__xc_torque, iter))
then
539 write(
message(1),
'(a)')
'The output xc_torque can only be computed when there is a xc potential.'
555 class(
space_t),
intent(in) :: space
556 character(len=*),
intent(in) :: dir
559 type(
grid_t),
intent(in) :: gr
560 type(
ions_t),
intent(in) :: ions
561 integer,
intent(in) :: iter
563 real(real64),
allocatable :: f_loc(:,:)
564 character(len=MAX_PATH_LEN) :: fname
565 integer :: is, ierr, imax
570 mpi_grp = st%dom_st_kpt_mpi_grp
576 safe_allocate(f_loc(1:gr%np, 1:imax))
579 if (outp%what_now(option__output__elf, iter) .or. outp%what_now(option__output__elf_basins, iter))
then
580 assert(space%dim /= 1)
582 call elf_calc(space, st, gr, hm%kpoints, f_loc)
585 if (outp%what_now(option__output__elf, iter))
then
586 write(fname,
'(a)')
'elf_rs'
587 call dio_function_output(outp%how(option__output__elf), dir, trim(fname), namespace, space, gr, &
588 f_loc(:,imax),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
593 write(fname,
'(a,i1)')
'elf_rs-sp', is
594 call dio_function_output(outp%how(option__output__elf), dir, trim(fname), namespace, space, gr, &
595 f_loc(:, is),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
601 if (outp%what_now(option__output__elf_basins, iter))
then
602 call out_basins(f_loc(:,1),
"elf_rs_basins", outp%how(option__output__elf_basins))
607 if (outp%what_now(option__output__bader, iter))
then
608 do is = 1, st%d%nspin
613 call dio_function_output(outp%how(option__output__bader), dir, trim(fname), namespace, space, gr, &
614 f_loc(:,is),
units_out%length**(-2 - space%dim), ierr, &
615 pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
618 call out_basins(f_loc(:, is), fname, outp%how(option__output__bader))
623 if (outp%what_now(option__output__el_pressure, iter))
then
625 call dio_function_output(outp%how(option__output__el_pressure), dir,
"el_pressure", namespace, space, gr, &
626 f_loc(:,1),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
630 safe_deallocate_a(f_loc)
636 subroutine out_basins(ff, filename, output_how)
637 real(real64),
intent(in) :: ff(:)
638 character(len=*),
intent(in) :: filename
639 integer(int64),
intent(in) :: output_how
641 character(len=MAX_PATH_LEN) :: fname
648 call basins_analyze(basins, namespace, gr, ff(:), st%rho, 0.01_real64)
651 real(basins%map, real64) , unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
654 write(fname,
'(4a)') trim(dir),
'/', trim(filename),
'.info'
655 iunit =
io_open(trim(fname), namespace, action =
'write')
671 type(
grid_t),
intent(in) :: gr
672 real(real64),
intent(out) :: pressure(:)
674 real(real64),
allocatable :: rho(:,:), lrho(:), tau(:,:)
675 real(real64) :: p_tf, dens
680 safe_allocate( rho(1:gr%np_part, 1:st%d%nspin))
681 safe_allocate(lrho(1:gr%np))
682 safe_allocate( tau(1:gr%np, 1:st%d%nspin))
689 do is = 1, st%d%spin_channels
693 pressure(:) = pressure(:) + &
698 dens = sum(rho(ii,1:st%d%spin_channels))
705 pressure(ii) = pressure(ii) + (dens*hm%ks_pot%vxc(ii,1) - hm%energy%exchange - hm%energy%correlation)
707 pressure(ii) = pressure(ii)/p_tf
719 class(
space_t),
intent(in) :: space
720 character(len=*),
intent(in) :: dir
722 type(
v_ks_t),
intent(inout) :: ks
724 type(
ions_t),
intent(in) :: ions
725 type(
grid_t),
intent(in) :: gr
727 integer :: is, ierr, ip
728 character(len=MAX_PATH_LEN) :: fname
730 real(real64),
allocatable :: energy_density(:, :)
731 real(real64),
allocatable :: ex_density(:)
732 real(real64),
allocatable :: ec_density(:)
737 safe_allocate(energy_density(1:gr%np, 1:st%d%nspin))
743 do is = 1, st%d%nspin
745 energy_density(ip, is) = energy_density(ip, is) + st%rho(ip, is)*hm%ep%vpsl(ip)
750 do is = 1, st%d%nspin
752 energy_density(ip, is) = energy_density(ip, is) +
m_half*st%rho(ip, is)*hm%ks_pot%vhartree(ip)
757 safe_allocate(ex_density(1:gr%np))
758 safe_allocate(ec_density(1:gr%np))
760 call xc_get_vxc(gr, ks%xc, st, hm%kpoints, hm%psolver, namespace, space, st%rho, st%d%ispin, &
761 hm%ions%latt%rcell_volume, ex_density = ex_density, ec_density = ec_density)
762 do is = 1, st%d%nspin
764 energy_density(ip, is) = energy_density(ip, is) + ex_density(ip) + ec_density(ip)
768 safe_deallocate_a(ex_density)
769 safe_deallocate_a(ec_density)
771 do is = 1, st%d%spin_channels
773 call dio_function_output(outp%how(option__output__energy_density), dir, trim(fname), namespace, space, gr, &
774 energy_density(:, is),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = st%dom_st_kpt_mpi_grp)
776 safe_deallocate_a(energy_density)
786 need_exx =(outp%what(option__output__berkeleygw) &
787 .or. outp%me%what(option__outputmatrixelements__two_body) &
788 .or. outp%me%what(option__outputmatrixelements__two_body_exc_k))
795 character(len=*),
intent(in) :: dir
797 class(
space_t),
intent(in) :: space
798 type(
lda_u_t),
intent(in) :: this
800 class(
mesh_t),
intent(in) :: mesh
801 type(
ions_t),
intent(in) :: ions
802 logical,
intent(in) :: has_phase
804 integer :: ios, im, ik, idim, ierr
805 complex(real64),
allocatable :: tmp(:)
806 real(real64),
allocatable :: dtmp(:)
809 character(len=MAX_PATH_LEN) :: fname
815 if (this%basis%use_submesh)
then
817 safe_allocate(dtmp(1:mesh%np))
819 safe_allocate(tmp(1:mesh%np))
823 do ios = 1, this%norbsets
824 os => this%orbsets(ios)
825 do ik = st%d%kpt%start, st%d%kpt%end
826 do im = 1, this%orbsets(ios)%norbs
827 do idim = 1, min(os%ndim, st%d%dim)
829 if (min(os%ndim, st%d%dim) > 1)
then
830 write(fname,
'(a,i1,a,i3.3,a,i8.8,a,i1)')
'orb', im,
'-os', ios,
'-k', ik,
'-sp', idim
832 write(fname,
'(a,i1,a,i3.3,a,i8.8)')
'orb', im,
'-os', ios,
'-k', ik
835 if (min(os%ndim, st%d%dim) > 1)
then
836 write(fname,
'(a,i1,a,i3.3,a,i1)')
'orb', im,
'-os', ios,
'-sp', idim
838 write(fname,
'(a,i1,a,i3.3)')
'orb', im,
'-os', ios
842 if (.not. this%basis%use_submesh)
then
843 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
844 mesh, os%eorb_mesh(1:mesh%np,im,idim,ik), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
848 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
849 mesh, tmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
852 if (.not. this%basis%use_submesh)
then
854 call dio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, mesh, &
855 os%dorb(1:mesh%np,idim,im), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
857 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, mesh, &
858 os%zorb(1:mesh%np,idim,im), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
864 call dio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
865 mesh, dtmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
869 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
870 mesh, tmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
879 safe_deallocate_a(tmp)
880 safe_deallocate_a(dtmp)
888 logical,
intent(in) :: states_are_real
892 if (outp%what(option__output__current) &
893 .or. outp%what(option__output__current_dia) &
894 .or. outp%what(option__output__heat_current) &
895 .or. outp%what(option__output__current_kpt))
then
896 if (.not. states_are_real)
then
899 message(1) =
'No current density output for real states since it is identically zero.'
907#include "output_etsf_inc.F90"
909#include "output_states_inc.F90"
911#include "output_h_inc.F90"
914#include "complex.F90"
915#include "output_linear_response_inc.F90"
919#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)
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, 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.