C BKFRO SOURCE DURA 05/10/26 21:15:19 5216 FUNCTION BKFRO(RE,REL,XKL,XKT,D,RUG,RECU,XKUL,XKUT1,XKUT2,XKUT3, * XKUT4) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C C operateur FUITE C>>> calcule le coefficient de frottement C D : diametre hydraulique (m) C RUG: rugosite (m) C RE : nombre de Reynolds C LOIS STANDARD C REL: nombre de transition laminaire turbulent (=2042, paroi lisse) C XKL: coefficient de la loi en laminaire C XKT: coefficient de la loi en turbulent lisse C Si paroi rugueuse, max(loi de Colebrook; XKL/RE) C LOIS UTILISATEURS C RECU : Reynolds critique choisi par utilisateur (lois 1 et 2) C XKUL,XKUT1,XKUT2,XKUT3,XKUT4 : coef des lois utilisateur C C>>> frottement lisse IF (RE.LT.REL) THEN F0=XKL/RE ELSE F0=XKT*RE**(-.25) ENDIF BKFRO=F0 C>>> frottement rugueux C calcul iteratif qu'on initialise avec le frottement lisse RUGR=RUG/D IF(RUGR.GE.1D-4) THEN IF(RE.LT.10.) BKFROR=1. IF(RE.GE.10.) THEN RACF = DSQRT(F0) 10 CONTINUE RACF1=-2.D0*DLOG10((RUGR/3.7)+(2.51/RE/RACF)) RACF1=1.D0/RACF1 ERR=DABS((RACF1/RACF)-1.D0) IF(ERR.GT.1.D-3) THEN RACF=RACF1 GOTO 10 ENDIF BKFROR=RACF1*RACF1 ENDIF C BKFRO=XKL/RE C transition lam-turb determinee par le programme IF(BKFROR.GT.BKFRO) THEN BKFRO = BKFROR c ELSE c write(*,*) ' BKFRO laminaire,RE', BKFRO,RE ENDIF ENDIF C>>> lois utilisateur C loi utilisateur 1 IF(RECU.GE.0D-4) THEN IF (RE.LT.RECU) THEN BKFRO=XKUL/RE ELSE BKFRO=(XKUT1+(XKUT2*(RE**XKUT3)))**XKUT4 ENDIF ENDIF C loi utilisateur 2 IF(RECU.LT.0D4.AND.RECU.GT.-1D5) THEN RECUU = -1.*RECU IF (RE.LT.RECUU) THEN BKFRO=XKUL/RE ELSE DLOGRE = DLOG10(RE) BKFRO=XKUT1*((XKUT2+(XKUT3*DLOG10(RE)))**XKUT4) ENDIF ENDIF C loi utilisateur 3 IF(RUGR.GE.1D-4) THEN IF(RECU.LE.-1D6.AND.RECU.GT.-1D7) THEN BKFRO = XKUL * BKFROR ENDIF ENDIF C loi utilisateur 4 IF(RUGR.GE.1D-4) THEN IF(RECU.LE.-1D7) THEN BKFRO=(XKUL*XKL)/RE BKFROR = XKUL * BKFROR C transition lam-turb determinee par le programme IF(BKFROR.GT.BKFRO) THEN BKFRO = BKFROR c ELSE c write(*,*) ' BKFRO laminaire,RE', BKFRO,RE ENDIF ENDIF ENDIF RETURN END