Octopus
|
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 |
logical elemental function, public projector_oct_m::projector_is_null | ( | type(projector_t), intent(in) | p | ) |
Definition at line 202 of file projector.F90.
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.
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.
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 | ||
) |
[in] | vec_pot | (dim) |
[in] | vec_pot_var | (1:dim, 1:ns) |
Definition at line 263 of file projector.F90.
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.
subroutine, public projector_oct_m::projector_end | ( | type(projector_t), intent(inout) | p | ) |
Definition at line 391 of file projector.F90.
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
[in,out] | psi | (1:meshnp, dim) |
[in,out] | ppsi | (1:meshnp, dim) |
Definition at line 511 of file projector.F90.
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.
[in] | npj | Number of atoms |
Definition at line 546 of file projector.F90.
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>
[in] | psia | psia(1:meshnp, dim) |
[in] | psib | psib(1:meshnp, dim) |
Definition at line 846 of file projector.F90.
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.
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.
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.
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
[in,out] | psi | (1:meshnp, dim) |
[in,out] | ppsi | (1:meshnp, dim) |
Definition at line 1222 of file projector.F90.
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.
[in] | npj | Number of atoms |
Definition at line 1257 of file projector.F90.
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>
[in] | psia | psia(1:meshnp, dim) |
[in] | psib | psib(1:meshnp, dim) |
Definition at line 1557 of file projector.F90.
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.
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.
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.
|
private |
Definition at line 165 of file projector.F90.
|
private |
Definition at line 166 of file projector.F90.