📄 wall.for
字号:
SUBROUTINE WALL(CNU,CNK,VISCOS,SKS,UU,YPP,TKK,TEE,USTAR)
IMPLICIT REAL*8(A-H,O-Z)
Z00 =0.033*SKS
USTAR=UU*CNK/DLOG(YPP/Z00)
if(UU.LT.1.0D-2)goto 503
USTARJUST=SKS*USTAR/VISCOS
IF(USTARjust.LT.70.AND.USTARJUST.GT.5)then
501 Z00=0.11*VISCOS/USTAR+0.033*SKS
USTAR1=ABS(UU*CNK/(DLOG(YPP/Z00)))
if(abs(USTAR-USTAR1).gt.1.0d-6)then
USTAR=USTAR1
goto 501
endif
USTARJUST=SKS*USTAR/VISCOS
IF(USTARJUST.LT.5)THEN
512 Z00=0.11*VISCOS/USTAR
USTAR1=ABS(UU*CNK/(DLOG(YPP/Z00)))
if(abs(USTAR-USTAR1).gt.1.0d-6)then
USTAR=USTAR1
goto 512
endif
ENDIF
ELSEIF(USTARjust.LT.5) THEN
502 Z00=0.11*VISCOS/USTAR
USTAR1=ABS(UU*CNK/(DLOG(YPP/Z00)))
if(abs(USTAR-USTAR1).gt.1.0d-6)then
USTAR=USTAR1
goto 502
endif
USTARJUST=SKS*USTAR/VISCOS
IF(USTARJUST.GT.5)THEN
511 Z00=0.11*VISCOS/USTAR+0.033*SKS
USTAR1=ABS(UU*CNK/(DLOG(YPP/Z00)))
if(abs(USTAR-USTAR1).gt.1.0d-6)then
USTAR=USTAR1
goto 511
endif
ENDIF
ENDIF
503 CONTINUE
YPLUS=USTAR*YPP/viscos ! 30<uu<100
TKK=USTAR*USTAR/SQRT(CNU)
TEE=abs(USTAR**3)/(CNK*YPP)
END
SUBROUTINE WALL1(I,UU,USTAR)
USE VOF2D
IMPLICIT REAL*8(A-H,O-Z)
Z00 =0.033*SKS
USTAR=UU*CNK/DLOG((Y(2))/Z00) !-Y(1)
if(UU.LT.1.0D-2)goto 503
USTARJUST=SKS*USTAR/VISCOS
IF(USTARjust.LT.70.AND.USTARJUST.GT.5)then
501 Z00=0.11*VISCOS/USTAR+0.033*SKS
USTAR1=ABS(UU*CNK/(DLOG((Y(2))/Z00))) !-Y(1)
if(abs(USTAR-USTAR1).gt.1.0d-6)then
USTAR=USTAR1
goto 501
endif
USTARJUST=SKS*USTAR/VISCOS
IF(USTARJUST.LT.5)THEN
512 Z00=0.11*VISCOS/USTAR
USTAR1=ABS(UU*CNK/(DLOG((Y(2))/Z00))) !-Y(1)
if(abs(USTAR-USTAR1).gt.1.0d-6)then
USTAR=USTAR1
goto 512
endif
ENDIF
ELSEIF(USTARjust.LT.5) THEN
502 Z00=0.11*VISCOS/USTAR
USTAR1=ABS(UU*CNK/(DLOG((Y(2))/Z00))) !-Y(1)
if(abs(USTAR-USTAR1).gt.1.0d-6)then
USTAR=USTAR1
goto 502
endif
USTARJUST=SKS*USTAR/VISCOS
IF(USTARJUST.GT.5)THEN
511 Z00=0.11*VISCOS/USTAR+0.033*SKS
USTAR1=ABS(UU*CNK/(DLOG((Y(2))/Z00))) !-Y(1)
if(abs(USTAR-USTAR1).gt.1.0d-6)then
USTAR=USTAR1
goto 511
endif
ENDIF
ENDIF
503 CONTINUE
! if((istyle.eq.1.and.i.eq.ieta(1)).
! * or.(istyle.gt.1.and.i.eq.ieta(2)))
! * write(112,156)T,ustar,USTARjust
! 156 format(x,F8.3,X,8(f12.6,x))
END
c---- SUBROUTINE WALFUC ---------------------------------------------
c Wall Function Calculation
c--------------------------------------------------------------------
SUBROUTINE WALFUC(NU,UP,YP,K,E,USTAR)
IMPLICIT REAL*8(A-H,O-Z),INTEGER(I-N)
REAL*8 NU,K
c
IF (UP.NE.0.0) THEN
USTAR=SQRT(NU*UP/YP)
10 RE=USTAR*YP/NU
USTAR1=UP/(2.5*DLOG(1.0+RE/5.0)+7.05*(RE/5.0/(1.0+RE/5.0))**2
1 +2.5*RE/5.0/(1.0+RE/5.0))
IF (ABS(USTAR1-USTAR).GT.0.000001) THEN
USTAR=USTAR1
GO TO 10
ENDIF
A=2.0/(1.0+5.0/RE)+0.008*(23.2-RE)*RE**2/(0.2*RE+1.0)**3
K=USTAR**2/0.3
E=A*USTAR**3/0.4/YP
ELSE
K=0.0
E=0.0
ENDIF
RETURN
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -