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

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

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


Revision 1.2 - (show annotations) (download)
Fri Feb 2 21:36:29 2001 UTC (23 years, 4 months ago) by adcroft
Branch: MAIN
CVS Tags: checkpoint35, pre38tag1, c37_adj, pre38-close, checkpoint37, checkpoint39, checkpoint38, checkpoint36
Branch point for: pre38
Changes since 1.1: +116 -0 lines
Merged changes from branch "branch-atmos-merge" into MAIN (checkpoint34)
 - substantial modifications to algorithm sequence (dynamics.F)
 - packaged OBCS, Shapiro filter, Zonal filter, Atmospheric Physics

1 C $Header: /u/gcmpack/models/MITgcmUV/pkg/aim/Attic/phy_shtorh.F,v 1.1.2.3 2001/01/30 15:28:18 cnh Exp $
2 C $Name: branch-atmos-merge-freeze $
3
4 SUBROUTINE SHTORH (IMODE,NGP,TA,PS,SIG,QA,RH,QSAT)
5 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
26
27 CcnhDebugStarts
28 #include "SIZE.h"
29 CcnhDebugEnds
30 REAL TA(NGP), PS(NGP), QA(NGP), RH(NGP), QSAT(NGP)
31 C
32 C--- 1. Compute Qsat (g/kg) from T (degK) and normalized pres. P (= p/1000_hPa)
33 C If SIG > 0, P = Ps * sigma, otherwise P = Ps(1) = const.
34 C
35 E0= 6.108 _d -3
36 C1= 17.269 _d 0
37 C2= 21.875 _d 0
38 T0=273.16 _d 0
39 T1= 35.86 _d 0
40 T2= 7.66 _d 0
41 C
42 DO 110 J=1,NGP
43 QSAT(J)=0.
44 IF (TA(J).GE.T0) THEN
45 QSAT(J)=E0*EXP(C1*(TA(J)-T0)/(TA(J)-T1))
46 ELSE IF ( TA(J).GT.0.) then
47 QSAT(J)=E0*EXP(C2*(TA(J)-T0)/(TA(J)-T2))
48 ENDIF
49 110 CONTINUE
50 C
51 IF (SIG.LE.0.0) THEN
52 DO 120 J=1,NGP
53 QSAT(J)=622. _d 0*QSAT(J)/(PS(1)-0.378 _d 0*QSAT(J))
54 120 CONTINUE
55 ELSE
56 DO 130 J=1,NGP
57 QSAT(J)=622. _d 0*QSAT(J)/(SIG*PS(J)-0.378 _d 0*QSAT(J))
58 130 CONTINUE
59 ENDIF
60 chh write(0,*) 'MAXVAL(QSAT)=',MAXVAL(QSAT)
61 chh write(0,*) 'MINVAL(QSAT)=',MINVAL(QSAT)
62 C
63 C--- 2. Compute rel.hum. RH=Q/Qsat (IMODE>0), or Q=RH*Qsat (IMODE<0)
64 C
65 IF (IMODE.GT.0) THEN
66 DO 210 J=1,NGP
67 IF(QSAT(J).ne.0.) then
68 RH(J)=QA(J)/QSAT(J)
69 ELSE
70 RH(J)=0.
71 ENDIF
72 210 CONTINUE
73 ELSE IF (IMODE.LT.0) THEN
74 DO 220 J=1,NGP
75 QA(J)=RH(J)*QSAT(J)
76 220 CONTINUE
77 ENDIF
78 chh write(0,*) 'MAXVAL(QA)=',MAXVAL(QA)
79 chh write(0,*) 'MINVAL(QA)=',MINVAL(QA)
80 chh write(0,*) 'MAXVAL(RH)=',MAXVAL(RH)
81 chh write(0,*) 'MINVAL(RH)=',MINVAL(RH)
82 C
83 RETURN
84 END
85
86 SUBROUTINE ZMEDDY (NLON,NLAT,FF,ZM,EDDY)
87
88
89 IMPLICIT rEAL*8 (A-H,O-Z)
90
91
92 C
93 C *** Decompose a field into zonal-mean and eddy component
94 C
95 REAL FF(NLON,NLAT), ZM(NLAT), EDDY(NLON,NLAT)
96 C
97 RNLON=1./NLON
98 C
99 DO 130 J=1,NLAT
100 C
101 ZM(J)=0.
102 DO 110 I=1,NLON
103 ZM(J)=ZM(J)+FF(I,J)
104 110 CONTINUE
105 ZM(J)=ZM(J)*RNLON
106 C
107 DO 120 I=1,NLON
108 EDDY(I,J)=FF(I,J)-ZM(J)
109 120 CONTINUE
110 C
111 130 CONTINUE
112 C
113 C--
114 RETURN
115 END
116 C

  ViewVC Help
Powered by ViewVC 1.1.22