C E X A M P L E F M S R O W
C
C Program name:
CHARACTER*9 MYNAME
PARAMETER (MYNAME='EXAMPLE_8')
C
PARAMETER (NMAX = 1000)
COMMON A(NMAX), X(NMAX)
COMPLEX*16 A, X, ZERO, ONE, ALPHA(1)
REAL*8 EI, ERROR
INTEGER LUA(25), LUX(25), LUS0(25), LUA0(25)
C
C Profile vector for a full matrix:
INTEGER LOWEQ(1)
DATA LOWEQ/-1/
DATA ZERO /(0.D0,0.D0)/
DATA ONE /(1.D0,1.D0)/
DATA ALPHA/(1.D0,0.D0)/
DATA LUA0(1)/0/
DATA LUS0(1)/0/
C
C (1) Initialize FMS:
CALL FMSINI
CALL FMSPSH (MYNAME)
N = NMAX
C
C (2) Open FMS files:
CALL CNDI (LOWEQ, N, 'LUA', LUA)
CALL FMSOV2 (N, 2, 1, X, N, LUX)
DO 21 I = 1,N
X(I) = ZERO
21 CONTINUE
X(1) = ONE
C
C (3) Write data to FMS files:
C Initialize FMSROW
CALL FMSROW (0, A, LUA)
C Write first row
DO 31 I = 2,N
A(I) = -ONE
31 CONTINUE
A(1) = DCMPLX(N,N)
CALL FMSROW (1, A, LUA)
C Write remaining rows
DO 32 I = 2,N
A(I) = ZERO
32 CONTINUE
A(1) = -ONE
DO 33 I = N,2,-1
A(I) = ONE
CALL FMSROW (I, A, LUA)
A(I) = ZERO
33 CONTINUE
C End FMSROW
CALL FMSROW (N+1, A, LUA)
C
C (4) Perform matrix algebra:
CALL CNDAF (LUA, ALPHA, 1, LUS0, 0, LUA0,
1 LUA, LUX, LUX, 0)
CALL CNDS (LUA, LUX, LUX, 1, 0)
C
C (5)) Read data from FMS files:
C (Not required).
C
C Check the answer:
ERROR = 0.0D0
DO 50 I = 1,N
EI = ABS(X(I) - 1.0D0)
IF(EI .GT. ERROR) ERROR = EI
50 CONTINUE
WRITE(6,*) 'MAXIMUM ERROR =', ERROR
C
C Close FMS files:
CALL FMSCM (LUA)
CALL FMSCV (LUX)
CALL FMSPOP (MYNAME)
CALL FMSEND
END