57 logical,
public :: apply = .false.
59 type(states_elec_t) :: gs_st
68 subroutine scissor_init(this, namespace, space, st, mesh, d, kpoints, phase, gap, mc)
69 type(scissor_t),
intent(inout) :: this
70 type(namespace_t),
intent(in) :: namespace
71 class(space_t),
intent(in) :: space
72 type(states_elec_t),
intent(in) :: st
73 class(mesh_t),
intent(in) :: mesh
74 type(kpoints_t),
intent(in) :: kpoints
75 type(states_elec_dim_t),
intent(in) :: d
76 type(phase_t),
intent(in) :: phase
77 real(real64),
intent(in) :: gap
78 type(multicomm_t),
intent(in) :: mc
80 type(restart_t) :: restart_gs
83 complex(real64),
allocatable :: temp_state(:,:)
87 assert(.not. this%apply)
92 if (st%parallel_in_states)
then
95 if (mesh%parallel_in_domains)
then
102 write(
message(1),
'(a)')
'Start loading GS states.'
109 message(1) =
"Unable to read states information."
113 call states_elec_load(restart_gs, namespace, space, this%gs_st, mesh, kpoints, ierr, label =
': gs for TDScissor')
114 if (ierr /= 0 .and. ierr /= (this%gs_st%st_end-this%gs_st%st_start+1)*this%gs_st%nik*this%gs_st%d%dim)
then
115 message(1) =
"Unable to read wavefunctions for TDScissor."
122 write(
message(1),
'(a)')
'Adding the phase for GS states.'
125 safe_allocate(temp_state(1:mesh%np_part, 1:this%gs_st%d%dim))
127 do ik=this%gs_st%d%kpt%start, this%gs_st%d%kpt%end
129 do ist = this%gs_st%st_start, this%gs_st%st_end
131 call phase%apply_to_single(temp_state, mesh%np, this%gs_st%d%dim, ik, .false.)
137 safe_deallocate_a(temp_state)
146 type(scissor_t),
intent(inout) :: this
158#include "scissor_inc.F90"
161#include "complex.F90"
162#include "scissor_inc.F90"
This module implements batches of mesh functions.
This module implements common operations on batches of mesh functions.
logical pure function, public kpoints_point_is_gamma(this, ik)
integer pure function, public kpoints_number(this)
This module defines various routines, operating on mesh functions.
This module defines the meshes, which are used in Octopus.
subroutine, public messages_print_with_emphasis(msg, iunit, namespace)
subroutine, public messages_not_implemented(feature, 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_fatal(no_lines, only_root_writes, namespace)
This module handles the communicators for the various parallelization strategies.
subroutine, public restart_init(restart, namespace, data_type, type, mc, ierr, mesh, dir, exact)
Initializes a restart object.
integer, parameter, public restart_proj
integer, parameter, public restart_type_load
subroutine, public restart_end(restart)
subroutine zscissor_commute_r(this, mesh, ik, psi, gpsi)
subroutine, public scissor_init(this, namespace, space, st, mesh, d, kpoints, phase, gap, mc)
subroutine, public zscissor_apply(this, mesh, psib, hpsib)
subroutine dscissor_commute_r(this, mesh, ik, psi, gpsi)
subroutine, public dscissor_apply(this, mesh, psib, hpsib)
subroutine, public scissor_end(this)
pure logical function, public states_are_real(st)
This module handles spin dimensions of the states and the k-point distribution.
subroutine, public states_elec_end(st)
finalize the states_elec_t object
subroutine, public states_elec_copy(stout, stin, exclude_wfns, exclude_eigenval, special)
make a (selective) copy of a states_elec_t object
This module handles reading and writing restart information for the states_elec_t.
subroutine, public states_elec_load(restart, namespace, space, st, mesh, kpoints, ierr, iter, lr, lowest_missing, label, verbose, skip)
returns in ierr: <0 => Fatal error, or nothing read =0 => read all wavefunctions >0 => could only rea...