Du fortran au turbo pascal 7

Choukri_m Messages postés 3 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 15 septembre 2009 - 3 sept. 2009 à 23:38
stevengouti Messages postés 2 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010 - 29 janv. 2010 à 18:42
Bonsoir, je suis débutant en programation, j'ai deux codes en fortran que je veux faire en turbo pascal 7 les deux codes sont pour le calcul matriciel, le premeir c'est la méthode des approximations successives et le second est la méthode de hardy-cross!
Je vous demande de l'aide
mon email : messaoudi_choukri@yahoo.fr
Merci
le premier code:
logical IPRINT, PGIVEN, INCID, CONV
real L, NUMER
dimension P(10), PGIVEN(10), A(10,10), C(10,10), D(10,10),
1 L(10,10), INCID(10,10), Q(10,10)
*****************************************
***** Lecture des Données *****
*****************************************
1 read (5,100) N, IMAX, RHO, EPS, F, IPRINT, (PGIVEN(i), i = 1,N)
read (5,101) (P(i), i = 1,N)
do 2 i = 1,N
read (5,102) (INCID(i,,j), j = 1,i)
read (5,101) (D(i,j), j = 1,i)
2 read (5,101) (L(i,j), j = 1,i)
*****************************************
***** transformation des matrices symetriques D, L et INCID et
calcul des elements de la matice C *****
*****************************************
FACTOR = 8.*12.**5*RHO*F/(3.1415926**2*32.2*(60.*7.48)**2*144.)
do 3 i = 1,N
do 3 j = 1,i
C(i,j) = 0.
if (i.EQ.j) go to 3
if (INCID(i,j)) C(i,j) = FACTOR*L(i,j)/D(i,j)**5
D(j,i) = D(i,j)
L(j,i) = L(i,j)
INCID(j,i) = INCID(i,j)
C(j,i) = C(i,j)
3 continue
*****************************************
***** ecriture des données initiales du reseau *****
*****************************************
write (6,200) N,ITMAX,RHO,EPS,F,IPRINT,(i, P(i),PGIVEN(i),i=1,N)
write (6,201)
do 4 i = 1,N
4 write (6,202) i, i, N, (INCID(i,j), j = 1,N)
write (6,201)
do 5 i = 1,N
5 write (6,203) i, i, N, (D(i,j), j = 1,N)
write (6,201)
do 6 i = 1,N
6 write (6,204) i, i, N, (L(i,j), j = 1,N)
*****************************************
***** calcul des approximations successives des pressions aux
noeuds *****
****************************************
if (IPRINT) write (6,205) (i, i = 1,N)
do 9 ITER = 1, IMAX
CONV = .true.
do 8 j = 1, N
if (PGIVEN) go to 8
NUMER = 0.
DENOM = 0.
do 7 i = 1, N
if (.not. INCID(i,j)) go to 7
A(i,j) = 1.0/SQRT(C(i,j)*ABS(P(i)-P(j)))
NUMER = NUMER + A(i,j)*P(i)
DEMON = DEMON + A(i,j)
7 continue
SAVEP = P(j)
P(j) = NUMER/DENOM
if (ABS(SAVEP-P(j)).GE.EPS) CONV = .false.
8 continue
if (IPRINT) write (6,206) ITER, (P(i), i = 1,N)
if (CONV) go to 10
9 continue
write (6,207) ITMAX
*****************************************
***** calcul des debits dans chaque troncon *****
*****************************************
10 do 11 i = 1,N
do 11 j = 1,i
Q(i,j) = 0.
Q(j,i) = 0.
if (i.EQ.j.OR..not.INCID(i,j)) go to 11
Q(i,j) = (P(i)-P(j))/SQRT(C(i,j)*ABS(P(i)-P(j)))
Q(j,i) = -Q(i,j)
11 continue
****************************************
***** ecriture des pressions finales et des debits *****
****************************************
write (6,208) ITER, N
do 12 i = 1,N
12 write (6,209) i, P(i), (Q(i,j), j = 1,N)
go to 1
***************************************
***** formats des etats d'entrées/sorties *****
***************************************
100 format(3x,i2,17x,i3,15x,F5.1,15x,E5.0/4x,F6.3,14x,L1 /
1 (30x,20(L1,1x)))
101 format(30x,5F8.3)
102 format(30x,20(L1,1x))
200 format(23H1FLOW IN A PIPE NETWORK/ 10H0N = ,13/ 10H ITMAX
1=, i3/ 10H RHO =, F7.3/ 10H EPS =, E10.2/ 10H F =,
2 F7.3/10H IPRINT =, 2x, L1/ 3H0 i, 6x, 4HP(i), 4x,9HPGIVEN(i)
3 (1H, i2, F10.3, 6x, L1))
201 format(1H0/1H0)
202 format(7H0INCID(,i2,13H, 1)...INCID(, i2, 1H,,i2, 3H) = ,
1 40(L1, 1x)/ (1H, 29x, 40(L1, 1x)))
203 format(3H0D(,i2, 9H, 1)...D(,i2,1H,,i2, 1H), 9x, 1H= , 8F10.3 /
1 (1H, 29x, 8F10.3))
204 format(3H0L(,i2, 9H, 1)...L(,i2,1H,,i2, 1H), 9x, 1H= , 8F10.3 /
1 (1H, 29x, 8F10.3))
205 format(1H0/ 5H0ITER,7x,16HPRESSURE AT NODE/ (1H,11x,8(i1,9x)))
206 format(1H, i3, 3x, 8F10.4/ (1H , 6x, 8F10.4))
207 format(35H0SOLUTIONS FAILED TO CONVERGE AFTER,i3,11H ITERATIONS)
208 format(1H0/26H0PRESSURES AND FLOWS AFTER, i3,15H ITERATIONS ARE/
1 3H0 i,5x,4HP(i),7x,16HQ(i, 1)...Q(i,,i2,1H) / 1H , 7x, 3HPSI,
2 14x, 7HGAL/MIN//)
209 format(1H , i2, F10.4, 5x, 8F10.3/ (1H , 17x, 8F10.3))
end

le second code :

C************************************************************************
C HARDY CROSS ANALYSIS II
C THIS PROGRAM ANALYZES A PIPE NETWORK BY THE HARDY CROSS METHOD
C************************************************************************
C NUML = NUMBER OF LOOPS
C NUMPI = TOTAL NUMBER OF PIPES
C EPS = EPSILON THE ACCEPTABLE ERROR
C L IF THE NUMBER OF PIPES IN A LOOP. THE VALUE IS OBTAINED FROM J(L)
C ID(L,K) IS AN INDEX WHICH ENABLES NUMBERING THE PIPES IN EACH LOOP
C FROM ONE TO THE NUMBER OF PIPES IN THE LOOP WHILE STILL RETAINING
C THE ORIGINAL PIPE NUMBERING SCHEME
C ID(L,K)IS AN INDEX WHICH INCLUDES THE PIPE NUMBER AND A SIGN H ,
C THE SIGN IS POSITIVE FOR ALL PIPES NOT COMMON TO MORE THAN ONE
C LOOP. FOR PIPES FALLING IN TWO LOOPS, THE SIGN IS POSITIVE FOR THE
C FIRST LOOP IN WHICH THE PIPE APPEARS AND NEGATIVE FOR THE SECOND
C LOOP. FOR EXAMPLE, IF PIPE 3 IS COMMON TO LOOPS 1 AND 2, ID(1,3)C +3 AND ID(2,1) -3 WHERE 3 IS THE THIRD PIPE IN LOOP 1 AND THE
C FIRST PIPE IN LOOP 2
C D IS THE PIPE DIAMETER IN FEET
C Q(I) IS THE FLOW IN PIPE I (CFS)
C THE OVERALL PIPE NETWORK IS BROKEN UP INTO L LOOPS
C PL IS THE PIPE LENGTH IN THOUSANDS OF FEET. FOR A PIPE LENGTH OF
C 6,000 FEET, PL WOULD BE 6
C S IS THE SLOPE IN FEET PER THOUSAND FEET. IT IS COMPUTED USING THE
C HAZEB WILLAMS PIPE FORMULA. S = (Q/(0.0103*C*D**2.63))**1.85
C WHERE C IS THE HAZEN WILLIAMS C
C FOR VALUES OF C WHICH DIFFER FOR INDIVIDUAL PIPES A SIMPLE
C PROGRAMMING CHANGE TO READ THE C VALUES IN AS DATA WOULD BE
C SUFFICIENT
C H IS THE HEAD LOSS IN EACH PIPE IN FEET H = S*PL
C HOVQ IS THE RATIO H/Q
C SHOVQ IS THE SUM OF THE RATIO H/Q
C SUMH IS THE SUM OF THE HEAD LOSSES H
C CORR IS THE CORRECTION TO BE APPLIED TO THE LOOPS
C CORR = -SUMH/(1.85*SHOVQ)
C SCOR IS THE SUM OF THE ABSOLUTE VALUES OF THE CORR(L)'S FOR EACH
C LOOP. THIS VALUE IS COMPARED TO AN EPSILON. IF SCOR IS GREATER THAN
C EPS, ANOTHER ITERATION IS MADE


C************************************************************************
DIMENSION Q(400),D(400),PL(400),S(400),H(400),HOVQ(400),SHOVQ(60)
.,SUMH(60),CORR(60),SQ(400),J(60),ID(60,120)
C************************************************************************
CHARACTER*20 INP, OUT
PRINT*,'ENTER INPUT FILE NAME :'
READ*, INP
PRINT*,'ENTER OUTPUT FILE NAME :'
READ*, OUT
OPEN(UNIT=5,FILE=INP)
OPEN(UNIT=6,FILE=OUT)
C************************************************************************
EPS=0.0001
READ(5,37) NUML, NUMPI
37 FORMAT(2I5)
WRITE(6,39) NUML, NUMPI
39 FORMAT(1X,2I5)
READ(5,38) C
38 FORMAT(F6.1)
WRITE(6,40) C
40 FORMAT(1X,F6.1)
READ(5,20)(J(L),L=1,NUML)
20 FORMAT(4I5)
WRITE(6,36)(J(L),L=1,NUML)
36 FORMAT(1X,4I5)
READ(5,21)(D(I),Q(I),PL(I),I=1,NUMPI)
21 FORMAT(9F6.3)
WRITE(6,29)(D(I),Q(I),PL(I),I=1,NUMPI)
29 FORMAT(1X,9F6.3)
DO 23 L=1,NUML
M=J(L)
DO 23 K=1,M
READ(5,24)ID(L,K)
23 WRITE(6,35)ID(L,K)
24 FORMAT(I5)
35 FORMAT(1X,I5)
R=C*0.0103
17 SCOR=0.
DO 1 I=1,NUMPI
IF(Q(I).LT.0.) SQ(I)=-Q(I)
IF(Q(I).GE.0.) SQ(I)=Q(I)
S(I)=(SQ(I)/(R*D(I)**2.63))**1.85
H(I)=S(I)*PL(I)
1 HOVQ(I)=H(I)/SQ(I)
DO 16 L=1,NUML
SUMH(L)=0.
SHOVQ(L)=0.
M=J(L)
DO 7 K=1,M
IF(ID(L,K))3,3,4
3 I=-ID(L,K)
SHOVQ(L)=SHOVQ(L)+HOVQ(I)
IF(Q(I))5,5,6
4 I=ID(L,K)
SHOVQ(L)=SHOVQ(L)+HOVQ(I)
IF(Q(I))6,5,5
6 SUMH(L)=SUMH(L)-H(I)
GO TO 7
5 SUMH(L)=SUMH(L)+H(I)
7 CONTINUE
CORR(L)=-SUMH(L)/(1.85*SHOVQ(L))
M=J(L)
DO 8 K=1,M
IF(ID(L,K))10,10,11
10 I=-ID(L,K)
Q(I)=Q(I)-CORR(L)
GO TO 8
11 I=ID(L,K)
Q(I)=Q(I)+CORR(L)
8 CONTINUE
16 SCOR=SCOR+ABS(CORR(L))
IF(SCOR-EPS.GT.0.)GO TO 17
WRITE(6,25)
25 FORMAT(1H1,20X,15HTABLE OF VALUES,///)
WRITE(6,26)
26 FORMAT(7X,1H1,11X,4HQ(I),13X,4HS(I),8X,7HH(I)ABS,8X,5HPL(I),///)
DO 27 I=1,NUMPI
27 WRITE(6,28)I,Q(I),S(I),H(I),PL(I)
28 FORMAT(6X,I2,3X,E14.4,3X,E14.4,3X,E14.4,3X,F6.3)
STOP
END

6 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
4 sept. 2009 à 05:16
Cher membre,

nous somme au regret de vous annoncer que nous n'assurons plus aucune aide pour les langages et compilateur sortis avant 2005.

nous ne pouvons donner suite à votre question.

nous laissons votre sujet ouvert tout de même au cas ou un fou furieux voudrais tout de même tenter l'exercice de cette translation Fortran->TP7.

Nous vous conseillons également de foutre un bon gros coups de latte dans votre 80486 (méthode certifié et approuvé), de le lourder au fin fond du désert saoudien, enfuis sous une grosse pierre puis de venir nous rejoindre au plus vite au 21eme siecle.

merci.

ps : Si vous croisez Doc ou Marty, merci de leurs dire d'arrêter de faire le taxi entre 1985 et 2009.


Et comme disait notre Giscard, euch grand'tringle à'l'glotte qui pendouilloi :

Au revoir.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
4 sept. 2009 à 11:12
cantador
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
4 sept. 2009 à 20:03
MDR
0
cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
13 sept. 2009 à 00:54
Bonsoir,

il existe (non testé donc sans garantie ...), un convertisseur Fortran vers Pascal ici

bonne soirée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Choukri_m Messages postés 3 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 15 septembre 2009
15 sept. 2009 à 16:22
Merci 47 je vais l'essayé
0
stevengouti Messages postés 2 Date d'inscription vendredi 29 janvier 2010 Statut Membre Dernière intervention 29 janvier 2010
29 janv. 2010 à 18:42
il est nul ton code ::: aprend a programmer modulaire : utilise les boucle et les procedures et fonctions pour organiser et d avoir une meilleur complexité
0
Rejoignez-nous