PROGRAM SIMULTANEOUS
C==================================================================
C SOLVE SIMULTANEOUS EQUATIONS [A]{X}={B} BY
C [A]=[L][D][L]TRANSPOSE DECOMPSITION
C SYMMETRY [A] NON-POSITIVE DIFINITE
C INPUT [A] ------------------------- SQUARE MATRIX
C OUTPUT [A] = UPPER TRIANGLE
C DIAGONAL OF [A] IS [D]
C [A]-[D] = [L]TRANSPOSE
C AUGUST 01, 2008 EIJI FUKUMORI
C==================================================================
IMPLICIT REAL*8(A-H,O-Z)
C
PARAMETER ( MXN=100,MXW=20, NEMX=MXN*(3*MXN-1)/2 )
DIMENSION A(MXN,MXN), IA(NEMX), B(MXN), ALDL(MXW,MXN),
* VRTCL(MXN,MXN), BACK(MXW,MXN)
C
NNODE = 8
IBAND = 5
CALL MTXMAKE ( MXN,MXW,NEMX,NNODE,IBAND,IA,A,B,ALDL,
* BACK,VRTCL )
STOP 'NORMAL TERMINATION'
END
C
C
SUBROUTINE MTXMAKE ( MXN,MXW,NEMX,NNODE,IBAND,IA,A,B,ALDL,
* BACK,VRTCL )
IMPLICIT REAL*8(A-H,O-Z)
DIMENSION A(MXN,MXN), IA(NEMX), B(MXN), ALDL(MXW,MXN)
DIMENSION VRTCL(MXN,MXN), BACK(MXW,MXN)
NELEMNT = NNODE*(3*NNODE-1)/2 + NNODE
OPEN ( 1, FILE='PI.DAT', STATUS='OLD' )
READ (1,*)
READ (1,*)
READ(1,'(4(5I2,1X),5I2)') ( IA(I), I= 1, NELEMNT )
C
C-------- MATRIX [A]
M = 0
DO I = 1 , NNODE
MAXJ = IBAND
IF (NNODE-I+1 .LT. IBAND ) MAXJ = NNODE-I+1
DO J = I , I+MAXJ-1
M = M + 1
A(I,J) = IA(M)
A(J,I) = A(I,J)
END DO
END DO
C
C------- VECTOR {B}
DO I = 1 , NNODE
M = M + 1
B(I) = IA(M)
END DO
C==================================================================
C------- CREATING FULL MATRIX DATA FILE
OPEN ( 2, FILE='SYSFULL.DAT', STATUS='UNKNOWN' )
WRITE (2,*) NNODE
DO I = 1 , NNODE
WRITE (2,*) (A(I,J),J=1,NNODE), B(I)
END DO
CLOSE (2)
C==================================================================
C--------- CREATING CRUSH MATRIX (VERTICAL)---------
DO I = 1 , NNODE
DO J = 1 , IBAND
VRTCL(I,J) = 0.D0
END DO
END DO
DO I = 1 , NNODE
DO J = I , NNODE
JJ = J - I + 1
VRTCL(I,JJ) = A(I,J)
END DO
END DO
OPEN ( 2, FILE='MTRIXLDLVT.DAT', STATUS='UNKNOWN' )
WRITE (2,*) NNODE, IBAND
DO I = 1 , NNODE
WRITE (2,'(20G14.5)') ( VRTCL(I,J), J=1,IBAND )
END DO
WRITE (2,'(20G14.5)') ( B(I), I=1,NNODE )
CLOSE (2)
RETURN
END