fortran algorithm solved hydraulic dam

14

Upload: ariadne-tsambali

Post on 13-Apr-2017

163 views

Category:

Documents


3 download

TRANSCRIPT

SOLUTION OF LINEAR SYSTEM MATRICES WITH GUASS ELIMINATION METHOD:- [K][h]=[b]

PROGRAM MATRICES

!SOLUTION OF A LINEAR SYSTEM WITH GAUSS

IMPLICIT NONE

REAL,ALLOCATABLE:: A(:,:), B(:),H(:)

INTEGER::status, I,J,N=3

ALLOCATE (A(N,N),B(N),H(N), STAT=status)

IF (status /= 0) THEN

STOP 'NOT ENOUGH MEMORY'

ELSE

DO I = 1,N !GIVE THE NUMBERS

PRINT*, 'EQUATION', I

DO J = 1,N

PRINT*, 'GIVE A(',J,',',I,')'

READ*,A(J,I)

ENDDO

PRINT*, 'GIVE B(',I,')'

READ*, B(I)

ENDDO

! GAUSS

CALL GAUSS (A,B,H)

DO I = 1,N

PRINT*,'H(',I,')=', H(I)

ENDDO

END IF

CONTAINS

SUBROUTINE GAUSS(A,B,H)

REAL:: A(:,:),B(:)

REAL:: ATHRISMA,M(SIZE(B))

REAL,INTENT(OUT)::H(:)

INTEGER, SAVE:: I,J,K

DO I = 1, SIZE(B)-1

DO J = I+1, SIZE(B)

M(J) = -A(J,I)/A(I,I)

DO K = 1, SIZE(B)

A(J,K) = A(J,K) + M(J)*A(I,K)

ENDDO

B(J) = B(J)+M(J)*B(I)

ENDDO

ENDDO

DO I = SIZE(B),1,-1

ATHRISMA = 0.0

ATHRISMA = SUM(A(I,I:SIZE(B))*H(I:SIZE(B)))

H(I) = (B(I)-ATHRISMA) /A(I,I)

ENDDO

END SUBROUTINE GAUSS

END PROGRAM

RESULTS:-

EQUATION 1

GIVE A( 1, 1)

GIVE A( 2, 1)

GIVE A( 3, 1)

GIVE B( 1)

EQUATION 2

GIVE A( 1, 2)

GIVE A( 2, 2)

GIVE A( 3, 2)

GIVE B( 2)

EQUATION 3

GIVE A( 1, 3)

GIVE A( 2, 3)

GIVE A( 3, 3)

GIVE B( 3)

H( 1)= 2.00000

H( 2)= -1.00000

H( 3)= 1.00000