quantum-espresso/flib/indxl2g.f

56 lines
1.6 KiB
Fortran

INTEGER FUNCTION INDXL2G( INDXLOC, NB, IPROC, ISRCPROC, NPROCS )
*
* -- ScaLAPACK tools routine (version 1.5) --
* University of Tennessee, Knoxville, Oak Ridge National Laboratory,
* and University of California, Berkeley.
* May 1, 1997
*
* .. Scalar Arguments ..
INTEGER INDXLOC, IPROC, ISRCPROC, NB, NPROCS
* ..
*
* Purpose
* =======
*
* INDXL2G computes the global index of a distributed matrix entry
* pointed to by the local index INDXLOC of the process indicated by
* IPROC.
*
* Arguments
* =========
*
* INDXLOC (global input) INTEGER
* The local index of the distributed matrix entry.
*
* NB (global input) INTEGER
* Block size, size of the blocks the distributed matrix is
* split into.
*
* IPROC (local input) INTEGER
* The coordinate of the process whose local array row or
* column is to be determined.
*
* ISRCPROC (global input) INTEGER
* The coordinate of the process that possesses the first
* row/column of the distributed matrix.
*
* NPROCS (global input) INTEGER
* The total number processes over which the distributed
* matrix is distributed.
*
* =====================================================================
*
* .. Intrinsic Functions ..
INTRINSIC MOD
* ..
* .. Executable Statements ..
*
INDXL2G = NPROCS*NB*((INDXLOC-1)/NB) + MOD(INDXLOC-1,NB) +
$ MOD(NPROCS+IPROC-ISRCPROC, NPROCS)*NB + 1
*
RETURN
*
* End of INDXL2G
*
END