59 logical :: use_nonlocalpps
60 type(ions_t),
pointer :: ions => null()
63 generic ::
assignment(=) => copy_to
73 procedure perturbation_kdotp_constructor
85 class(perturbation_kdotp_t),
pointer :: pert
86 type(namespace_t),
intent(in) :: namespace
87 type(ions_t),
target,
intent(in) :: ions
101 type(perturbation_kdotp_t),
intent(out) :: this
102 type(namespace_t),
intent(in) :: namespace
103 type(ions_t),
target,
intent(in) :: ions
121 call parse_variable(namespace,
'KdotPUseNonLocalPseudopotential', .
true., this%use_nonlocalpps)
134 call parse_variable(namespace,
'KdotPVelMethod', option__kdotpvelmethod__grad_vel, this%vel_method)
141 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 functions over batches of mesh functions.
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)
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 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.