![]()  | 
  
    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.