Octopus
projector_oct_m Module Reference

Data Types

type  projector_t
 The projector data type is intended to hold the local and non-local parts of the pseudopotentials. The definition of the action of a projector (which is done through the X(project) subroutine) depends on the type of the projector. More...
 

Functions/Subroutines

logical elemental function, public projector_is_null (p)
 
logical elemental function, public projector_is (p, type)
 
subroutine, public projector_init (p, pseudo, namespace, dim, reltype)
 
subroutine, public projector_init_phases (this, dim, std, bnd, kpoints, vec_pot, vec_pot_var)
 
subroutine, public projector_build (p, ps, so_strength)
 
subroutine, public projector_end (p)
 
subroutine, public dproject_psi (mesh, bnd, pj, npj, dim, psi, ppsi, ik)
 dproject_psi calculates the action of a projector on the psi wavefunction. The result is summed up to ppsi More...
 
subroutine, public dproject_psi_batch (mesh, bnd, pj, npj, dim, psib, ppsib)
 To optimize the application of the non-local operator in parallel, the projectors are applied in steps. More...
 
real(real64) function, public dprojector_matrix_element (pj, bnd, dim, ik, psia, psib)
 dprojector_matrix_element calculates <psia|projector|psib> More...
 
subroutine, public dproject_sphere (mesh, pj, dim, psi, ppsi)
 
subroutine, public dprojector_commute_r (pj, mesh, bnd, dim, idir, ik, psi, cpsi)
 This function calculates |cpsi> += [x, V_nl] |psi> More...
 
subroutine, public dprojector_commute_r_allatoms_alldir (pj, ions, mesh, dim, bnd, ik, psi, cpsi)
 This function calculates |cpsi> += [x, V_nl] |psi> More...
 
subroutine, public zproject_psi (mesh, bnd, pj, npj, dim, psi, ppsi, ik)
 zproject_psi calculates the action of a projector on the psi wavefunction. The result is summed up to ppsi More...
 
subroutine, public zproject_psi_batch (mesh, bnd, pj, npj, dim, psib, ppsib)
 To optimize the application of the non-local operator in parallel, the projectors are applied in steps. More...
 
complex(real64) function, public zprojector_matrix_element (pj, bnd, dim, ik, psia, psib)
 zprojector_matrix_element calculates <psia|projector|psib> More...
 
subroutine, public zproject_sphere (mesh, pj, dim, psi, ppsi)
 
subroutine, public zprojector_commute_r (pj, mesh, bnd, dim, idir, ik, psi, cpsi)
 This function calculates |cpsi> += [x, V_nl] |psi> More...
 
subroutine, public zprojector_commute_r_allatoms_alldir (pj, ions, mesh, dim, bnd, ik, psi, cpsi)
 This function calculates |cpsi> += [x, V_nl] |psi> More...
 

Variables

integer, parameter max_nprojections = 4
 
integer, parameter max_l = 5
 

Function/Subroutine Documentation

◆ projector_is_null()

logical elemental function, public projector_oct_m::projector_is_null ( type(projector_t), intent(in)  p)

Definition at line 202 of file projector.F90.

◆ projector_is()

logical elemental function, public projector_oct_m::projector_is ( type(projector_t), intent(in)  p,
integer, intent(in)  type 
)

Definition at line 209 of file projector.F90.

◆ projector_init()

subroutine, public projector_oct_m::projector_init ( type(projector_t), intent(inout)  p,
type(pseudopotential_t), intent(in), target  pseudo,
type(namespace_t), intent(in)  namespace,
integer, intent(in)  dim,
integer, intent(in)  reltype 
)

Definition at line 216 of file projector.F90.

◆ projector_init_phases()

subroutine, public projector_oct_m::projector_init_phases ( type(projector_t), intent(inout)  this,
integer, intent(in)  dim,
type(states_elec_dim_t), intent(in)  std,
type(boundaries_t), intent(in)  bnd,
type(kpoints_t), intent(in)  kpoints,
real(real64), dimension(:), intent(in), optional, allocatable  vec_pot,
real(real64), dimension(:, :), intent(in), optional, allocatable  vec_pot_var 
)
Parameters
[in]vec_pot(dim)
[in]vec_pot_var(1:dim, 1:ns)

Definition at line 263 of file projector.F90.

◆ projector_build()

subroutine, public projector_oct_m::projector_build ( type(projector_t), intent(inout)  p,
class(pseudopotential_t), intent(in)  ps,
real(real64), intent(in)  so_strength 
)

Definition at line 342 of file projector.F90.

◆ projector_end()

subroutine, public projector_oct_m::projector_end ( type(projector_t), intent(inout)  p)

Definition at line 391 of file projector.F90.

◆ dproject_psi()

subroutine, public projector_oct_m::dproject_psi ( class(mesh_t), intent(in)  mesh,
type(boundaries_t), intent(in)  bnd,
type(projector_t), dimension(:), intent(in)  pj,
integer, intent(in)  npj,
integer, intent(in)  dim,
real(real64), dimension(:, :), intent(inout), contiguous  psi,
real(real64), dimension(:, :), intent(inout), contiguous  ppsi,
integer, intent(in)  ik 
)

dproject_psi calculates the action of a projector on the psi wavefunction. The result is summed up to ppsi

Parameters
[in,out]psi(1:meshnp, dim)
[in,out]ppsi(1:meshnp, dim)

Definition at line 511 of file projector.F90.

◆ dproject_psi_batch()

subroutine, public projector_oct_m::dproject_psi_batch ( class(mesh_t), intent(in)  mesh,
type(boundaries_t), intent(in)  bnd,
type(projector_t), dimension(:), intent(in)  pj,
integer, intent(in)  npj,
integer, intent(in)  dim,
type(wfs_elec_t), intent(in)  psib,
type(wfs_elec_t), intent(inout)  ppsib 
)

To optimize the application of the non-local operator in parallel, the projectors are applied in steps.

First the <p|psi> is calculated for all projectors and the result is stored on an array (reduce_buffer). Then the array is reduced (as it is contiguous only one reduction is required). Finally |ppsi> += |p><p|psi> is calculated.

Parameters
[in]npjNumber of atoms

Definition at line 546 of file projector.F90.

◆ dprojector_matrix_element()

real(real64) function, public projector_oct_m::dprojector_matrix_element ( type(projector_t), intent(in), target  pj,
type(boundaries_t), intent(in)  bnd,
integer, intent(in)  dim,
integer, intent(in)  ik,
real(real64), dimension(:, :), intent(in)  psia,
real(real64), dimension(:, :), intent(in)  psib 
)

dprojector_matrix_element calculates <psia|projector|psib>

Parameters
[in]psiapsia(1:meshnp, dim)
[in]psibpsib(1:meshnp, dim)

Definition at line 846 of file projector.F90.

◆ dproject_sphere()

subroutine, public projector_oct_m::dproject_sphere ( class(mesh_t), intent(in)  mesh,
type(projector_t), intent(in)  pj,
integer, intent(in)  dim,
real(real64), dimension(:, :), intent(in)  psi,
real(real64), dimension(:, :), intent(out)  ppsi 
)

Definition at line 923 of file projector.F90.

◆ dprojector_commute_r()

subroutine, public projector_oct_m::dprojector_commute_r ( type(projector_t), intent(in), target  pj,
class(mesh_t), intent(in)  mesh,
type(boundaries_t), intent(in)  bnd,
integer, intent(in)  dim,
integer, intent(in)  idir,
integer, intent(in)  ik,
real(real64), dimension(:, :), intent(in)  psi,
real(real64), dimension(:,:), intent(inout)  cpsi 
)

This function calculates |cpsi> += [x, V_nl] |psi>

Definition at line 965 of file projector.F90.

◆ dprojector_commute_r_allatoms_alldir()

subroutine, public projector_oct_m::dprojector_commute_r_allatoms_alldir ( type(projector_t), dimension(:), intent(in), target  pj,
type(ions_t), intent(in)  ions,
class(mesh_t), intent(in)  mesh,
integer, intent(in)  dim,
type(boundaries_t), intent(in)  bnd,
integer, intent(in)  ik,
real(real64), dimension(:, :), intent(in)  psi,
real(real64), dimension(:,:,:), intent(inout)  cpsi 
)

This function calculates |cpsi> += [x, V_nl] |psi>

Definition at line 1050 of file projector.F90.

◆ zproject_psi()

subroutine, public projector_oct_m::zproject_psi ( class(mesh_t), intent(in)  mesh,
type(boundaries_t), intent(in)  bnd,
type(projector_t), dimension(:), intent(in)  pj,
integer, intent(in)  npj,
integer, intent(in)  dim,
complex(real64), dimension(:, :), intent(inout), contiguous  psi,
complex(real64), dimension(:, :), intent(inout), contiguous  ppsi,
integer, intent(in)  ik 
)

zproject_psi calculates the action of a projector on the psi wavefunction. The result is summed up to ppsi

Parameters
[in,out]psi(1:meshnp, dim)
[in,out]ppsi(1:meshnp, dim)

Definition at line 1222 of file projector.F90.

◆ zproject_psi_batch()

subroutine, public projector_oct_m::zproject_psi_batch ( class(mesh_t), intent(in)  mesh,
type(boundaries_t), intent(in)  bnd,
type(projector_t), dimension(:), intent(in)  pj,
integer, intent(in)  npj,
integer, intent(in)  dim,
type(wfs_elec_t), intent(in)  psib,
type(wfs_elec_t), intent(inout)  ppsib 
)

To optimize the application of the non-local operator in parallel, the projectors are applied in steps.

First the <p|psi> is calculated for all projectors and the result is stored on an array (reduce_buffer). Then the array is reduced (as it is contiguous only one reduction is required). Finally |ppsi> += |p><p|psi> is calculated.

Parameters
[in]npjNumber of atoms

Definition at line 1257 of file projector.F90.

◆ zprojector_matrix_element()

complex(real64) function, public projector_oct_m::zprojector_matrix_element ( type(projector_t), intent(in), target  pj,
type(boundaries_t), intent(in)  bnd,
integer, intent(in)  dim,
integer, intent(in)  ik,
complex(real64), dimension(:, :), intent(in)  psia,
complex(real64), dimension(:, :), intent(in)  psib 
)

zprojector_matrix_element calculates <psia|projector|psib>

Parameters
[in]psiapsia(1:meshnp, dim)
[in]psibpsib(1:meshnp, dim)

Definition at line 1557 of file projector.F90.

◆ zproject_sphere()

subroutine, public projector_oct_m::zproject_sphere ( class(mesh_t), intent(in)  mesh,
type(projector_t), intent(in)  pj,
integer, intent(in)  dim,
complex(real64), dimension(:, :), intent(in)  psi,
complex(real64), dimension(:, :), intent(out)  ppsi 
)

Definition at line 1634 of file projector.F90.

◆ zprojector_commute_r()

subroutine, public projector_oct_m::zprojector_commute_r ( type(projector_t), intent(in), target  pj,
class(mesh_t), intent(in)  mesh,
type(boundaries_t), intent(in)  bnd,
integer, intent(in)  dim,
integer, intent(in)  idir,
integer, intent(in)  ik,
complex(real64), dimension(:, :), intent(in)  psi,
complex(real64), dimension(:,:), intent(inout)  cpsi 
)

This function calculates |cpsi> += [x, V_nl] |psi>

Definition at line 1676 of file projector.F90.

◆ zprojector_commute_r_allatoms_alldir()

subroutine, public projector_oct_m::zprojector_commute_r_allatoms_alldir ( type(projector_t), dimension(:), intent(in), target  pj,
type(ions_t), intent(in)  ions,
class(mesh_t), intent(in)  mesh,
integer, intent(in)  dim,
type(boundaries_t), intent(in)  bnd,
integer, intent(in)  ik,
complex(real64), dimension(:, :), intent(in)  psi,
complex(real64), dimension(:,:,:), intent(inout)  cpsi 
)

This function calculates |cpsi> += [x, V_nl] |psi>

Definition at line 1761 of file projector.F90.

Variable Documentation

◆ max_nprojections

integer, parameter projector_oct_m::max_nprojections = 4
private

Definition at line 165 of file projector.F90.

◆ max_l

integer, parameter projector_oct_m::max_l = 5
private

Definition at line 166 of file projector.F90.