/[MITgcm]/MITgcm/pkg/aim/phy_shtorh.F
ViewVC logotype

Annotation of /MITgcm/pkg/aim/phy_shtorh.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (hide annotations) (download)
Tue May 29 19:28:53 2001 UTC (23 years ago) by cnh
Branch: MAIN
CVS Tags: checkpoint40pre1, checkpoint40pre2, checkpoint40pre5, checkpoint40pre6, checkpoint40pre8, checkpoint40pre4, checkpoint40pre3, checkpoint40pre7
Changes since 1.2: +4 -3 lines
Updates for multi-threaded AIM with support for both latlon
and CS.
Needs compatible changes to verfication/

1 cnh 1.3 C $Header: /u/gcmpack/models/MITgcmUV/pkg/aim/phy_shtorh.F,v 1.2 2001/02/02 21:36:29 adcroft Exp $
2     C $Name: $
3 adcroft 1.2
4 cnh 1.3 SUBROUTINE SHTORH (IMODE,NGP,TA,PS,SIG,QA,RH,QSAT,myThid)
5 adcroft 1.2 C--
6     C-- SUBROUTINE SHTORH (IMODE,NGP,TA,PS,SIG,QA,RH,QSAT)
7     C--
8     C-- Purpose: compute saturation specific humidity and
9     C-- relative hum. from specific hum. (or viceversa)
10     C-- Input: IMODE : mode of operation
11     C-- NGP : no. of grid-points
12     C-- TA : abs. temperature
13     C-- PS : normalized pressure (= p/1000_hPa) [if SIG < 0]
14     C-- : normalized sfc. pres. (= ps/1000_hPa) [if SIG > 0]
15     C-- SIG : sigma level
16     C-- QA : specific humidity in g/kg [if IMODE > 0]
17     C-- RH : relative humidity [if IMODE < 0]
18     C-- QSAT : saturation spec. hum. in g/kg
19     C-- Output: RH : relative humidity [if IMODE > 0]
20     C-- QA : specific humidity in g/kg [if IMODE < 0]
21     C--
22    
23    
24     IMPLICIT rEAL*8 (A-H,O-Z)
25 cnh 1.3 INTEGER myThid
26 adcroft 1.2
27    
28     CcnhDebugStarts
29     #include "SIZE.h"
30     CcnhDebugEnds
31     REAL TA(NGP), PS(NGP), QA(NGP), RH(NGP), QSAT(NGP)
32     C
33     C--- 1. Compute Qsat (g/kg) from T (degK) and normalized pres. P (= p/1000_hPa)
34     C If SIG > 0, P = Ps * sigma, otherwise P = Ps(1) = const.
35     C
36     E0= 6.108 _d -3
37     C1= 17.269 _d 0
38     C2= 21.875 _d 0
39     T0=273.16 _d 0
40     T1= 35.86 _d 0
41     T2= 7.66 _d 0
42     C
43     DO 110 J=1,NGP
44     QSAT(J)=0.
45     IF (TA(J).GE.T0) THEN
46     QSAT(J)=E0*EXP(C1*(TA(J)-T0)/(TA(J)-T1))
47     ELSE IF ( TA(J).GT.0.) then
48     QSAT(J)=E0*EXP(C2*(TA(J)-T0)/(TA(J)-T2))
49     ENDIF
50     110 CONTINUE
51     C
52     IF (SIG.LE.0.0) THEN
53     DO 120 J=1,NGP
54     QSAT(J)=622. _d 0*QSAT(J)/(PS(1)-0.378 _d 0*QSAT(J))
55     120 CONTINUE
56     ELSE
57     DO 130 J=1,NGP
58     QSAT(J)=622. _d 0*QSAT(J)/(SIG*PS(J)-0.378 _d 0*QSAT(J))
59     130 CONTINUE
60     ENDIF
61     chh write(0,*) 'MAXVAL(QSAT)=',MAXVAL(QSAT)
62     chh write(0,*) 'MINVAL(QSAT)=',MINVAL(QSAT)
63     C
64     C--- 2. Compute rel.hum. RH=Q/Qsat (IMODE>0), or Q=RH*Qsat (IMODE<0)
65     C
66     IF (IMODE.GT.0) THEN
67     DO 210 J=1,NGP
68     IF(QSAT(J).ne.0.) then
69     RH(J)=QA(J)/QSAT(J)
70     ELSE
71     RH(J)=0.
72     ENDIF
73     210 CONTINUE
74     ELSE IF (IMODE.LT.0) THEN
75     DO 220 J=1,NGP
76     QA(J)=RH(J)*QSAT(J)
77     220 CONTINUE
78     ENDIF
79     chh write(0,*) 'MAXVAL(QA)=',MAXVAL(QA)
80     chh write(0,*) 'MINVAL(QA)=',MINVAL(QA)
81     chh write(0,*) 'MAXVAL(RH)=',MAXVAL(RH)
82     chh write(0,*) 'MINVAL(RH)=',MINVAL(RH)
83     C
84     RETURN
85     END
86    
87     SUBROUTINE ZMEDDY (NLON,NLAT,FF,ZM,EDDY)
88    
89    
90     IMPLICIT rEAL*8 (A-H,O-Z)
91    
92    
93     C
94     C *** Decompose a field into zonal-mean and eddy component
95     C
96     REAL FF(NLON,NLAT), ZM(NLAT), EDDY(NLON,NLAT)
97     C
98     RNLON=1./NLON
99     C
100     DO 130 J=1,NLAT
101     C
102     ZM(J)=0.
103     DO 110 I=1,NLON
104     ZM(J)=ZM(J)+FF(I,J)
105     110 CONTINUE
106     ZM(J)=ZM(J)*RNLON
107     C
108     DO 120 I=1,NLON
109     EDDY(I,J)=FF(I,J)-ZM(J)
110     120 CONTINUE
111     C
112     130 CONTINUE
113     C
114     C--
115     RETURN
116     END
117     C

  ViewVC Help
Powered by ViewVC 1.1.22