/[MITgcm]/MITgcm_contrib/jscott/igsm/src/util.F
ViewVC logotype

Contents of /MITgcm_contrib/jscott/igsm/src/util.F

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


Revision 1.1 - (show annotations) (download)
Fri Aug 11 19:35:33 2006 UTC (18 years, 11 months ago) by jscott
Branch: MAIN
CVS Tags: HEAD
Error occurred while calculating annotation data.
atm2d package

1
2 #include "ctrparam.h"
3
4 ! ==========================================================
5 !
6 ! UTIL.F: Some utility functions for the climate model.
7 !
8 ! ----------------------------------------------------------
9 !
10 ! Revision History:
11 !
12 ! When Who What
13 ! ----- ---------- -------
14 ! 080200 Chien Wang repack based on CliChem3 & M24x11,
15 ! and add cpp.
16 !
17 ! ==========================================================
18
19 C CMS SYSTEM ROUTINES EMULATION FOR IBM RS/6000
20 C
21 SUBROUTINE CLOCKS(IHSC)
22 C THIS VERSION OF CLOCKS RETURNS PROCESS TIME OF USER AND
23 C SYSTEM TIME OF CHILD PROCESSES
24 C NOTE: MCLOCK IS REALLY IN HUNDREDTHS OF A SECOND, NOT SIXTIETHS.
25 CCC IHSC=-MCLOCK()
26 logical first
27 real *4 zero,a
28 data first /.true./
29 if(first) then
30 zero=0.0
31 a=secnds(zero)
32 first=.false.
33 end if
34 IHSC=100*secnds(a)
35 c IHSC=0.
36 RETURN
37 END
38 FUNCTION THBAR (X,Y)
39 REAL A,B,C,D,E,F,G,Q,AL
40 CC DOUBLE PRECISION A,B,C,D,E,F,G,Q,AL
41 DATA A,B,C,D,E,F,G/113.4977618974100,438.5012518098521,
42 * 88.49964112645850,-11.50111432385882,
43 * 30.00033943846368,299.9975118132485,299.9994728900967/
44 Q=X/Y
45 AL=(A+Q*(B+Q*(C+Q*(D+Q))))/(E+Q*(F+G*Q))
46 THBAR=X*AL
47 RETURN
48 END
49 !
50 FUNCTION EXPBYK (X)
51 EXPBYK=X**.286
52 RETURN
53 END
54 !
55 FUNCTION EXPBYKOLD (X)
56 C EXPBYK=X**.286
57 c DOUBLE PRECISION A(7),B(7),C(7),D(7),E(7),F(7),G(7),H(7)
58 REAL A(7),B(7),C(7),D(7),E(7),F(7),G(7),H(7)
59 c DOUBLE PRECISION TOP, BOT
60 C
61 DATA A(1) /.3910084705257427D12/
62 DATA B(1) /.1323236271112985D11/
63 DATA C(1) /.4866245535199495D8/
64 DATA D(1) /.2825751070482957D5/
65 DATA E(1) /.2021679763023094D12/
66 DATA F(1) /.3219813576002469D10/
67 DATA G(1) /.7026939414893149D7/
68 DATA H(1) /.2245905505347945D4/
69 CUT1 DC E'.272E3'
70 DATA A(2) /.1527376839478999D10/
71 DATA B(2) /.2067556673365934D9/
72 DATA C(2) /.3041403459557123D7/
73 DATA D(2) /.7064377675658254D4/
74 DATA E(2) /.1173982318753656D10/
75 DATA F(2) /.7478937617614235D8/
76 DATA G(2) /.6528830353471617D6/
77 DATA H(2) /.8346812273642854D3/
78 CUT2 DC E'.68E2'
79 DATA A(3) /.5966315773653637D7/
80 DATA B(3) /.3230557302541690D7/
81 DATA C(3) /.1900877162187466D6/
82 DATA D(3) /.1766094418795829D4/
83 DATA E(3) /.6817273980203066D7/
84 DATA F(3) /.1737197094305671D7/
85 DATA G(3) /.6066030070508742D5/
86 DATA H(3) /.3102057273820339D3/
87 CUT3 DC E'.17E2'
88 DATA A(4) /.2330592097816283D5/
89 DATA B(4) /.5047745784578189D5/
90 DATA C(4) /.1188048226473864D5/
91 DATA D(4) /.4415236046666724D3/
92 DATA E(4) /.3958766989520573D5/
93 DATA F(4) /.4035136939373286D5/
94 DATA G(4) /.5636035678286606D4/
95 DATA H(4) /.1152866390241182D3/
96 CUT4 DC E'.425E1'
97 DATA A(5) /.9103875388060500D2/
98 DATA B(5) /.7887102788893237D3/
99 DATA C(5) /.7425301414937417D3/
100 DATA D(5) /.1103809011715425D3/
101 DATA E(5) /.2298842049606823D3/
102 DATA F(5) /.9372759240517918D3/
103 DATA G(5) /.5236521711877195D3/
104 DATA H(5) /.4284578897126435D2/
105 CUT5 DC E'.10625E1'
106 DATA A(6) /.3556201323540056D0/
107 DATA B(6) /.1232359810733637D2/
108 DATA C(6) /.4640813384330962D2/
109 DATA D(6) /.2759522529901992D2/
110 DATA E(6) /.1334929482333115D1/
111 DATA F(6) /.2177091313247190D2/
112 DATA G(6) /.4865327546221521D2/
113 DATA H(6) /.1592345521834502D2/
114 CUT6 DC E'.265625E0'
115 DATA A(7) /.1389141141676475D-2/
116 DATA B(7) /.1925562204367069D0/
117 DATA C(7) /.2900508365211162D1/
118 DATA D(7) /.6898806323349460D1/
119 DATA E(7) /.7751888493733211D-2/
120 DATA F(7) /.5056917033590845D0/
121 DATA G(7) /.4520445715351951D1/
122 DATA H(7) /.5917884392240980D1/
123 C
124 C
125 IF(X.LT.272.) GO TO 10
126 K=1
127 GO TO 100
128 10 IF(X.LT.68.) GO TO 20
129 K=2
130 GO TO 100
131 20 IF(X.LT.17.) GO TO 30
132 K=3
133 GO TO 100
134 30 IF(X.LT.4.25) GO TO 40
135 K=4
136 GO TO 100
137 40 IF(X.LT.1.0625) GO TO 50
138 K=5
139 GO TO 100
140 50 IF(X.LT.0.265625) GO TO 60
141 K=6
142 GO TO 100
143 60 K=7
144 C
145 100 CONTINUE
146 IF(X.LT.272. .AND. X.GE.68.) K=2
147 IF(X.LT.68. .AND. X.GE.17.) K=3
148 IF(X.LT.17. .AND. X.GE.4.25) K=4
149 IF(X.LT.4.25 .AND. X.GE.1.0625) K=5
150 IF(X.LT.1.0625 .AND. X.GE.0.265625) K=6
151 IF(X.LT.0.265625) K=7
152 C
153 TOP = X
154 BOT = H(K)
155 TOP = TOP + D(K)
156 BOT = BOT * X
157 TOP = TOP * X
158 BOT = BOT + G(K)
159 TOP = TOP + C(K)
160 BOT = BOT * X
161 TOP = TOP * X
162 BOT = BOT + F(K)
163 TOP = TOP + B(K)
164 BOT = BOT * X
165 TOP = TOP * X
166 BOT = BOT + E(K)
167 TOP = TOP + A(K)
168 C
169 TOP = TOP / BOT
170 EXPBYK = TOP
171 RETURN
172 END
173 C SUBROUTINE READT (IUNIT,NSKIP,AIN,LENGTH,AOUT,IPOS)
174 C****
175 C**** READ IN TITLE & REAL*4 ARRAY
176 C****
177 C REAL*4 AIN(LENGTH),X
178 C REAL*4 AOUT(LENGTH)
179 C CHARACTER*80 TITLE
180 C DO 10 N=1,IPOS-1
181 C 10 READ (IUNIT,END=920)
182 C READ (IUNIT,ERR=910,END=920,NUM=LEN) TITLE,(X,N=1,NSKIP),AIN
183 C IF(LEN.LT.4*(20+NSKIP+LENGTH)) GO TO 930
184 C DO 100 N=1,LENGTH
185 C 100 AOUT(N)=AIN(N)
186 C WRITE(6,'('' Read from Unit '',I2,'':'',A80)') IUNIT,TITLE
187 C RETURN
188 C 910 WRITE(6,*) 'READ ERROR ON UNIT',IUNIT
189 C STOP 'READ ERROR'
190 C 920 WRITE(6,*) 'END OF FILE ENCOUNTERED ON UNIT',IUNIT
191 C STOP 'NO DATA TO READ'
192 C 930 WRITE(6,*) LEN/4,' RATHER THAN',20+NSKIP+LENGTH,' WORDS ON UNIT',
193 C * IUNIT
194 C STOP 'NOT ENOUGH DATA FOUND'
195 C END

  ViewVC Help
Powered by ViewVC 1.1.22