52 generic ::
assignment(=) => copy
63 procedure perturbation_electric_constructor
74 class(perturbation_electric_t),
pointer :: pert
75 type(namespace_t),
intent(in) :: namespace
88 type(perturbation_electric_t),
intent(out) :: this
89 type(namespace_t),
intent(in) :: namespace
101 type(perturbation_electric_t),
intent(inout) :: this
110 class(perturbation_electric_t),
intent(out) :: this
111 class(perturbation_electric_t),
intent(in) :: source
123 class(perturbation_electric_t),
intent(in) :: this
132 class(perturbation_electric_t),
intent(in) :: this
133 type(namespace_t),
intent(in) :: namespace
134 class(space_t),
intent(in) :: space
135 type(grid_t),
intent(in) :: gr
136 type(hamiltonian_elec_t),
intent(in) :: hm
137 type(wfs_elec_t),
intent(in) :: f_in
138 type(wfs_elec_t),
intent(inout) :: f_out
146 assert(f_in%status() == f_out%status())
148 select case (f_in%status())
154 do ii = 1, f_in%nst_linear
157 f_out%dff_linear(ip, ii) = gr%x(ip, this%dir)*f_in%dff_linear(ip, ii)
163 do ii = 1, f_in%nst_linear
166 f_out%zff_linear(ip, ii) = gr%x(ip, this%dir)*f_in%zff_linear(ip, ii)
178 do ii = 1, f_in%nst_linear
179 f_out%dff_pack(ii, ip) = gr%x(ip, this%dir)*f_in%dff_pack(ii, ip)
187 do ii = 1, f_in%nst_linear
188 f_out%zff_pack(ii, ip) = gr%x(ip, this%dir)*f_in%zff_pack(ii, ip)
206#include "perturbation_electric_inc.F90"
209#include "complex.F90"
210#include "perturbation_electric_inc.F90"
This module implements batches of mesh functions.
integer, parameter, public batch_not_packed
functions are stored in CPU memory, unpacked order
integer, parameter, public batch_device_packed
functions are stored in device memory in packed order
integer, parameter, public batch_packed
functions are stored in CPU memory, in transposed (packed) order
This module implements common operations on batches of mesh functions.
This module implements the underlying real-space grid.
This module defines the meshes, which are used in Octopus.
subroutine, public messages_not_implemented(feature, namespace)
subroutine, public perturbation_electric_init(this, namespace)
subroutine zperturbation_electric_apply(this, namespace, space, gr, hm, ik, f_in, f_out, set_bc)
Returns f_out = H' f_in, where H' is perturbation Hamiltonian Note that e^ikr phase is applied to f_i...
subroutine perturbation_electric_info(this)
subroutine perturbation_electric_finalize(this)
class(perturbation_electric_t) function, pointer perturbation_electric_constructor(namespace)
The factory routine (or constructor) allocates a pointer of the corresponding type and then calls the...
subroutine zperturbation_electric_apply_order_2(this, namespace, space, gr, hm, ik, f_in, f_out)
subroutine perturbation_electric_copy(this, source)
subroutine perturbation_electric_apply_batch(this, namespace, space, gr, hm, f_in, f_out)
subroutine dperturbation_electric_apply(this, namespace, space, gr, hm, ik, f_in, f_out, set_bc)
Returns f_out = H' f_in, where H' is perturbation Hamiltonian Note that e^ikr phase is applied to f_i...
subroutine dperturbation_electric_apply_order_2(this, namespace, space, gr, hm, ik, f_in, f_out)
subroutine, public perturbation_copy(this, source)
This module handles spin dimensions of the states and the k-point distribution.
type(type_t), public type_float