logop.jpg (4792 bytes)

VEST -01 GERAÇÃO ESTOCÁSTICA DE VAZÕES DE UM RIO

Aplicativo em linguagem FORTRAN que foi desenvolvido para Geração Estocástica de vazões de um rio com base em vazões observadas.

// JOB T

 

// FOR

C

 

**************************

C

 

VEST – VAZÕES ESTOCÁSTICAS

C

 

**************************

C

 

Programa que gera vazões estocásticas a partir de observações

C

 

efetuadas

 

 

 

C

 

Roberto Massaru Watanabe

C

 

13 de julho de 1970

 

 

 

 

 

DIMENSION WA(100)

 

 

DIMENSION V(12,50),E(12),S(12),CV(12),R(12),BETA(12),GAMA(12)

 

 

DIMENSION VN(12,50),WE(100)

 

 

COMMON RHO,BN

 

 

DATA WE/100*´ ´/

 

 

DATA WA/100*´    ´/,ASTER/´*´/,VALOR/´L´/,BCO/´´/,VALER/´G´/

 

 

DATA IL,IW/8,5/

 

 

READ(IL,100)N

100

 

FORMAT(I3)

 

 

DO 202 I=1,N

 

 

READ(IL,101)(V(J,I),J=1,12)

101

 

FORMAT(14X,12(1X,F4.1))

202

 

CONTINUE

 

C

CALCULO DA MEDIA E DESVIO PADRAO

 

 

XN=N

 

 

WRITE(IW,102)

102

 

FORMAT(1H ,10X,´MES    MEDIA VAZOES    DESVIO PADRAO´//)

 

 

DO 200 I=1,12

 

 

A=0.0

 

 

B=0.0

 

 

DO 201 J=1,N

 

 

A=A+V(I,J)

201

 

B=B+V(I,J)**2

 

 

E(I)=A/XN

 

 

S(I)=SQRT(B/(XN-1.0)-E(I)**2)

 

 

WRITE(IW,103)I,E(I),S(I)

103

 

FORMAT(1H ,10X,I2,8X,F5.1,11X,F7.3)

200

 

CONTINUE

 

C

CALCULO DAS COVARIANCAS E CORRELACOES

 

 

WRITE(IW,104)

104

 

FORMAT(///,11X,´MÊS    CORRELACOES´//)

 

 

DO 500 I=1,12

 

 

A=0.0

 

 

IF(I-1)260,250,260

250

 

K=12

 

 

DO 301 J=2,N

301

 

A=A+(V(I,J)-E(I))*(V(K,J-1)E(K))

 

 

CV(I)=A/(XN-1)

 

 

GO TO 302

260

 

K=I-1

 

 

DO 300 J=1,N

300

 

A=A+(V(I,J)-E(I)*(V(K,J)-E(K))

 

 

CV(I)=A/XN

302

 

R(I)=CV(I)/(S(I)*S(K))

 

 

WRITE(IW,105)I,R(I)

105

 

FORMAT(1H ,10X,I2,8X,F7.3)

500

 

CONTINUE

 

C

CALCULO DE COEFICIENTES

 

 

WRITE(IW,106)

106

 

FORMAT(///,11X,´MÊS      BETA      GAMA´//)

 

 

DO 1000 I=1,12

 

 

IF(I-1) 700,600,700

600

 

K=12

 

 

GO TO 800

700

 

K=I-1

800

 

BETA(I)=R(I)*S(I)/S(K)

 

 

GAMA(I)=S(I)*SQRT(1.0-R(I)**2)

 

 

WRITE(IW,107)I,BETA(I),GAMA(I)

107

 

FORMAT(11X,I2,6X,F7.3,3X,F7.3)

1000

 

CONTINUE

 

C

GERACAO DE SERIE ESTOCASTICA

 

 

V1=V(1,1)

 

 

VN(1,1)=V1

 

 

RAN=1.0

 

 

RHO=7.0**13

 

 

BN=10.0**10

 

 

LL=12

 

 

XL=LL

 

 

DO 5000 J=1,N

 

 

DO 4000 I=1,12

 

 

IF (J-1)1060,1050,1060

1050

 

IF(I-1)1060,4000,1060

1060

 

Z=0.0

 

 

DO 1100 L=1,LL

 

 

CALL RANF(RAN)

1100

 

Z=Z+RAN

 

 

W=)Z-XL/2.0)/SQRT(XL/12.0)

 

 

IF(I-1)1120,1110,1120

1110

 

K=12

 

 

GO TO 1150

1120

 

K=I-1

1150

 

V1=E(I)+BETA(I)*(V1-E(K))+W*GAMA(I)

 

 

VN(I,J)=V1

4000

 

CONTINUE

5000

 

CONTINUE

 

C

IMPRESSAO DAS VAZOES

 

 

DO 802 I=1,N

 

 

DO 802 J=1,12

802

 

WRITE(IW,801) J, V(J,I),VN(J,I)

801

 

FORMAT(1H ,10X,I2,5X,F7.2,5X,F7.2)

 

C

GRAFICO

 

 

WRITE(IW,771)

771

 

FORMAT(107X,12HVAZAO (M3/S),/,14X,3H0.0,20X,5H100.0,20X,5H200.0,

 

1

20X,5H300.0,20X,5H400.0,/,15X,100(1H*))

 

 

DO 773 I=1,N

 

 

DO 773 J=1,12

 

 

X=1.+99.*V(J,I)/400.

 

 

XE=1.99.*VN(J,I)/400.

 

 

K=X

 

 

KE=XE

 

 

KE=IABAS(KE)

 

 

WA(25)=ASTER

 

 

WA(50)=ASTER

 

 

WA(75)=ASTER

 

 

WA(1)=ASTER

 

 

WE(1)=ASTER

 

 

WA(100)=ASTER

 

 

WE(100)=ASTER

 

 

WA(K)=VALOR

 

 

WE(KE)=VALER

 

 

WRITE(IW,774)J,(WA(L),L=1,100)

 

 

WRITE(IW,777)(WE(L),L=1,100)

 

 

WA(K)=BCO

 

 

WE(KE)=BCO

773

 

CONTINUE

 

 

WRITE(IW,776)

 

 

CALL EXIT

776

 

FORMAT(16X,100(1H*))

774

 

FORMAT(1H ,8X,I2,5X,100A1)

777

 

FORMAT(1H+,15X,100A1)

 

 

END

// DUP

 

// FOR

 

 

SUBROUTINE RANF(RAN)

 

 

COMMON RHO, BN

 

 

RN=RHO*RAN

 

 

XX=RN/BN

 

 

IXX=XX

 

 

XXI=IXX

 

 

RAN=XX-XXI

 

 

RETURN

 

 

END

// DUP

 

// XEQ VEST

 

 

 

Processamento:

Gráfico:

NOTA: Naquela época, ano de 1970, não havia recursos de computação gráfica e qualquer tentativa de visualização de resultados era feito por meio de artifícios como o acima de imprimir pontos em formulários contínuos. Dava trabalho mas valia a pena e era um avanço muito grande conseguir fazer isso, ainda mais com a linguagem FORTRAN que era muito limitada.

ET-12\fluvial\VEST1.htm em 20/03/2020, atualizado em 20/03/2020.