57 logical :: use_nonlocalpps
58 type(ions_t),
pointer :: ions => null()
61 generic ::
assignment(=) => copy_to
71 procedure perturbation_kdotp_constructor
83 class(perturbation_kdotp_t),
pointer :: pert
84 type(namespace_t),
intent(in) :: namespace
85 type(ions_t),
target,
intent(in) :: ions
99 type(perturbation_kdotp_t),
intent(out) :: this
100 type(namespace_t),
intent(in) :: namespace
101 type(ions_t),
target,
intent(in) :: ions
119 call parse_variable(namespace,
'KdotPUseNonLocalPseudopotential', .
true., this%use_nonlocalpps)
132 call parse_variable(namespace,
'KdotPVelMethod', option__kdotpvelmethod__grad_vel, this%vel_method)
139 type(perturbation_kdotp_t),
intent(inout) :: this
150 class(perturbation_kdotp_t),
intent(out) :: this
156 this%ions => source%ions
158 this%use_nonlocalpps = source%use_nonlocalpps
159 this%vel_method = source%vel_method
170 if (.not. this%use_nonlocalpps)
then
171 write(
message(1),
'(a)')
'Ignoring non-local pseudopotential term.'
180#include "perturbation_kdotp_inc.F90"
183#include "complex.F90"
184#include "perturbation_kdotp_inc.F90"
Module implementing boundary conditions in Octopus.
This module calculates the derivatives (gradients, Laplacians, etc.) of a function.
This module implements the underlying real-space grid.
This module is intended to contain "only mathematical" functions and procedures.
This module defines various routines, operating on mesh functions.
This module defines the meshes, which are used in Octopus.
subroutine, public messages_obsolete_variable(namespace, name, rep)
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_info(no_lines, iunit, debug_only, stress, all_nodes, namespace)
subroutine zperturbation_kdotp_apply_order_2(this, namespace, space, gr, hm, ik, f_in, f_out)
d^2/dki dkj (-(1/2) ki kj [ri,[rj,H]]) = for i = j : 1 - [ri,[rj,Vnl]] for i != j : -(1/2) [ri,...
subroutine perturbation_kdotp_copy(this, source)
subroutine zperturbation_kdotp_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_kdotp_apply_order_2(this, namespace, space, gr, hm, ik, f_in, f_out)
d^2/dki dkj (-(1/2) ki kj [ri,[rj,H]]) = for i = j : 1 - [ri,[rj,Vnl]] for i != j : -(1/2) [ri,...
class(perturbation_kdotp_t) function, pointer perturbation_kdotp_constructor(namespace, ions)
The factory routine (or constructor) allocates a pointer of the corresponding type and then calls the...
subroutine perturbation_kdotp_init(this, namespace, ions)
subroutine perturbation_kdotp_finalize(this)
subroutine perturbation_kdotp_info(this)
subroutine dperturbation_kdotp_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, public perturbation_copy(this, source)
This module handles spin dimensions of the states and the k-point distribution.