36 use,
intrinsic :: iso_fortran_env
81 class(subspace_t),
intent(out) :: this
82 type(namespace_t),
intent(in) :: namespace
83 type(states_elec_t),
intent(in) :: st
108 default = option__subspacediagonalization__standard
111 if (st%parallel_in_states) default = option__subspacediagonalization__scalapack
114 call parse_variable(namespace,
'SubspaceDiagonalization', default, this%method)
123 if (this%method == option__subspacediagonalization__scalapack)
then
125 message(1) =
'The scalapack subspace diagonalization can only be used with MPI parallelization.'
128#ifndef HAVE_SCALAPACK
129 message(1) =
'The scalapack subspace diagonalization requires scalapack.'
132 if (st%dom_st_mpi_grp%size == 1)
then
133 message(1) =
'The scalapack subspace diagonalization is designed to be used with domain or state parallelization.'
137 if (st%d%kpt%parallel)
then
138 message(1) =
'Currently the scalapack subspace diagonalization does not use k-point parallelization.'
149#include "subspace_inc.F90"
152#include "complex.F90"
153#include "subspace_inc.F90"
This module implements batches of mesh functions.
This module implements common operations on batches of mesh functions.
This module contains interfaces for BLACS routines Interfaces are from http:
This module provides the BLACS processor grid.
This module contains interfaces for BLAS routines You should not use these routines directly....
This module is intended to contain "only mathematical" functions and procedures.
This module defines functions over batches of mesh functions.
This module defines the meshes, which are used in Octopus.
subroutine, public messages_warning(no_lines, all_nodes, namespace)
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_fatal(no_lines, only_root_writes, namespace)
subroutine, public messages_input_error(namespace, var, details, row, column)
This module contains interfaces for ScaLAPACK routines Interfaces are from http:
This module provides routines for communicating states when using states parallelization.
subroutine subspace_init(this, namespace, st)
Initialize Subspace type.
subroutine, public zsubspace_diag_hamiltonian(namespace, mesh, st, hm, ik, hmss, overlap)
Diagonalises the Hamiltonian in the subspace defined by the states.
subroutine, public dsubspace_diag(this, namespace, mesh, st, hm, ik, eigenval, diff, nonortho)
Diagonalises the Hamiltonian in the subspace defined by the states.
subroutine, public zsubspace_diag(this, namespace, mesh, st, hm, ik, eigenval, diff, nonortho)
Diagonalises the Hamiltonian in the subspace defined by the states.
subroutine, public dsubspace_diag_hamiltonian(namespace, mesh, st, hm, ik, hmss, overlap)
Diagonalises the Hamiltonian in the subspace defined by the states.