37 use,
intrinsic :: iso_fortran_env
80 class(subspace_t),
intent(out) :: this
81 type(namespace_t),
intent(in) :: namespace
82 type(states_elec_t),
intent(in) :: st
107 default = option__subspacediagonalization__standard
110 if (st%parallel_in_states) default = option__subspacediagonalization__scalapack
113 call parse_variable(namespace,
'SubspaceDiagonalization', default, this%method)
122 if (this%method == option__subspacediagonalization__scalapack)
then
124 message(1) =
'The scalapack subspace diagonalization can only be used with MPI parallelization.'
127#ifndef HAVE_SCALAPACK
128 message(1) =
'The scalapack subspace diagonalization requires scalapack.'
131 if (st%dom_st_mpi_grp%size == 1)
then
132 message(1) =
'The scalapack subspace diagonalization is designed to be used with domain or state parallelization.'
136 if (st%d%kpt%parallel)
then
137 message(1) =
'Currently the scalapack subspace diagonalization does not use k-point parallelization.'
148#include "subspace_inc.F90"
151#include "complex.F90"
152#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 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.