48 use,
intrinsic :: iso_fortran_env
112 subroutine output_init(outp, namespace, space, st, gr, nst, ks)
113 type(output_t),
intent(out) :: outp
114 type(namespace_t),
intent(in) :: namespace
115 class(space_t),
intent(in) :: space
116 type(states_elec_t),
intent(in) :: st
117 type(grid_t),
intent(in) :: gr
118 integer,
intent(in) :: nst
119 type(v_ks_t),
intent(inout) :: ks
123 character(len=80) :: nst_string, default
130 if (outp%what(option__output__wfs_fourier))
then
132 message(1) =
"Wave functions in Fourier space not supported on GPUs."
139 if (outp%what(option__output__elf) .or. outp%what(option__output__elf_basins))
then
140 if (space%dim /= 2 .and. space%dim /= 3)
then
141 outp%what(option__output__elf) = .false.
142 outp%what(option__output__elf_basins) = .false.
143 write(
message(1),
'(a)')
'Cannot calculate ELF except in 2D and 3D.'
149 if (outp%what(option__output__mmb_wfs))
then
153 if (outp%what(option__output__xc_torque))
then
154 if (st%d%ispin /=
spinors)
then
155 write(
message(1),
'(a)')
'The output xc_torque can only be computed for spinors.'
158 if (space%dim /= 3)
then
159 write(
message(1),
'(a)')
'The output xc_torque can only be computed in the 3D case.'
163 if (outp%what(option__output__mmb_den))
then
172 if (outp%what(option__output__energy_density))
call messages_experimental(
"'Output = energy_density'", namespace=namespace)
173 if (outp%what(option__output__heat_current))
call messages_experimental(
"'Output = heat_current'", namespace=namespace)
175 if (outp%what(option__output__wfs) .or. outp%what(option__output__wfs_sqmod))
then
187 write(nst_string,
'(i6)') nst
188 write(default,
'(a,a)')
"1-", trim(adjustl(nst_string))
189 call parse_variable(namespace,
'OutputWfsNumber', default, outp%wfs_list)
192 if (
parse_block(namespace,
'CurrentThroughPlane', blk) == 0)
then
193 if (.not. outp%what(option__output__j_flow))
then
194 outp%what(option__output__j_flow) = .
true.
195 call parse_variable(namespace,
'OutputInterval', 50, outp%output_interval(option__output__j_flow))
246 select case (space%dim)
264 norm = norm2(outp%plane%u(1:3))
266 write(
message(1),
'(a)')
'u-vector for CurrentThroughPlane cannot have norm zero.'
269 outp%plane%u(1:3) = outp%plane%u(1:3) / norm
271 norm = norm2(outp%plane%v(1:3))
273 write(
message(1),
'(a)')
'v-vector for CurrentThroughPlane cannot have norm zero.'
276 outp%plane%v(1:3) = outp%plane%v(1:3) / norm
278 outp%plane%n(1:3) =
dcross_product(outp%plane%u(1:3), outp%plane%v(1:3))
290 norm = norm2(outp%line%u(1:2))
292 write(
message(1),
'(a)')
'u-vector for CurrentThroughPlane cannot have norm zero.'
295 outp%line%u(1:2) = outp%line%u(1:2) / norm
297 outp%line%n(1) = -outp%line%u(2)
298 outp%line%n(2) = outp%line%u(1)
312 if (outp%what(option__output__matrix_elements))
then
315 outp%me%what = .false.
318 if (outp%what(option__output__berkeleygw))
then
320 message(1) =
"BerkeleyGW is not compatible with GPUs."
327 if (outp%what(option__output__potential_gradient) .and. .not. outp%what(option__output__potential))
then
328 outp%what(option__output__potential) = .
true.
329 outp%output_interval(option__output__potential) = outp%output_interval(option__output__potential_gradient)
341 call parse_variable(namespace,
'OutputDuringSCF', .false., outp%duringscf)
344 write(
message(1),
'(a)')
'Input variable RestartWriteInterval is obsolete.'
345 write(
message(2),
'(a)')
'Restart files are now written in periods of the wallclock time'
346 write(
message(3),
'(a)')
'given by RestartWallTimePeriod, so you can simply delete this variable.'
361 call parse_variable(namespace,
'OutputIterDir',
"output_iter", outp%iter_dir)
362 if (any(outp%what) .and. any(outp%output_interval > 0))
then
363 call io_mkdir(outp%iter_dir, namespace)
376 if (outp%what(option__output__current_dia))
then
377 message(1) =
"The diamagnetic current will be calculated only if CalculateDiamagneticCurrent = yes."
399 if (st%requires_generalized_overlap)
then
401 if (outp%what(option__output__current) .or. outp%what(option__output__current_dia) .or. &
402 outp%what(option__output__current_kpt) .or. outp%what(option__output__j_flow))
then
407 if (outp%what(option__output__heat_current))
then
410 if (outp%what(option__output__elf) .or. outp%what(option__output__elf_basins) .or. &
411 outp%what(option__output__energy_density) .or. outp%what(option__output__kinetic_energy_density) .or. &
412 outp%what(option__output__el_pressure))
then
414 "Output of ELF / (kinetic-)energy-density / electronic pressure with ultrasoft/PAW", namespace=namespace)
417 if (outp%what(option__output__matrix_elements))
then
420 if (outp%what(option__output__pdos))
then
429 subroutine output_all(outp, namespace, space, dir, gr, ions, iter, st, hm, ks)
432 class(
space_t),
intent(in) :: space
433 character(len=*),
intent(in) :: dir
434 type(
grid_t),
intent(in) :: gr
435 type(
ions_t),
intent(in) :: ions
436 integer,
intent(in) :: iter
439 type(
v_ks_t),
intent(inout) :: ks
441 integer :: idir, ierr, iunit
442 character(len=MAX_PATH_LEN) :: fname
447 if (any(outp%what))
then
448 message(1) =
"Info: Writing output to " // trim(dir)
453 if (outp%what_now(option__output__mesh_r, iter))
then
454 do idir = 1, space%dim
455 write(fname,
'(a,a)')
'mesh_r-',
index2axis(idir)
457 gr, gr%x_t(:,idir),
units_out%length, ierr, pos=ions%pos, atoms=ions%atom)
461 call output_states(outp, namespace, space, dir, st, gr, ions, hm, iter)
462 call output_hamiltonian(outp, namespace, space, dir, hm, st, gr%der, ions, gr, iter, st%st_kpt_mpi_grp)
465 if (outp%what_now(option__output__el_pressure, iter))
then
469 if (st%d%spin_channels > 1)
then
475 if (outp%what(option__output__kanamoriu) .and. hm%lda_u_level /=
dft_u_acbn0)
then
476 message(1) =
"kanamoriU output can only be computed for DFTULevel = dft_u_acbn0"
483 if (outp%what_now(option__output__j_flow, iter))
then
487 if (outp%what_now(option__output__geometry, iter))
then
488 if (
bitand(outp%how(option__output__geometry), option__outputformat__xcrysden) /= 0)
then
491 if (
bitand(outp%how(option__output__geometry), option__outputformat__xyz) /= 0)
then
492 call ions%write_xyz(trim(dir)//
'/geometry')
493 if (ions%space%is_periodic())
then
494 call ions%write_crystal(dir)
497 if (
bitand(outp%how(option__output__geometry), option__outputformat__vtk) /= 0)
then
498 call ions%write_vtk_geometry(trim(dir)//
'/geometry')
500 if (
bitand(outp%how(option__output__geometry), option__outputformat__poscar) /= 0)
then
501 call ions%write_poscar(trim(dir)//
'/POSCAR')
505 if (outp%what_now(option__output__forces, iter))
then
506 if (
bitand(outp%how(option__output__forces), option__outputformat__bild) /= 0)
then
507 call ions%write_bild_forces_file(dir,
"forces")
510 gr, st%system_grp, namespace, total_forces = ions%tot_force)
514 if (outp%what_now(option__output__matrix_elements, iter))
then
515 call output_me(outp%me, namespace, space, dir, st, gr, ions, hm)
518 if (outp%what_now(option__output__berkeleygw, iter))
then
522 if (outp%what_now(option__output__energy_density, iter))
then
526 if (outp%what_now(option__output__stress, iter))
then
528 iunit =
io_open(trim(dir)//
'/stress', namespace, action=
'write')
529 call output_stress(iunit, space%periodic_dim, st%stress_tensors, st%system_grp)
534 if (outp%what_now(option__output__occ_matrices, iter))&
537 if (outp%what_now(option__output__effectiveu, iter))&
540 if (outp%what_now(option__output__magnetization, iter))&
543 if (outp%what_now(option__output__local_orbitals, iter))&
544 call output_dftu_orbitals(outp, dir, namespace, space, hm%lda_u, st, gr, ions, hm%phase%is_allocated())
546 if (outp%what_now(option__output__kanamoriu, iter))&
549 if (ks%v_ks_photons%oep_full())
then
550 if (outp%what_now(option__output__photon_correlator, iter))
then
551 write(fname,
'(a)')
'photon_correlator'
552 call dio_function_output(outp%how(option__output__photon_correlator), dir, trim(fname), namespace, space, &
553 gr, ks%v_ks_photons%correlator(),
units_out%length, ierr, pos=ions%pos, atoms=ions%atom)
559 if (outp%what_now(option__output__xc_torque, iter))
then
561 write(
message(1),
'(a)')
'The output xc_torque can only be computed when there is a xc potential.'
577 class(
space_t),
intent(in) :: space
578 character(len=*),
intent(in) :: dir
581 type(
grid_t),
intent(in) :: gr
582 type(
ions_t),
intent(in) :: ions
583 integer,
intent(in) :: iter
585 real(real64),
allocatable :: f_loc(:,:)
586 character(len=MAX_PATH_LEN) :: fname
587 integer :: is, ierr, imax
592 mpi_grp = st%dom_st_kpt_mpi_grp
598 safe_allocate(f_loc(1:gr%np, 1:max(imax, st%d%nspin)))
601 if (outp%what_now(option__output__elf, iter) .or. outp%what_now(option__output__elf_basins, iter))
then
602 assert(space%dim /= 1)
604 call elf_calc(space, st, gr, hm%kpoints, f_loc(:, 1:imax))
607 if (outp%what_now(option__output__elf, iter))
then
608 write(fname,
'(a)')
'elf_rs'
609 call dio_function_output(outp%how(option__output__elf), dir, trim(fname), namespace, space, gr, &
610 f_loc(:,imax),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
615 write(fname,
'(a,i1)')
'elf_rs-sp', is
616 call dio_function_output(outp%how(option__output__elf), dir, trim(fname), namespace, space, gr, &
617 f_loc(:, is),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
623 if (outp%what_now(option__output__elf_basins, iter))
then
624 call out_basins(f_loc(:,imax),
"elf_rs_basins", outp%how(option__output__elf_basins))
629 if (outp%what_now(option__output__bader, iter))
then
630 do is = 1, st%d%nspin
635 call dio_function_output(outp%how(option__output__bader), dir, trim(fname), namespace, space, gr, &
636 f_loc(:,is),
units_out%length**(-2 - space%dim), ierr, &
637 pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
640 call out_basins(f_loc(:, is), fname, outp%how(option__output__bader))
645 if (outp%what_now(option__output__el_pressure, iter))
then
647 call dio_function_output(outp%how(option__output__el_pressure), dir,
"el_pressure", namespace, space, gr, &
648 f_loc(:,1),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
652 safe_deallocate_a(f_loc)
658 subroutine out_basins(ff, filename, output_how)
659 real(real64),
contiguous,
intent(in) :: ff(:)
660 character(len=*),
intent(in) :: filename
661 integer(int64),
intent(in) :: output_how
663 character(len=MAX_PATH_LEN) :: fname
670 call basins_analyze(basins, namespace, gr, ff(:), st%rho(:, 1:st%d%spin_channels), 0.01_real64)
673 real(basins%map, real64) , unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = mpi_grp)
676 write(fname,
'(4a)') trim(dir),
'/', trim(filename),
'.info'
677 iunit =
io_open(trim(fname), namespace, action =
'write')
693 type(
grid_t),
intent(in) :: gr
694 real(real64),
contiguous,
intent(out) :: pressure(:)
696 real(real64),
allocatable :: rho(:,:), lrho(:), tau(:,:)
697 real(real64) :: p_tf, dens
702 safe_allocate( rho(1:gr%np_part, 1:st%d%nspin))
703 safe_allocate(lrho(1:gr%np))
704 safe_allocate( tau(1:gr%np, 1:st%d%nspin))
711 do is = 1, st%d%spin_channels
715 pressure(:) = pressure(:) + &
720 dens = sum(rho(ii,1:st%d%spin_channels))
727 pressure(ii) = pressure(ii) + (dens*hm%ks_pot%vxc(ii,1) - hm%energy%exchange - hm%energy%correlation)
729 pressure(ii) = pressure(ii)/p_tf
741 class(
space_t),
intent(in) :: space
742 character(len=*),
intent(in) :: dir
744 type(
v_ks_t),
intent(inout) :: ks
746 type(
ions_t),
intent(in) :: ions
747 type(
grid_t),
intent(in) :: gr
749 integer :: is, ierr, ip
750 character(len=MAX_PATH_LEN) :: fname
752 real(real64),
allocatable :: energy_density(:, :)
753 real(real64),
allocatable :: ex_density(:)
754 real(real64),
allocatable :: ec_density(:)
755 real(real64) :: xc_energy
760 safe_allocate(energy_density(1:gr%np, 1:st%d%nspin))
766 do is = 1, st%d%spin_channels
768 energy_density(ip, is) = energy_density(ip, is) + st%rho(ip, is)*hm%ep%vpsl(ip)
773 do is = 1, st%d%spin_channels
775 energy_density(ip, is) = energy_density(ip, is) +
m_half*st%rho(ip, is)*hm%ks_pot%vhartree(ip)
780 safe_allocate(ex_density(1:gr%np))
781 safe_allocate(ec_density(1:gr%np))
783 call xc_get_vxc(gr, ks%xc, st, hm%kpoints, hm%psolver, namespace, space, st%rho, st%d%ispin, &
784 hm%ions%latt%rcell_volume, ex_density = ex_density, ec_density = ec_density)
787 xc_energy = ex_density(ip) + ec_density(ip)
788 do is = 1, st%d%spin_channels
789 energy_density(ip, is) = energy_density(ip, is) + xc_energy
793 safe_deallocate_a(ex_density)
794 safe_deallocate_a(ec_density)
796 do is = 1, st%d%spin_channels
798 call dio_function_output(outp%how(option__output__energy_density), dir, trim(fname), namespace, space, gr, &
799 energy_density(:, is),
unit_one, ierr, pos=ions%pos, atoms=ions%atom, grp = st%dom_st_kpt_mpi_grp)
801 safe_deallocate_a(energy_density)
811 need_exx =(outp%what(option__output__berkeleygw) &
812 .or. outp%me%what(option__outputmatrixelements__two_body) &
813 .or. outp%me%what(option__outputmatrixelements__two_body_exc_k))
820 character(len=*),
intent(in) :: dir
822 class(
space_t),
intent(in) :: space
823 type(
lda_u_t),
intent(in) :: this
825 class(
mesh_t),
intent(in) :: mesh
826 type(
ions_t),
intent(in) :: ions
827 logical,
intent(in) :: has_phase
829 integer :: ios, im, ik, idim, ierr
830 complex(real64),
allocatable :: tmp(:)
831 real(real64),
allocatable :: dtmp(:)
834 character(len=MAX_PATH_LEN) :: fname
840 if (this%basis%use_submesh)
then
842 safe_allocate(dtmp(1:mesh%np))
844 safe_allocate(tmp(1:mesh%np))
848 do ios = 1, this%norbsets
849 os => this%orbsets(ios)
850 do ik = st%d%kpt%start, st%d%kpt%end
851 do im = 1, this%orbsets(ios)%norbs
852 do idim = 1, min(os%ndim, st%d%dim)
854 if (min(os%ndim, st%d%dim) > 1)
then
855 write(fname,
'(a,i1,a,i3.3,a,i8.8,a,i1)')
'orb', im,
'-os', ios,
'-k', ik,
'-sp', idim
857 write(fname,
'(a,i1,a,i3.3,a,i8.8)')
'orb', im,
'-os', ios,
'-k', ik
860 if (min(os%ndim, st%d%dim) > 1)
then
861 write(fname,
'(a,i1,a,i3.3,a,i1)')
'orb', im,
'-os', ios,
'-sp', idim
863 write(fname,
'(a,i1,a,i3.3)')
'orb', im,
'-os', ios
867 if (.not. this%basis%use_submesh)
then
868 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
869 mesh, os%eorb_mesh(1:mesh%np,im,idim,ik), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
873 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
874 mesh, tmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
877 if (.not. this%basis%use_submesh)
then
879 call dio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, mesh, &
880 os%dorb(1:mesh%np,idim,im), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
882 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, mesh, &
883 os%zorb(1:mesh%np,idim,im), fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
889 call dio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
890 mesh, dtmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
894 call zio_function_output(outp%how(option__output__local_orbitals), dir, fname, namespace, space, &
895 mesh, tmp, fn_unit, ierr, pos=ions%pos, atoms=ions%atom)
904 safe_deallocate_a(tmp)
905 safe_deallocate_a(dtmp)
913 logical,
intent(in) :: states_are_real
917 if (outp%what(option__output__current) &
918 .or. outp%what(option__output__current_dia) &
919 .or. outp%what(option__output__heat_current) &
920 .or. outp%what(option__output__j_flow) &
921 .or. outp%what(option__output__current_kpt))
then
922 if (.not. states_are_real)
then
925 message(1) =
'No current density output for real states since it is identically zero.'
933#include "output_states_inc.F90"
935#include "output_h_inc.F90"
938#include "complex.F90"
939#include "output_linear_response_inc.F90"
943#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, ep, vnl, phase)
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
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, mpi_grp, 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)
subroutine, public output_scalar_pot(outp, namespace, space, dir, mesh, ions, ext_partners, grp, time)
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 output_check_generalized_overlap(outp, st, namespace)
Fence the requested outputs that are not yet correct with a generalized overlap.
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 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_)
/* To use the profiling module, call profiling_in and profiling_out with the label of the region as a...
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, mpi_grp, 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.