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

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

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


Revision 1.1 - (hide annotations) (download)
Fri Aug 11 19:35:33 2006 UTC (18 years, 11 months ago) by jscott
Branch: MAIN
CVS Tags: HEAD
atm2d package

1 jscott 1.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