(N,a,b,c,d,P,Q,T) IMPLICIT NONE INTEGER :: i !Nmero do N real*8 :: aux !Varivel auxiliar INTEGER, INTENT(IN) :: N !NMERO TOTAL DE NS !COEFICIENTES E TERMO-FONTE REAL*8,INTENT(IN),DIMENSION(N) :: a REAL*8,INTENT(IN),DIMENSION(N) :: b REAL*8,INTENT(IN),DIMENSION(N) :: c REAL*8,INTENT(IN),DIMENSION(N) :: d !COEFIIENTES DO TDMA REAL*8,INTENT(OUT),DIMENSION(N) :: P REAL*8,INTENT(OUT),DIMENSION(N) :: Q !VARIVEL DE SADA REAL*8,INTENT(OUT),DIMENSION(N) :: T P(1) = c(1) / a(1) Q(1) = d(1) / a(1) DO i=2,N aux = a(i) - b(i)*P(i-1) P(i)= c(i) / aux Q(i)= (d(i)+ b(i) * Q(i-1)) / aux END DO T(N) = Q(N) DO i = N-1,1,-1 T(i)= P(i) * T(i+1) + Q(i) END DO END SUBROUTINE TDMA
PROGRAM PRINCIPAL IMPLICIT NONE EXTERNAL TDMA INTEGER :: QUESTAO
INTEGER :: N !NMERO TOTAL DE NS INTEGER :: i !NMERO DO N !VARIVEIS COEFICIENTES E TERMO-FONTE: REAL*8, DIMENSION(:),ALLOCATABLE :: aP REAL*8, DIMENSION(:),ALLOCATABLE :: aW REAL*8, DIMENSION(:),ALLOCATABLE :: aE REAL*8, DIMENSION(:),ALLOCATABLE :: bP !VARIVEIS DE SADA REAL*8, DIMENSION(:),ALLOCATABLE :: P REAL*8, DIMENSION(:),ALLOCATABLE :: Q REAL*8, DIMENSION(:),ALLOCATABLE :: T REAL*8, DIMENSION(:),ALLOCATABLE :: TA WRITE(*,*) "EME-757 DINAMICA DE FLUIDOS COMPUTACIONAL I" WRITE(*,*) "PRIMEIRO TRABALHO COMPUTACIONAL - 25 SET 2013" WRITE(*,*) "DESENVOLVIDO POR ALEX VINICIUS LOPES MACHADO" WRITE(*,*) "DIGITE: " WRITE(*,*) "1 - PARA RESOLVER A QUESTAO 1.1" WRITE(*,*) "2 - PARA RESOLVER A QUESTAO 1.2" READ (*,*) QUESTAO !------------------- QUESTAO 1.1 -------------------------------------- IF (QUESTAO==1) THEN CALL SYSTEM("NOTEPAD DADOS1.1.txt") OPEN(9, file="DADOS1.1.txt") READ(9,*) N ALLOCATE (aP(N),aW(N),aE(N),bP(N),P(N),Q(N),T(N),TA(N)) READ(9,*) aP(1),aW(1),aE(1),bP(1) READ(9,*) aP(2),aW(2),aE(2),bP(2) READ(9,*) aP(N),aW(N),aE(N),bP(N) CLOSE(9) DO i=1,N,1 TA(i)=(i-1.0d0) / (N-1.0d0) END DO DO i=3,N-1,1 aP(i)=aP(2) aW(i)=aW(2) aE(i)=aE(2) bP(i)=bP(2) END DO OPEN(15, file="VIZDADOS1.1.txt") WRITE(15,10) 10 FORMAT("# i",t17,"aP",t47,"aW",t77,"aE",t107,"bP",1/) DO i=1,N,1 WRITE(15,12) i,aP(i),aW(i),aE(i),bP(i) 12 FORMAT(I8,4(1PE30.15E2)) END DO CLOSE(15) CALL SYSTEM("NOTEPAD VIZDADOS1.1.txt") CALL TDMA (N,aP,aW,aE,bP,P,Q,T) OPEN(17, file="RESULTADOS1.1.txt") WRITE(17,8) 8 FORMAT("# i",t17,"P",t47,"Q",t77,"T",t107,"TA",1/) DO i=1,N,1 WRITE(17,9) i,P(i),Q(i),T(i),TA(i) 9 FORMAT(I8,4(1PE30.15E2)) END DO CLOSE(17) CALL SYSTEM("NOTEPAD RESULTADOS1.1.txt") CALL SYSTEM("gnuplot COMANDOS.TXT") END IF !-------------------QUESTAO 1.2 -------------------------------------IF (QUESTAO==2) THEN CALL SYSTEM("NOTEPAD DADOS1.2.txt") OPEN(9, file="DADOS1.2.txt") READ(9,*) N ALLOCATE (aP(N),aW(N),aE(N),bP(N),P(N),Q(N),T(N),TA(N)) READ(9,*) aP(1),aW(1),aE(1),bP(1) READ(9,*) aP(2),aW(2),aE(2) READ(9,*) aP(N),aW(N),aE(N),bP(N) CLOSE(9) bP(2) = -2.0d0 / (N-1.0d0)**2.0d0 DO i=1,N,1 TA(i)=((i-1.0d0) / (N-1.0d0))**2.0d0 END DO DO i=3,N-1,1 aP(i)=aP(2) aW(i)=aW(2) aE(i)=aE(2) bP(i)=bP(2) END DO OPEN(15, file="VIZDADOS1.2.txt") WRITE(15,10) DO i=1,N,1 WRITE(15,12) i,aP(i),aW(i),aE(i),bP(i) END DO CLOSE(15) CALL SYSTEM("NOTEPAD VIZDADOS1.2.txt")
CALL TDMA (N,aP,aW,aE,bP,P,Q,T)
OPEN(17, file="RESULTADOS1.2.txt") WRITE(17,8) DO i=1,N,1 WRITE(17,9) i,P(i),Q(i),T(i),TA(i) END DO CLOSE(17) CALL SYSTEM("NOTEPAD RESULTADOS1.2.txt") END IF !----------------------------------------------------------END PROGRAM PRINCIPAL