C BCALQ2 SOURCE DURA 07/07/27 21:15:09 5783 SUBROUTINE BCALQ2(PE,PVE,TE,PSO,XL,DX0,RUG,Q,XW,NPP,XN,TN,EN,BN, $ KIMP,NT,NX,XX,XP,XT,XY,XU,XHF,XQ,XQW, $ QAE,XRE,XDH,PSQ,RECU,XKUL,XKUT1,XKUT2,XKUT3,XKUT4) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C operateur FUITE C cf. sub. BECALC2 C calcul de la solution pour un debit Q d'injection impose C QAE, XQ : debit air, debit eau, C XQW: flux d'eau a la paroi C RECU,XKUL,XKUT1,XKUT2,XKUT3,XKUT4 : coef lois de frot utilisateur C DIMENSION XX(NT),XP(NT),XT(NT),XY(NT),XU(NT),XN(NPP),TN(NPP) DIMENSION EN(NPP),BN(NPP) DIMENSION XHF(NT),XQ(NT),XQW(NT),XRE(NT),XDH(NT) IF(KIMP.GE.1) THEN WRITE(6,*) WRITE(6,*) 'entree bcalq2' ENDIF C variation enthalpie et puissance echangée avec la paroi DHTOT = 0.D0 PPTOT = 0.D0 DTMX=10 PSLIM=PSO NITMAX = 100 PHI = PVE/PE C IMPLEMENTATION DES PROPRIETES PHYSIQUES CALL BPHYS(T0,P0,RA,RV,CA,XCV,XCL,XLAT0,XROL,XKL,XKT,REL) C Calcul des debits en entree Qa et Qv C Calcul de la masse volumique de vapeur entree RHOVE=ROVAP0(PVE,TE) C Calcul du facteur Z Compressibilite en entree ZE=ZVAP0(RHOVE,TE) C Calcul des debits air et eau, le debit total Q etant connu IF(PHI.LT.1D-3) THEN RQ = 1.E8 ELSE RQ = (1-PHI)*(RV*ZE)/PHI/RA ENDIF C QA = Q*RQ/(1+RQ) QV = Q/(1+RQ) C !! C QAE invariant QAE=QA*EN(1)*BN(1) C 'constante de gaz' equivalente a l'entree R = PHI/RV/ZE+(1-PHI)/RA R=1/R ROE = PE/R/TE UE=Q/ROE IF(KIMP.NE.0) THEN write(6,*) write(6,*) ' bcalq2: conditions en entree' write(6,2000) TE,RHOVE,ZE,R,QA,QV 2000 FORMAT(1X,' TE ROV ZE R QA QV', 6E12.5) ENDIF C>>> positionnement a l'entree de la fissure PSQ=1 IX=1 P2=PE PV2=PVE T2=TE U2=UE QEE2=QV*EN(1)*BN(1) PHI2=PHI IF(KIMP.NE.0) THEN write(6,*) '>BCALQ2 Q PHI R ZE ',Q,PHI,R,ZE ENDIF X=0.D0 TIT=1 ITP=1 C>>> le gaz a l'entree est-il surchauffe ou sature PS2=PSATT0(T2) R2=ROVAP0(PS2,T2) ZV =ZVAP0(R2,T2) IF (PVE.GT.PS2) THEN TIT=0 Y2=(PS2/(P2-PS2))*(1-PHI)/(PHI*ZV) ELSE Y2=1 ENDIF QTOT=QEE2+QAE CALL BSTOK(IX,X,P2,T2-T0,Y2,U2,0.D0,QEE2,0.D0,0.D0,0.D0, & XX,XP,XT,XY,XU,XHF,XQ,XQW,XRE,XDH,NT) C>>> boucle "tant que" sur la longueur de la fissure 10 CONTINUE IF ((X.LT.0.999).AND.(PSQ.NE.-1.)) THEN IF(KIMP.GE.1) THEN write(6,*) write(6,*) 'bcalq2 X',X ENDIF C>>> positionnement au point local 1 P1=P2 PS1=PSATT0(T2) T1=T2 Y1=Y2 QEE1=QEE2 PHI1=PHI2 DX=DX0 C>>> test sur le titre IF (TIT.EQ.1) THEN Y2=1 NIT = 0 20 CONTINUE NIT = NIT + 1 IF (NIT.GT.99) THEN write(6,*) 'bcalq2: NIT20=100 X',X ENDIF CALL BSUR2 (X,DX,XL,RUG,XW,XN,TN,EN,BN,KIMP,PSLIM,REL,RINDEX, & P1,T1,QAE,QEE1,PHI1,P2,T2,U2,QEE2,PHI2,QW2,RE,H,PSQ, & NPP,ITP,PF,PP,DPF,DPP,RECU,XKUL,XKUT1,XKUT2,XKUT3,XKUT4) IF (PSQ.EQ.-1.) THEN RETURN ENDIF IF ((RINDEX.LT.0.999).AND. & (NIT.LE.NITMAX)) THEN X=X-DX DX=DX*0.5 GO TO 20 ENDIF C>>> y-a-t'il condensation ? PS2=PSATT0(T2) C WRITE(6,*) 'PS2',PS2 PSI=PS2/P2 C write(6,*) ' PSI ',PSI AL=PHI2/PSI IF(KIMP.GE.2) THEN WRITE(6,998) X,AL,P2/P0,T2-T0,QEE1/EN(1),QEE2/EN(1),U2 998 FORMAT(1X,'sur -XALP2T2 ',F9.6,F9.4,E12.5,4F9.2) WRITE(6,*) ENDIF IF ((AL.GT.(1.02)).OR.(ABS(T2-T1).GT.DTMX).AND. & (NIT.LE.NITMAX)) THEN X=X-DX DX=DX/2 GOTO 20 ENDIF IF (AL.GT.1.) THEN TIT=0 C PS2=PSATT0(T2) RHO2=ROVAP0(PS2,T2) ZVAP2=ZVAP0(RHO2,T2) Y2 = (RA/RV)*(QAE/QEE2)*(PSI/(1-PSI)) Y2 = Y2/ZVAP2 IF(KIMP.NE.0) THEN write(6,*) 'bcalq2: QAE QEE2 ',QAE,QEE2 write(6,*) 'bcalq2: transition vers condensation X= ',X write(6,2100) PS2,AL,RHO2,ZVAP2,Y2 2100 FORMAT(1X,'bcalq2: PS2 AL RO2 Z2 Y2 ', 6E12.5) ENDIF C ENDIF ELSE NIT = 0 30 CONTINUE NIT = NIT + 1 IF (NIT.GT.99) THEN write(6,*) 'bcalq2: NIT30=100 X',X ENDIF CALL BCOND2 (X,DX,XL,RUG,XW,XN,TN,EN,BN,KIMP,PSLIM,REL, & P1,PS1,T1,Y1,QAE,QEE1,PHI1, & P2,T2,Y2,U2,QEE2,PHI2,QW2,RE,H,PSQ,RINDEX, & NPP,ITP,PF,PP,DPF,DPP,RECU,XKUL,XKUT1,XKUT2,XKUT3,XKUT4) C C WRITE(6,*)'****** RINDEX,X= ',RINDEX,X IF(KIMP.GE.2) THEN WRITE(6,999) X,Y2,P2/P0,T2-T0,QEE1/EN(1)/BN(1), & QEE2/EN(1)/BN(1),U2 999 FORMAT(1X,'bcalq2: XY2P2T2 ',F9.6,F9.4,E12.5,4F9.2) ENDIF IF (PSQ.EQ.-1.) THEN RETURN ENDIF IF ((RINDEX.LT.0.999).AND. & (NIT.LE.NITMAX)) THEN X=X-DX DX=DX*0.5 GO TO 30 ENDIF C>>> y-a-t'il evaporation totale ? IF ((Y2.GT.(1.01)).OR.(DABS(T2-T1).GT.DTMX).AND. & (NIT.LE.NITMAX)) THEN X=X-DX DX=DX/2 GOTO 30 ENDIF * vapeur surchauffee IF (Y2.GT.0.999) THEN TIT=1 * attention si E variable : OK IF((QEE2/QAE).LT.1.D-7) THEN C write(6,*) ' QEE2/QAE ',QEE2/QAE PHI2=0.D0 ELSE ZTRAN = 1.D0 NZ=0 31 CONTINUE NZ = NZ + 1 AA = (QEE2/QAE)* (RV*ZTRAN/RA) PHI2 = AA/(1.+AA) PV2 = PHI2 * P2 RHO2 = ROVAP0(PV2,T2) Z2 = ZVAP0(RHO2,T2) DELTAZ = ABS(Z2 - ZTRAN) IF(KIMP.GE.2) THEN WRITE(6,*) ' NZ ZVAP ', NZ,DELTAZ ENDIF ZTRAN=Z2 IF ((DELTAZ.GT.1D-5).AND.(NZ.LE.20)) GOTO 31 IF(KIMP.NE.0) THEN write(6,*) 'bcalq2: transition vers evaporation ' write(6,2200) PHI2,RHO2,Z2 2200 FORMAT(1X,'bcalq2 PHI2 RHO2 Z2 ', 3E12.5) ENDIF ENDIF ENDIF ENDIF QTOT=QEE2+QAE CALL BSTOK(IX,X,P2,T2-T0,Y2,U2,H,QEE2,QW2,RE,DPF, & XX,XP,XT,XY,XU,XHF,XQ,XQW,XRE,XDH,NT) DHTOT = DHTOT + PF PPTOT = PPTOT + PP GOTO 10 ENDIF NX=IX-1 PSQ=P2 XX(NX)=1.D0 C write(6,*) ' bcalq NX ',NX C CALL UTPRIM(XX,NX) C** IF(KIMP.GT.0) THEN WRITE(*,*) 'bcalq: X,PSQ= ',X,PSQ ENDIF IF(KIMP.GT.1) THEN write(6,1000) Q,PHI,DHTOT,PPTOT 1000 FORMAT(1X,'bcalq2 Q phi DH H*T',4E12.5) ENDIF C** RETURN END