pctrevc man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

PCTREVC(l)			       )			    PCTREVC(l)

NAME
       PCTREVC	- compute some or all of the right and/or left eigenvectors of
       a complex upper triangular matrix T in parallel

SYNOPSIS
       SUBROUTINE PCTREVC( SIDE, HOWMNY, SELECT, N, T, DESCT, VL, DESCVL,  VR,
			   DESCVR, MM, M, WORK, RWORK, INFO )

	   CHARACTER	   HOWMNY, SIDE

	   INTEGER	   INFO, M, MM, N

	   LOGICAL	   SELECT( * )

	   INTEGER	   DESCT( * ), DESCVL( * ), DESCVR( * )

	   REAL		   RWORK( * )

	   COMPLEX	   T( * ), VL( * ), VR( * ), WORK( * )

PURPOSE
       PCTREVC computes some or all of the right and/or left eigenvectors of a
       complex upper triangular matrix T in parallel.  The right eigenvector x
       and  the	 left  eigenvector y of T corresponding to an eigenvalue w are
       defined by:

		    T*x = w*x,	   y'*T = w*y'

       where y' denotes the conjugate transpose of the vector y.

       If all eigenvectors are requested, the routine may  either  return  the
       matrices X and/or Y of right or left eigenvectors of T, or the products
       Q*X and/or Q*Y, where Q is an input unitary
       matrix. If T was obtained from the Schur factorization of  an  original
       matrix  A  = Q*T*Q', then Q*X and Q*Y are the matrices of right or left
       eigenvectors of A.

       Notes
       =====

       Each global data object is described by an associated description  vec‐
       tor.  This vector stores the information required to establish the map‐
       ping between an object element and its corresponding process and memory
       location.

       Let  A  be  a generic term for any 2D block cyclicly distributed array.
       Such a global array has an associated description vector DESCA.	In the
       following  comments,  the  character _ should be read as "of the global
       array".

       NOTATION	       STORED IN      EXPLANATION
       ---------------	--------------	--------------------------------------
       DTYPE_A(global) DESCA( DTYPE_ )The descriptor type.  In this case,
				      DTYPE_A = 1.
       CTXT_A (global) DESCA( CTXT_ ) The BLACS context handle, indicating
				      the BLACS process grid A is distribu-
				      ted over. The context itself is glo-
				      bal, but the handle (the integer
				      value) may vary.
       M_A    (global) DESCA( M_ )    The number of rows in the global
				      array A.
       N_A    (global) DESCA( N_ )    The number of columns in the global
				      array A.
       MB_A   (global) DESCA( MB_ )   The blocking factor used to distribute
				      the rows of the array.
       NB_A   (global) DESCA( NB_ )   The blocking factor used to distribute
				      the columns of the array.
       RSRC_A (global) DESCA( RSRC_ ) The process row over which the first
				      row  of  the  array  A  is  distributed.
       CSRC_A (global) DESCA( CSRC_ ) The process column over which the
				      first column of the array A is
				      distributed.
       LLD_A  (local)  DESCA( LLD_ )  The leading dimension of the local
				      array.  LLD_A >= MAX(1,LOCr(M_A)).

       Let K be the number of rows or columns of  a  distributed  matrix,  and
       assume that its process grid has dimension r x c.
       LOCr(  K	 )  denotes  the  number of elements of K that a process would
       receive if K were distributed over the r processes of its process  col‐
       umn.
       Similarly, LOCc( K ) denotes the number of elements of K that a process
       would receive if K were distributed over the c processes of its process
       row.
       The  values  of	LOCr()	and LOCc() may be determined via a call to the
       ScaLAPACK tool function, NUMROC:
	       LOCr( M ) = NUMROC( M, MB_A, MYROW, RSRC_A, NPROW ),
	       LOCc( N ) = NUMROC( N, NB_A, MYCOL, CSRC_A, NPCOL ).  An	 upper
       bound for these quantities may be computed by:
	       LOCr( M ) <= ceil( ceil(M/MB_A)/NPROW )*MB_A
	       LOCc( N ) <= ceil( ceil(N/NB_A)/NPCOL )*NB_A

ARGUMENTS
       SIDE    (global input) CHARACTER*1
	       = 'R':  compute right eigenvectors only;
	       = 'L':  compute left eigenvectors only;
	       = 'B':  compute both right and left eigenvectors.

       HOWMNY  (global input) CHARACTER*1
	       = 'A':  compute all right and/or left eigenvectors;
	       =  'B':	 compute all right and/or left eigenvectors, and back‐
	       transform them using the input matrices supplied in  VR	and/or
	       VL;  =  'S':   compute selected right and/or left eigenvectors,
	       specified by the logical array SELECT.

       SELECT  (global input) LOGICAL array, dimension (N)
	       If HOWMNY = 'S', SELECT specifies the eigenvectors to  be  com‐
	       puted.	If  HOWMNY = 'A' or 'B', SELECT is not referenced.  To
	       select the eigenvector corresponding to	the  j-th  eigenvalue,
	       SELECT(j) must be set to .TRUE..

       N       (global input) INTEGER
	       The order of the matrix T. N >= 0.

       T       (global input/output) COMPLEX array, dimension
	       (DESCT(LLD_),*)	The upper triangular matrix T.	T is modified,
	       but restored on exit.

       DESCT   (global and local input) INTEGER array of dimension DLEN_.
	       The array descriptor for the distributed matrix T.

       VL      (global input/output) COMPLEX array, dimension
	       (DESCVL(LLD_),MM) On entry, if SIDE = 'L' or 'B' and  HOWMNY  =
	       'B',  VL	 must  contain an N-by-N matrix Q (usually the unitary
	       matrix Q of Schur vectors returned by  CHSEQR).	 On  exit,  if
	       SIDE  =	'L' or 'B', VL contains: if HOWMNY = 'A', the matrix Y
	       of left eigenvectors of T; if HOWMNY = 'B', the matrix Q*Y;  if
	       HOWMNY  =  'S', the left eigenvectors of T specified by SELECT,
	       stored consecutively in the columns of VL, in the same order as
	       their eigenvalues.  If SIDE = 'R', VL is not referenced.

       DESCVL  (global and local input) INTEGER array of dimension DLEN_.
	       The array descriptor for the distributed matrix VL.

       VR      (global input/output) COMPLEX array, dimension
	       (DESCVR(LLD_),MM)  On  entry, if SIDE = 'R' or 'B' and HOWMNY =
	       'B', VR must contain an N-by-N matrix Q	(usually  the  unitary
	       matrix  Q  of  Schur  vectors returned by CHSEQR).  On exit, if
	       SIDE = 'R' or 'B', VR contains: if HOWMNY = 'A', the  matrix  X
	       of right eigenvectors of T; if HOWMNY = 'B', the matrix Q*X; if
	       HOWMNY = 'S', the right eigenvectors of T specified by  SELECT,
	       stored consecutively in the columns of VR, in the same order as
	       their eigenvalues.  If SIDE = 'L', VR is not referenced.

       DESCVR  (global and local input) INTEGER array of dimension DLEN_.
	       The array descriptor for the distributed matrix VR.

       MM      (global input) INTEGER
	       The number of columns in the arrays VL and/or VR. MM >= M.

       M       (global output) INTEGER
	       The number of columns in the arrays VL and/or VR actually  used
	       to store the eigenvectors.  If HOWMNY = 'A' or 'B', M is set to
	       N.  Each selected eigenvector occupies one column.

       WORK    (local workspace) COMPLEX array,
	       dimension  (  2*DESCT(LLD_)  )  Additional  workspace  may   be
	       required if PCLATTRS is updated to use WORK.

       RWORK   (local workspace) REAL array,
	       dimension ( DESCT(LLD_) )

       INFO    (global output) INTEGER
	       = 0:  successful exit
	       < 0:  if INFO = -i, the i-th argument had an illegal value

FURTHER DETAILS
       The algorithm used in this program is basically backward (forward) sub‐
       stitution.  It is the hope that scaling would be used to make  the  the
       code  robust  against  possible overflow.  But scaling has not yet been
       implemented in PCLATTRS which is called by this routine	to  solve  the
       triangular systems.  PCLATTRS just calls PCTRSV.

       Each eigenvector is normalized so that the element of largest magnitude
       has magnitude 1; here the magnitude of a complex number (x,y) is	 taken
       to be |x| + |y|.

FURTHER DETAILS
       Implemented by Mark R. Fahey, June, 2000

ScaLAPACK version 1.7		13 August 2001			    PCTREVC(l)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net