- 积分
- 51
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-8-15
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我之前用程序1写的,但计算TD数值不对;
后来改成了程序2,计算出的TD才靠谱。
不知道这两种写法有什么区别?或者说前面的一种写法错误在哪里?我是Fortran菜鸟,还请高手指教~
程序1:
PROGRAM TD_CALCULATION
PARAMETER (LEV=7,NX=361,NY=281)
DIMENSION T(NX,NY,LEV),RH(NX,NY,LEV),TD(NX,NY,LEV)
OPEN(100,FILE='t.txt')
OPEN(200,FILE='rh.txt')
OPEN(300,FILE='td.txt')
DO k=1,LEV
READ(100,*) ((t(i,j,k),j=1,361),i=1,281)
READ(200,*) ((rh(i,j,k),j=1,361),i=1,281)
ENDDO
WRITE(*,*)RH(1,1,1)
CALL CAL_RH_TD(T,RH,TD)
DO k=1,7
WRITE(300,'(361f12.4)') ((td(i,j,k),j=1,361),i=1,281)
ENDDO
END
SUBROUTINE CAL_RH_TD(T,RH,TD)
C THIS SUBROUTINE CALCULATE DEW POINT BY USING TEMPERATURE AND RELATIVE HUMIDITY
C INPUT T ========> TEMPERATURE (CELSIUS DEGREE)
C RH =======> RELATIVE HUMIDITY (E/ES)
C LEV ======> LEVEL
C OUTPUT TD =======> DEW POINT (CELSIUS DEGREE)
DIMENSION T(281,361,7),RH(281,361,7),TD(281,361,7)
DO K=1,7
DO I=1,281
DO J=1,361
RH(i,j,k)=RH(i,j,k)/100.
IF(RH(i,j,k).GT.1.0)RH(i,j,k)=1.0
IF(RH(i,j,k).LT.0.05)RH(i,j,k)=0.05
RMA=ALOG(RH(i,j,k))*461.*273.15/4.18/597./1000.+T(i,j,k)/
1 (273.15+T(i,j,k))
TD(i,j,k)=273.15*RMA/(1-RMA)
ENDDO
ENDDO
ENDDO
RETURN
END
程序2:
PROGRAM TD_CALCULATION
parameter(ki=281,kj=361,kc=7)
integer i,j,c
DIMENSION T(ki,kj,kc),RH(ki,kj,kc),TD(ki,kj,kc)
OPEN(100,FILE='t.txt')
OPEN(200,FILE='rh.txt')
OPEN(300,FILE='td.txt')
do c=1,kc
READ(100,*)((t(i,j,c),j=1,kj),i=1,ki)
READ(200,*)((rh(i,j,c),j=1,kj),i=1,ki)
enddo
CALL CAL_RH_TD(T,RH,TD)
do c=1,kc
WRITE(300,'(361f12.4)')((td(i,j,c),j=1,kj),i=1,ki)
ENDDO
WRITE(*,'(3f12.4)') T(100,200,2),RH(100,200,2),TD(100,200,2)
END
SUBROUTINE CAL_RH_TD(T,RH,TD)
C THIS SUBROUTINE CALCULATE DEW POINT BY USING TEMPERATURE AND RELATIVE HUMIDITY
C INPUT T ========> TEMPERATURE (CELSIUS DEGREE)
C RH =======> RELATIVE HUMIDITY (E/ES)
C LEV ======> LEVEL
C OUTPUT TD =======> DEW POINT (CELSIUS DEGREE)
parameter(ki=281,kj=361,kc=7)
DIMENSION T(ki,kj,kc),RH(ki,kj,kc),TD(ki,kj,kc)
DO c=1,7
DO i=1,281
DO j=1,361
RH(i,j,c)=RH(i,j,c)/100.
IF(RH(i,j,c).GT.1.0)RH(i,j,c)=1.0
IF(RH(i,j,c).LT.0.05)RH(i,j,c)=0.05
RMA=ALOG(RH(i,j,c))*461.*273.15/4.18/597./1000.+T(i,j,c)/
1 (273.15+T(i,j,c))
TD(i,j,c)=273.15*RMA/(1-RMA)
ENDDO
ENDDO
ENDDO
RETURN
END
|
|