1 : C PRITEM SOURCE CHAT 05/01/13 02:27:55 5004 2 : SUBROUTINE PRITEM(NORDP1,ACVTOT,ETHER,T0,T,LOGNC,LOGIPG) 3 : C 4 : C************************************************************************ 5 : C 6 : C PROJET : CASTEM 2000 7 : C 8 : C NOM : PRITEM 9 : C 10 : C DESCRIPTION : VOIR PRIMI2 11 : C 12 : C Melange des gaz "thermally perfect". 13 : C Calcul de la temperature (Newton-Raphson) 14 : C 15 : C LANGAGE : FORTRAN 77 Standard (avec extensions Fortran 90) 16 : C 17 : C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF 18 : C 19 : C************************************************************************ 20 : C 21 : C APPELES : / 22 : C 23 : C************************************************************************ 24 : C 25 : C ENTREES : NORDP1 : ordre des polynoms + 1 26 : C 27 : C ACVTOT : table qui contient \sum_i Y(i) PROPHY.ACV(i,j) 28 : C j=1,NORDP1 (NORD-th order polynoms) 29 : C 30 : C ETHER : energie thermique 31 : C 32 : C T0 : temperature du premier essai; 33 : C 34 : C SORTIES : 35 : C 36 : C T : resultat 37 : C 38 : C LOGNC : si .TRUE., probleme de convergence 39 : C 40 : C LOGIPG : si .TRUE., il y a une probleme de cv(T)<0 !!! 41 : C ERREUR dans la table IPGAS 42 : C 43 : C************************************************************************ 44 : C 45 : C HISTORIQUE (Anomalies et modifications éventuelles) 46 : C 47 : C HISTORIQUE : Créée le 16.1.98. 48 : C 49 : C************************************************************************ 50 : C 51 : IMPLICIT INTEGER(I-N) 52 : INTEGER I1, ITMAX, ITER, NORDP1 53 : REAL*8 ACVTOT(NORDP1), T0, T, ETHER, ET0, DERET0 54 : & , EPSI, PUIT, T1, ATOT, DT, DEN 55 : PARAMETER(EPSI=1.0D-3,ITMAX=1000) 56 : LOGICAL LOGNC, LOGCON, LOGIPG 57 : C 58 : LOGCON = .TRUE. 59 : C 60 : C*** LOGNC, LOGIPG deja initialize 61 : C 62 : T1 = T0 63 : ITER = 0 64 : DO WHILE(LOGCON) 65 : DERET0 = ACVTOT(1) 66 : ET0 = DERET0 * T1 67 : PUIT = 1.0D0 68 : DO I1 = 2,NORDP1 69 : PUIT = PUIT * T1 70 : ATOT = ACVTOT(I1) * PUIT 71 : DERET0 = DERET0 + ATOT 72 : ATOT = ATOT * T1 / I1 73 : ET0 = ET0 + ATOT 74 : ENDDO 75 : C 76 : C******* Anomalie si DERET0 < 0 77 : C N.B. DERET0 = CVTOT 78 : C 79 : IF(DERET0 .LE. 0.0D0)THEN 80 : LOGIPG = .TRUE. 81 : GOTO 9999 82 : ENDIF 83 : DEN = ETHER - ET0 84 : DT = DEN /DERET0 85 : IF((ABS(DT) .LE. (EPSI * T1)) .AND. 86 : & (ABS(DEN) .LE. (EPSI * ET0)))THEN 87 : LOGCON = .FALSE. 88 : T = T1 + DT 89 : ELSEIF(ITER .GT. ITMAX)THEN 90 : LOGNC = .TRUE. 91 : LOGCON = .FALSE. 92 : T = T1 + DT 93 : ELSE 94 : T1 = T1 + DT 95 : ITER = ITER + 1 96 : ENDIF 97 : ENDDO 98 : C 99 : C**** Visualisation des iterations 100 : C On peut voir que la methode est tres efficace (3,4) 101 : C write(*,*) iter 102 : 9999 CONTINUE 103 : RETURN 104 : END 105 : 106 : 107 : 108 : 109 : 110 : 111 :
© Cast3M 2003 - All rights reserved.
Disclaimer