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
175 subroutine pes_calc(pes, namespace, space, mesh, st, dt, iter, der, kpoints, ext_partners, stopping)
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
237 if (restart%skip())
then
242 message(1) =
"Debug: Writing PES restart."
245 if (pes%calc_mask)
then
249 if (pes%calc_flux)
then
253 if (pes%calc_spm)
then
257 message(1) =
"Debug: Writing PES restart done."
265 subroutine pes_load(pes, namespace, restart, st, ierr)
266 type(
pes_t),
intent(inout) :: pes
270 integer,
intent(out) :: ierr
276 if (restart%skip())
then
282 message(1) =
"Debug: Reading PES restart."
285 if (pes%calc_mask)
then
289 if (pes%calc_flux)
then
293 if (pes%calc_spm)
then
297 message(1) =
"Debug: Reading PES restart done."
306 type(
pes_t),
intent(in) :: pes
307 class(
mesh_t),
intent(in) :: mesh
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
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_input_error(namespace, var, details, row, column)
subroutine, public messages_info(no_lines, iunit, debug_only, stress, all_nodes, namespace)
type(mpi_grp_t), public mpi_world
this module contains the low-level part of 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)
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.