61 logical,
public :: calc_spm
62 type(pes_spm_t) :: spm
64 logical,
public :: calc_mask
65 type(pes_mask_t) :: mask
67 logical,
public :: calc_flux
68 type(pes_flux_t) :: flux
72 integer,
parameter :: &
73 PHOTOELECTRON_NONE = 0, &
81 subroutine pes_init(pes, namespace, space, mesh, box, st, save_iter, kpoints, abs_boundaries, ext_partners, max_iter, dt)
82 type(pes_t),
intent(out) :: pes
83 type(namespace_t),
intent(in) :: namespace
84 class(space_t),
intent(in) :: space
85 class(mesh_t),
intent(in) :: mesh
86 class(box_t),
intent(in) :: box
87 type(states_elec_t),
intent(in) :: st
88 integer,
intent(in) :: save_iter
89 type(kpoints_t),
intent(in) :: kpoints
90 type(absorbing_boundaries_t),
intent(in) :: abs_boundaries
91 type(partner_list_t),
intent(in) :: ext_partners
92 integer,
intent(in) :: max_iter
93 real(real64),
intent(in) :: dt
95 integer :: photoelectron_flags
125 call parse_variable(namespace,
'PhotoElectronSpectrum', photoelectron_none, photoelectron_flags)
135 if (pes%calc_spm .or. pes%calc_mask .or. pes%calc_flux)
then
140 if (pes%calc_spm)
call pes_spm_init(pes%spm, namespace, mesh, st, save_iter)
141 if (pes%calc_mask)
then
142 call pes_mask_init(pes%mask, namespace, space, mesh, box, st, ext_partners, &
143 abs_boundaries, max_iter,dt)
145 if (pes%calc_flux)
then
147 ext_partners, kpoints, abs_boundaries, save_iter, max_iter)
152 if (pes%calc_spm .or. pes%calc_mask .or. pes%calc_flux)
then
162 type(
pes_t),
intent(inout) :: pes
175 subroutine pes_calc(pes, namespace, space, mesh, st, dt, iter, der, kpoints, ext_partners, stopping)
176 type(
pes_t),
intent(inout) :: pes
178 class(
space_t),
intent(in) :: space
179 class(
mesh_t),
intent(in) :: mesh
182 real(real64),
intent(in) :: dt
183 integer,
intent(in) :: iter
186 logical,
intent(in) :: stopping
190 if (pes%calc_spm)
call pes_spm_calc(pes%spm, st, mesh, dt, iter, ext_partners)
191 if (pes%calc_mask)
call pes_mask_calc(pes%mask, namespace, space, mesh, st, kpoints, dt, iter)
192 if (pes%calc_flux)
then
193 call pes_flux_calc(pes%flux, space, mesh, st, der, ext_partners, kpoints, iter, dt, stopping)
201 subroutine pes_output(pes, namespace, space, gr, st, iter, outp, dt, ions)
202 type(
pes_t),
intent(inout) :: pes
204 class(
space_t),
intent(in) :: space
205 type(
grid_t),
intent(in) :: gr
207 integer,
intent(in) :: iter
209 real(real64),
intent(in) :: dt
210 type(
ions_t),
intent(in) :: ions
214 if (pes%calc_spm)
call pes_spm_output(pes%spm, gr, st, namespace, iter, dt)
216 if (pes%calc_mask)
call pes_mask_output (pes%mask, gr, st, outp, namespace, space,
"td.general/PESM", ions,iter)
218 if (pes%calc_flux)
call pes_flux_output(pes%flux, gr%box, st, namespace)
225 subroutine pes_dump(pes, namespace, restart, st, mesh, ierr)
226 type(
pes_t),
intent(in) :: pes
230 class(
mesh_t),
intent(in) :: mesh
231 integer,
intent(out) :: ierr
243 message(1) =
"Debug: Writing PES restart."
247 if (pes%calc_mask)
then
251 if (pes%calc_flux)
then
255 if (pes%calc_spm)
then
260 message(1) =
"Debug: Writing PES restart done."
269 subroutine pes_load(pes, namespace, restart, st, ierr)
270 type(
pes_t),
intent(inout) :: pes
274 integer,
intent(out) :: ierr
287 message(1) =
"Debug: Reading PES restart."
291 if (pes%calc_mask)
then
295 if (pes%calc_flux)
then
299 if (pes%calc_spm)
then
304 message(1) =
"Debug: Reading PES restart done."
314 type(
pes_t),
intent(in) :: pes
315 class(
mesh_t),
intent(in) :: mesh
type(debug_t), save, public debug
This module calculates the derivatives (gradients, Laplacians, etc.) of a function.
This module implements the underlying real-space grid.
This module defines classes and functions for interaction partners.
This module defines the meshes, which are used in Octopus.
subroutine, public messages_print_with_emphasis(msg, iunit, namespace)
character(len=512), private msg
subroutine, public messages_info(no_lines, iunit, verbose_limit, stress, all_nodes, namespace)
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_input_error(namespace, var, details, row, column)
logical function mpi_grp_is_root(grp)
Is the current MPI process of grpcomm, root.
type(mpi_grp_t), public mpi_world
this module contains the output system
subroutine, public pes_flux_calc(this, space, mesh, st, der, ext_partners, kpoints, iter, dt, stopping)
subroutine, public pes_flux_output(this, box, st, namespace)
subroutine, public pes_flux_load(restart, this, st, ierr)
subroutine, public pes_flux_dump(restart, this, mesh, st, ierr)
subroutine, public pes_flux_end(this)
subroutine, public pes_flux_init(this, namespace, space, mesh, st, ext_partners, kpoints, abb, save_iter, max_iter)
subroutine, public pes_mask_calc(mask, namespace, space, mesh, st, kpoints, dt, iter)
subroutine, public pes_mask_dump(mask, namespace, restart, st, ierr)
subroutine, public pes_mask_output(mask, gr, st, outp, namespace, space, file, ions, iter)
This routine is the main routine dedicated to the output of PES data.
subroutine, public pes_mask_init(mask, namespace, space, mesh, box, st, ext_partners, abs_boundaries, max_iter, dt)
subroutine, public pes_mask_load(mask, namespace, restart, st, ierr)
subroutine, public pes_mask_end(mask)
subroutine, public pes_calc(pes, namespace, space, mesh, st, dt, iter, der, kpoints, ext_partners, stopping)
subroutine, public pes_init(pes, namespace, space, mesh, box, st, save_iter, kpoints, abs_boundaries, ext_partners, max_iter, dt)
subroutine, public pes_output(pes, namespace, space, gr, st, iter, outp, dt, ions)
subroutine, public pes_init_write(pes, mesh, st, namespace)
subroutine, public pes_end(pes)
subroutine, public pes_load(pes, namespace, restart, st, ierr)
integer, parameter photoelectron_spm
integer, parameter photoelectron_flux
integer, parameter photoelectron_mask
subroutine, public pes_dump(pes, namespace, restart, st, mesh, ierr)
subroutine, public pes_spm_dump(restart, this, st, ierr)
subroutine, public pes_spm_init_write(this, mesh, st, namespace)
subroutine, public pes_spm_output(this, mesh, st, namespace, iter, dt)
subroutine, public pes_spm_calc(this, st, mesh, dt, iter, ext_partners)
subroutine, public pes_spm_init(this, namespace, mesh, st, save_iter)
subroutine, public pes_spm_load(restart, this, st, ierr)
subroutine, public pes_spm_end(this)
logical pure function, public restart_skip(restart)
Returns true if the restart information should neither be read nor written. This might happen because...
class representing derivatives
Description of the grid, containing information on derivatives, stencil, and symmetries.
Describes mesh distribution to nodes.
The states_elec_t class contains all electronic wave functions.