![]()  | 
  
    Octopus
    
   | 
 
Data Types | |
| interface | states_elec_rotate | 
Functions/Subroutines | |
| subroutine, public | states_elec_orthogonalize (st, namespace, mesh) | 
| Orthonormalizes nst orbitals in mesh (honours state parallelization).  More... | |
| subroutine, public | states_elec_calc_norms (grid, kpoints, st, norm_ks) | 
| Compute the norms of the Kohn-Sham orbitals.  More... | |
| subroutine, public | dstates_elec_orthogonalization_full (st, namespace, mesh, ik) | 
| Orthonormalizes nst orbitals in mesh (honours state parallelization).  More... | |
| subroutine | dstates_elec_trsm (st, namespace, mesh, ik, ss) | 
| Apply the inverse of ss to the states st.  More... | |
| subroutine, public | dstates_elec_orthogonalize_single (st, mesh, nst, iqn, phi, normalize, mask, overlap, norm, Theta_fi, beta_ij, against_all) | 
| ofthogonalize a single wave function against a set of states  More... | |
| subroutine, public | dstates_elec_orthogonalize_single_batch (st, mesh, nst, iqn, phi, normalize, mask, overlap, norm, Theta_fi, beta_ij, against_all) | 
| orthogonalize a single wave function against a set of states  More... | |
| subroutine, public | dstates_elec_orthogonalization (mesh, nst, dim, psi, phi, normalize, mask, overlap, norm, Theta_fi, beta_ij, gs_scheme) | 
| Orthonormalizes phi to the nst orbitals psi.  More... | |
| real(real64) function, public | dstates_elec_residue (mesh, dim, hf, ee, ff) | 
| subroutine, public | dstates_elec_matrix (st1, st2, mesh, aa) | 
| subroutine, public | dstates_elec_calc_orth_test (st, namespace, mesh, kpoints) | 
| subroutine | dstates_elec_rotate (st, namespace, mesh, uu, ik) | 
| subroutine, public | dstates_elec_calc_overlap (st, mesh, ik, overlap) | 
| Computes the overlap matrix of the Kohn-Sham states with k-point ik.  More... | |
| subroutine, public | dstates_elec_calc_projections (st, gs_st, namespace, mesh, ik, proj, gs_nst) | 
| This routine computes the projection between two set of states.  More... | |
| subroutine, public | dstates_elec_rrqr_decomposition (st, namespace, mesh, nst, root, ik, jpvt) | 
| Perform RRQR on the transpose states stored in the states object and return the pivot vector.  More... | |
| subroutine, public | zstates_elec_orthogonalization_full (st, namespace, mesh, ik) | 
| Orthonormalizes nst orbitals in mesh (honours state parallelization).  More... | |
| subroutine | zstates_elec_trsm (st, namespace, mesh, ik, ss) | 
| Apply the inverse of ss to the states st.  More... | |
| subroutine, public | zstates_elec_orthogonalize_single (st, mesh, nst, iqn, phi, normalize, mask, overlap, norm, Theta_fi, beta_ij, against_all) | 
| ofthogonalize a single wave function against a set of states  More... | |
| subroutine, public | zstates_elec_orthogonalize_single_batch (st, mesh, nst, iqn, phi, normalize, mask, overlap, norm, Theta_fi, beta_ij, against_all) | 
| orthogonalize a single wave function against a set of states  More... | |
| subroutine, public | zstates_elec_orthogonalization (mesh, nst, dim, psi, phi, normalize, mask, overlap, norm, Theta_fi, beta_ij, gs_scheme) | 
| Orthonormalizes phi to the nst orbitals psi.  More... | |
| real(real64) function, public | zstates_elec_residue (mesh, dim, hf, ee, ff) | 
| subroutine, public | zstates_elec_matrix (st1, st2, mesh, aa) | 
| subroutine, public | zstates_elec_calc_orth_test (st, namespace, mesh, kpoints) | 
| subroutine | zstates_elec_rotate (st, namespace, mesh, uu, ik) | 
| subroutine, public | zstates_elec_calc_overlap (st, mesh, ik, overlap) | 
| Computes the overlap matrix of the Kohn-Sham states with k-point ik.  More... | |
| subroutine, public | zstates_elec_calc_projections (st, gs_st, namespace, mesh, ik, proj, gs_nst) | 
| This routine computes the projection between two set of states.  More... | |
| subroutine, public | zstates_elec_rrqr_decomposition (st, namespace, mesh, nst, root, ik, jpvt) | 
| Perform RRQR on the transpose states stored in the states object and return the pivot vector.  More... | |
| subroutine, public states_elec_calc_oct_m::states_elec_orthogonalize | ( | type(states_elec_t), intent(inout) | st, | 
| type(namespace_t), intent(in) | namespace, | ||
| class(mesh_t), intent(in) | mesh | ||
| ) | 
Orthonormalizes nst orbitals in mesh (honours state parallelization).
| [in,out] | st | states to be orthogonalized | 
| [in] | namespace | namespace for message printout | 
| [in] | mesh | underlying mesh | 
| [in] | ik | kpoint index | 
Definition at line 194 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::states_elec_calc_norms | ( | type(grid_t), intent(in) | grid, | 
| type(kpoints_t), intent(in) | kpoints, | ||
| type(states_elec_t), intent(in) | st, | ||
| real(real64), dimension(:, :), intent(out), contiguous | norm_ks | ||
| ) | 
Compute the norms of the Kohn-Sham orbitals.
| [in] | st | KS states | 
| [out] | norm_ks | Norm of KS wavefunctions/orbitals | 
Definition at line 217 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::dstates_elec_orthogonalization_full | ( | type(states_elec_t), intent(inout) | st, | 
| type(namespace_t), intent(in) | namespace, | ||
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | ik | ||
| ) | 
Orthonormalizes nst orbitals in mesh (honours state parallelization).
| [in,out] | st | states to be orthogonalized | 
| [in] | namespace | namespace for message printout | 
| [in] | mesh | underlying mesh | 
| [in] | ik | kpoint index | 
Definition at line 325 of file states_elec_calc.F90.
      
  | 
  private | 
Apply the inverse of ss to the states st.
used internally by states_elec_calc_oct_m::dstates_elec_orthogonalization_full()
| [in,out] | st | states | 
| [in] | namespace | namespace for messages | 
| [in] | mesh | underlying mesh (for np) | 
| [in] | ik | kpoint index | 
| [in] | ss | overlap matrix; dimension (1:st%nst, 1:st%nst) | 
Definition at line 647 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::dstates_elec_orthogonalize_single | ( | type(states_elec_t), intent(in), target | st, | 
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | nst, | ||
| integer, intent(in) | iqn, | ||
| real(real64), dimension(:,:), intent(inout), contiguous | phi, | ||
| logical, intent(in), optional | normalize, | ||
| logical, dimension(:), intent(inout), optional | mask, | ||
| real(real64), dimension(:), intent(out), optional | overlap, | ||
| real(real64), intent(out), optional | norm, | ||
| real(real64), intent(in), optional | Theta_fi, | ||
| real(real64), dimension(:), intent(in), optional | beta_ij, | ||
| logical, intent(in), optional | against_all | ||
| ) | 
ofthogonalize a single wave function against a set of states
Does not use batchified routines.
| [in] | st | the states | 
| [in] | mesh | underlying mesh for number of points | 
| [in] | nst | number of states to be considered | 
| [in] | iqn | k-point index | 
| [in,out] | phi | phi(meshnp_part, dim) | 
| [in] | normalize | optional flag whether to normalize the result; default = .false. | 
| [in,out] | mask | optional mask(nst); TODO: add more information | 
| [out] | overlap | optional output: overlaps to the states | 
| [out] | norm | optional output: norm of the resulting state | 
| [in] | theta_fi | optional: TODO: add more information | 
| [in] | beta_ij | optional: beta_ij(nst); TODO add more information | 
| [in] | against_all | optional flag whether to include all states (up to nst) | 
Definition at line 763 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::dstates_elec_orthogonalize_single_batch | ( | type(states_elec_t), intent(in) | st, | 
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | nst, | ||
| integer, intent(in) | iqn, | ||
| real(real64), dimension(:,:), intent(inout), contiguous | phi, | ||
| logical, intent(in), optional | normalize, | ||
| logical, dimension(:), intent(inout), optional | mask, | ||
| real(real64), dimension(:), intent(out), optional | overlap, | ||
| real(real64), intent(out), optional | norm, | ||
| real(real64), intent(in), optional | Theta_fi, | ||
| real(real64), dimension(:), intent(in), optional | beta_ij, | ||
| logical, intent(in), optional | against_all | ||
| ) | 
orthogonalize a single wave function against a set of states
This version uses batchified routines.
| [in] | st | the states | 
| [in] | mesh | underlying mesh for number of points | 
| [in] | nst | number of states to consider | 
| [in] | iqn | k-point index | 
| [in,out] | phi | phi(meshnp_part, dim) | 
| [in] | normalize | optional flag whether to normalize the result; default = .false. | 
| [in,out] | mask | optional mask(nst) | 
| [out] | overlap | optional output: overlap to the states | 
| [out] | norm | optional output: norm or the result | 
| [in] | theta_fi | optional: beta_ij(nst); TODO add more information | 
| [in] | beta_ij | beta_ij(nst) | 
| [in] | against_all | optional flag whether to include all states (up to nst) | 
Definition at line 919 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::dstates_elec_orthogonalization | ( | class(mesh_t), intent(in) | mesh, | 
| integer, intent(in) | nst, | ||
| integer, intent(in) | dim, | ||
| real(real64), dimension(:,:,:), intent(in) | psi, | ||
| real(real64), dimension(:,:), intent(inout) | phi, | ||
| logical, intent(in), optional | normalize, | ||
| logical, dimension(:), intent(inout), optional | mask, | ||
| real(real64), dimension(:), intent(out), optional | overlap, | ||
| real(real64), intent(out), optional | norm, | ||
| real(real64), intent(in), optional | Theta_fi, | ||
| real(real64), dimension(:), intent(in), optional | beta_ij, | ||
| integer, intent(in), optional | gs_scheme | ||
| ) | 
Orthonormalizes phi to the nst orbitals psi.
It also permits doing only the orthogonalization (no normalization). And one can pass an extra optional argument, mask, which:
| [in] | mesh | underlying mesh for np, np_part | 
| [in] | nst | number of states to orthoganolize against | 
| [in] | dim | spin dimension of the wave functions | 
| [in] | psi | psi(meshnp_part, dim, nst) | 
| [in,out] | phi | phi(meshnp_part, dim) | 
| [in] | normalize | optional flag whether to normalize the result | 
| [in,out] | mask | mask(nst) | 
| [out] | overlap | optional output: overlap with the states | 
| [out] | norm | optional output: norm of resulting state | 
| [in] | beta_ij | beta_ij(nst) | 
Definition at line 1081 of file states_elec_calc.F90.
| real(real64) function, public states_elec_calc_oct_m::dstates_elec_residue | ( | class(mesh_t), intent(in) | mesh, | 
| integer, intent(in) | dim, | ||
| real(real64), dimension(:,:), intent(in) | hf, | ||
| real(real64), intent(in) | ee, | ||
| real(real64), dimension(:,:), intent(in) | ff | ||
| ) | 
Definition at line 1267 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::dstates_elec_matrix | ( | type(states_elec_t), intent(in) | st1, | 
| type(states_elec_t), intent(in) | st2, | ||
| class(mesh_t), intent(in) | mesh, | ||
| real(real64), dimension(:, :, :), intent(out), contiguous | aa | ||
| ) | 
Definition at line 1302 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::dstates_elec_calc_orth_test | ( | type(states_elec_t), intent(inout) | st, | 
| type(namespace_t), intent(in) | namespace, | ||
| class(mesh_t), intent(in) | mesh, | ||
| type(kpoints_t), intent(in) | kpoints | ||
| ) | 
Definition at line 1350 of file states_elec_calc.F90.
      
  | 
  private | 
Definition at line 1462 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::dstates_elec_calc_overlap | ( | type(states_elec_t), intent(inout) | st, | 
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | ik, | ||
| real(real64), dimension(:, :), intent(out), contiguous | overlap | ||
| ) | 
Computes the overlap matrix of the Kohn-Sham states with k-point ik.
Definition at line 1582 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::dstates_elec_calc_projections | ( | type(states_elec_t), intent(in) | st, | 
| type(states_elec_t), intent(inout) | gs_st, | ||
| type(namespace_t), intent(in) | namespace, | ||
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | ik, | ||
| real(real64), dimension(:, :), intent(out), contiguous | proj, | ||
| integer, intent(in), optional | gs_nst | ||
| ) | 
This routine computes the projection between two set of states.
Definition at line 1741 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::dstates_elec_rrqr_decomposition | ( | type(states_elec_t), intent(in) | st, | 
| type(namespace_t), intent(in) | namespace, | ||
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | nst, | ||
| logical, intent(in) | root, | ||
| integer, intent(in) | ik, | ||
| integer, dimension(:), intent(out) | jpvt | ||
| ) | 
Perform RRQR on the transpose states stored in the states object and return the pivot vector.
We follow [Pizzi et al., J. Phys.: Condens. Matter 32 (2020) 165902] for doing the extension to spinors
| [in] | root | this is needed for serial | 
| [in] | ik | perform SCDM with this k-point | 
Definition at line 1918 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::zstates_elec_orthogonalization_full | ( | type(states_elec_t), intent(inout) | st, | 
| type(namespace_t), intent(in) | namespace, | ||
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | ik | ||
| ) | 
Orthonormalizes nst orbitals in mesh (honours state parallelization).
| [in,out] | st | states to be orthogonalized | 
| [in] | namespace | namespace for message printout | 
| [in] | mesh | underlying mesh | 
| [in] | ik | kpoint index | 
Definition at line 2240 of file states_elec_calc.F90.
      
  | 
  private | 
Apply the inverse of ss to the states st.
used internally by states_elec_calc_oct_m::zstates_elec_orthogonalization_full()
| [in,out] | st | states | 
| [in] | namespace | namespace for messages | 
| [in] | mesh | underlying mesh (for np) | 
| [in] | ik | kpoint index | 
| [in] | ss | overlap matrix; dimension (1:st%nst, 1:st%nst) | 
Definition at line 2562 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::zstates_elec_orthogonalize_single | ( | type(states_elec_t), intent(in), target | st, | 
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | nst, | ||
| integer, intent(in) | iqn, | ||
| complex(real64), dimension(:,:), intent(inout), contiguous | phi, | ||
| logical, intent(in), optional | normalize, | ||
| logical, dimension(:), intent(inout), optional | mask, | ||
| complex(real64), dimension(:), intent(out), optional | overlap, | ||
| real(real64), intent(out), optional | norm, | ||
| real(real64), intent(in), optional | Theta_fi, | ||
| complex(real64), dimension(:), intent(in), optional | beta_ij, | ||
| logical, intent(in), optional | against_all | ||
| ) | 
ofthogonalize a single wave function against a set of states
Does not use batchified routines.
| [in] | st | the states | 
| [in] | mesh | underlying mesh for number of points | 
| [in] | nst | number of states to be considered | 
| [in] | iqn | k-point index | 
| [in,out] | phi | phi(meshnp_part, dim) | 
| [in] | normalize | optional flag whether to normalize the result; default = .false. | 
| [in,out] | mask | optional mask(nst); TODO: add more information | 
| [out] | overlap | optional output: overlaps to the states | 
| [out] | norm | optional output: norm of the resulting state | 
| [in] | theta_fi | optional: TODO: add more information | 
| [in] | beta_ij | optional: beta_ij(nst); TODO add more information | 
| [in] | against_all | optional flag whether to include all states (up to nst) | 
Definition at line 2678 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::zstates_elec_orthogonalize_single_batch | ( | type(states_elec_t), intent(in) | st, | 
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | nst, | ||
| integer, intent(in) | iqn, | ||
| complex(real64), dimension(:,:), intent(inout), contiguous | phi, | ||
| logical, intent(in), optional | normalize, | ||
| logical, dimension(:), intent(inout), optional | mask, | ||
| complex(real64), dimension(:), intent(out), optional | overlap, | ||
| real(real64), intent(out), optional | norm, | ||
| real(real64), intent(in), optional | Theta_fi, | ||
| complex(real64), dimension(:), intent(in), optional | beta_ij, | ||
| logical, intent(in), optional | against_all | ||
| ) | 
orthogonalize a single wave function against a set of states
This version uses batchified routines.
| [in] | st | the states | 
| [in] | mesh | underlying mesh for number of points | 
| [in] | nst | number of states to consider | 
| [in] | iqn | k-point index | 
| [in,out] | phi | phi(meshnp_part, dim) | 
| [in] | normalize | optional flag whether to normalize the result; default = .false. | 
| [in,out] | mask | optional mask(nst) | 
| [out] | overlap | optional output: overlap to the states | 
| [out] | norm | optional output: norm or the result | 
| [in] | theta_fi | optional: beta_ij(nst); TODO add more information | 
| [in] | beta_ij | beta_ij(nst) | 
| [in] | against_all | optional flag whether to include all states (up to nst) | 
Definition at line 2834 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::zstates_elec_orthogonalization | ( | class(mesh_t), intent(in) | mesh, | 
| integer, intent(in) | nst, | ||
| integer, intent(in) | dim, | ||
| complex(real64), dimension(:,:,:), intent(in) | psi, | ||
| complex(real64), dimension(:,:), intent(inout) | phi, | ||
| logical, intent(in), optional | normalize, | ||
| logical, dimension(:), intent(inout), optional | mask, | ||
| complex(real64), dimension(:), intent(out), optional | overlap, | ||
| complex(real64), intent(out), optional | norm, | ||
| real(real64), intent(in), optional | Theta_fi, | ||
| complex(real64), dimension(:), intent(in), optional | beta_ij, | ||
| integer, intent(in), optional | gs_scheme | ||
| ) | 
Orthonormalizes phi to the nst orbitals psi.
It also permits doing only the orthogonalization (no normalization). And one can pass an extra optional argument, mask, which:
| [in] | mesh | underlying mesh for np, np_part | 
| [in] | nst | number of states to orthoganolize against | 
| [in] | dim | spin dimension of the wave functions | 
| [in] | psi | psi(meshnp_part, dim, nst) | 
| [in,out] | phi | phi(meshnp_part, dim) | 
| [in] | normalize | optional flag whether to normalize the result | 
| [in,out] | mask | mask(nst) | 
| [out] | overlap | optional output: overlap with the states | 
| [out] | norm | optional output: norm of resulting state | 
| [in] | beta_ij | beta_ij(nst) | 
Definition at line 2996 of file states_elec_calc.F90.
| real(real64) function, public states_elec_calc_oct_m::zstates_elec_residue | ( | class(mesh_t), intent(in) | mesh, | 
| integer, intent(in) | dim, | ||
| complex(real64), dimension(:,:), intent(in) | hf, | ||
| real(real64), intent(in) | ee, | ||
| complex(real64), dimension(:,:), intent(in) | ff | ||
| ) | 
Definition at line 3182 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::zstates_elec_matrix | ( | type(states_elec_t), intent(in) | st1, | 
| type(states_elec_t), intent(in) | st2, | ||
| class(mesh_t), intent(in) | mesh, | ||
| complex(real64), dimension(:, :, :), intent(out), contiguous | aa | ||
| ) | 
Definition at line 3217 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::zstates_elec_calc_orth_test | ( | type(states_elec_t), intent(inout) | st, | 
| type(namespace_t), intent(in) | namespace, | ||
| class(mesh_t), intent(in) | mesh, | ||
| type(kpoints_t), intent(in) | kpoints | ||
| ) | 
Definition at line 3265 of file states_elec_calc.F90.
      
  | 
  private | 
Definition at line 3377 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::zstates_elec_calc_overlap | ( | type(states_elec_t), intent(inout) | st, | 
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | ik, | ||
| complex(real64), dimension(:, :), intent(out), contiguous | overlap | ||
| ) | 
Computes the overlap matrix of the Kohn-Sham states with k-point ik.
Definition at line 3497 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::zstates_elec_calc_projections | ( | type(states_elec_t), intent(in) | st, | 
| type(states_elec_t), intent(inout) | gs_st, | ||
| type(namespace_t), intent(in) | namespace, | ||
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | ik, | ||
| complex(real64), dimension(:, :), intent(out), contiguous | proj, | ||
| integer, intent(in), optional | gs_nst | ||
| ) | 
This routine computes the projection between two set of states.
Definition at line 3673 of file states_elec_calc.F90.
| subroutine, public states_elec_calc_oct_m::zstates_elec_rrqr_decomposition | ( | type(states_elec_t), intent(in) | st, | 
| type(namespace_t), intent(in) | namespace, | ||
| class(mesh_t), intent(in) | mesh, | ||
| integer, intent(in) | nst, | ||
| logical, intent(in) | root, | ||
| integer, intent(in) | ik, | ||
| integer, dimension(:), intent(out) | jpvt | ||
| ) | 
Perform RRQR on the transpose states stored in the states object and return the pivot vector.
We follow [Pizzi et al., J. Phys.: Condens. Matter 32 (2020) 165902] for doing the extension to spinors
| [in] | root | this is needed for serial | 
| [in] | ik | perform SCDM with this k-point | 
Definition at line 3850 of file states_elec_calc.F90.