1 |
C $Header: /u/gcmpack/MITgcm/model/src/getcon.F,v 1.10 2006/11/14 22:41:59 jmc Exp $ |
2 |
C $Name: $ |
3 |
|
4 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
5 |
CBOP 0 |
6 |
C !ROUTINE: GETCON |
7 |
|
8 |
C !INTERFACE: |
9 |
FUNCTION GETCON(NAME) |
10 |
|
11 |
C !DESCRIPTION: |
12 |
C Generic function getcon is a repository of global variables, |
13 |
C i.e. a memory for scalar values needed throughout a large |
14 |
C program. This function remembers floating point values. The |
15 |
C function is called with a character name to interrogate a value. |
16 |
|
17 |
C !USES: |
18 |
implicit none |
19 |
#include "CPP_EEOPTIONS.h" |
20 |
|
21 |
C !INPUT PARAMETERS: |
22 |
CHARACTER*(*) NAME |
23 |
CEOP |
24 |
|
25 |
integer I |
26 |
INTEGER MAXCON |
27 |
PARAMETER (MAXCON=46) |
28 |
CHARACTER*16 ANAME(MAXCON) |
29 |
_RL ACON (MAXCON) |
30 |
_RL GETCON |
31 |
_RL VECMAX, UNDEF, OB, ECC, AE, EQNX, SOLS, S0, GRAV, |
32 |
& SRFPRS, PIMEAN, PSTD, TSTD, SDAY, SSALB, CO2, |
33 |
& CFC11, CFC12, CFC22, ATMPOPA, PI, CPD, CPV, ALHL, ALHS, |
34 |
& STFBOL, AIRMW, H2OMW, RUNIV, RGAS, RVAP, RKAP, HEATW, |
35 |
& HEATI, TICE, VKRM, DEG2RAD, CALTOJ, EPS, VIRTCON, EPSFAC, |
36 |
& YRLEN, DAYSCY, PERHDEG, OBLDEG |
37 |
|
38 |
C COMPUTATIONAL CONSTANTS |
39 |
C ----------------------- |
40 |
PARAMETER ( VECMAX = 65535.5 ) |
41 |
PARAMETER ( UNDEF = 1.d15 ) |
42 |
|
43 |
C ASTRONOMICAL CONSTANTS |
44 |
C ---------------------- |
45 |
PARAMETER ( OB = 23.45 ) |
46 |
PARAMETER ( AE = 6371E3 ) |
47 |
PARAMETER ( SOLS = 176.5 ) |
48 |
PARAMETER ( S0 = 1365.0 ) |
49 |
PARAMETER ( EQNX = 80.9028 ) |
50 |
PARAMETER ( ECC = 0.0167 ) |
51 |
PARAMETER ( PERHDEG= 102.0 ) |
52 |
PARAMETER ( OBLDEG = 23.45 ) |
53 |
|
54 |
C TERRESTRIAL CONSTANTS |
55 |
C --------------------- |
56 |
PARAMETER ( GRAV = 9.81d0 ) |
57 |
PARAMETER ( SRFPRS = 984.7 ) |
58 |
PARAMETER ( PIMEAN = 984.7 ) |
59 |
PARAMETER ( PSTD = 1000.0 ) |
60 |
PARAMETER ( TSTD = 280.0 ) |
61 |
PARAMETER ( SDAY = 86400.0 ) |
62 |
PARAMETER ( SSALB = 0.99 ) |
63 |
PARAMETER ( CO2 = 355.0 ) |
64 |
PARAMETER ( CFC11 = 0.3 ) |
65 |
PARAMETER ( CFC12 = 0.5 ) |
66 |
PARAMETER ( CFC22 = 0.2 ) |
67 |
PARAMETER ( ATMPOPA= 1.d5 ) |
68 |
PARAMETER ( PI = 3.14159d0 ) |
69 |
PARAMETER ( YRLEN = 365.25 ) |
70 |
PARAMETER ( DAYSCY = 365 *4 +1 ) |
71 |
|
72 |
C THERMODYNAMIC CONSTANTS |
73 |
C ----------------------- |
74 |
PARAMETER ( CPD = 1004.16d0 ) |
75 |
PARAMETER ( CPV = 1869.46 ) |
76 |
PARAMETER ( ALHL = 2.499E6 ) |
77 |
PARAMETER ( ALHS = 2.845E6 ) |
78 |
PARAMETER ( STFBOL = 5.67E-8 ) |
79 |
PARAMETER ( AIRMW = 28.97d0 ) |
80 |
PARAMETER ( H2OMW = 18.01d0 ) |
81 |
PARAMETER ( RUNIV = 8314.3d0 ) |
82 |
PARAMETER ( RGAS = RUNIV/AIRMW) |
83 |
PARAMETER ( RVAP = RUNIV/H2OMW) |
84 |
PARAMETER ( RKAP = RGAS/CPD ) |
85 |
PARAMETER ( HEATW = 597.2 ) |
86 |
PARAMETER ( HEATI = 680.0 ) |
87 |
PARAMETER ( TICE = 273.16 ) |
88 |
|
89 |
C TURBULENCE CONSTANTS |
90 |
C -------------------- |
91 |
PARAMETER ( VKRM = 0.4 ) |
92 |
|
93 |
C CONVERSION CONSTANTS |
94 |
C -------------------- |
95 |
PARAMETER ( DEG2RAD = PI/180.d0) |
96 |
PARAMETER ( CALTOJ = 4184. ) |
97 |
|
98 |
C MOISTURE CONSTANTS |
99 |
C ------------------ |
100 |
PARAMETER ( EPS = 0.622 ) |
101 |
PARAMETER ( VIRTCON= 0.609 ) |
102 |
PARAMETER ( EPSFAC = EPS*HEATW/RGAS*CALTOJ ) |
103 |
|
104 |
|
105 |
DATA ANAME(1 ),ACON(1 ) / 'CP ', CPD / |
106 |
DATA ANAME(2 ),ACON(2 ) / 'RGAS ', RGAS / |
107 |
DATA ANAME(3 ),ACON(3 ) / 'KAPPA ', RKAP / |
108 |
DATA ANAME(4 ),ACON(4 ) / 'LATENT HEAT COND', ALHL / |
109 |
DATA ANAME(5 ),ACON(5 ) / 'GRAVITY ', GRAV / |
110 |
DATA ANAME(6 ),ACON(6 ) / 'STEFAN-BOLTZMAN ', STFBOL / |
111 |
DATA ANAME(7 ),ACON(7 ) / 'VON KARMAN ', VKRM / |
112 |
DATA ANAME(8 ),ACON(8 ) / 'EARTH RADIUS ', AE / |
113 |
DATA ANAME(9 ),ACON(9 ) / 'OBLIQUITY ', OB / |
114 |
DATA ANAME(10),ACON(10) / 'ECCENTRICITY ', ECC / |
115 |
DATA ANAME(11),ACON(11) / 'PERIHELION ', PERHDEG/ |
116 |
DATA ANAME(12),ACON(12) / 'VERNAL EQUINOX ', EQNX / |
117 |
DATA ANAME(13),ACON(13) / 'SUMMER SOLSTICE ', SOLS / |
118 |
DATA ANAME(14),ACON(14) / 'MAX VECT LENGTH ', VECMAX / |
119 |
DATA ANAME(15),ACON(15) / 'MOL WT H2O ', H2OMW / |
120 |
DATA ANAME(16),ACON(16) / 'MOL WT AIR ', AIRMW / |
121 |
DATA ANAME(17),ACON(17) / 'CPV ', CPV / |
122 |
DATA ANAME(18),ACON(18) / 'CPD ', CPD / |
123 |
DATA ANAME(19),ACON(19) / 'UNIV GAS CONST ', RUNIV / |
124 |
DATA ANAME(20),ACON(20) / 'LATENT HEAT SBLM', ALHS / |
125 |
DATA ANAME(21),ACON(21) / 'FREEZING-POINT ', TICE / |
126 |
DATA ANAME(23),ACON(23) / 'CALTOJ ', CALTOJ / |
127 |
DATA ANAME(24),ACON(24) / 'EPS ', EPS / |
128 |
DATA ANAME(25),ACON(25) / 'HEATW ', HEATW / |
129 |
DATA ANAME(26),ACON(26) / 'EPSFAC ', EPSFAC / |
130 |
DATA ANAME(27),ACON(27) / 'VIRTCON ', VIRTCON/ |
131 |
DATA ANAME(28),ACON(28) / 'PIMEAN ', PIMEAN / |
132 |
DATA ANAME(29),ACON(29) / 'SDAY ', SDAY / |
133 |
DATA ANAME(30),ACON(30) / 'HEATI ', HEATI / |
134 |
DATA ANAME(31),ACON(31) / 'S0 ', S0 / |
135 |
DATA ANAME(32),ACON(32) / 'PSTD ', PSTD / |
136 |
DATA ANAME(33),ACON(33) / 'TSTD ', TSTD / |
137 |
DATA ANAME(34),ACON(34) / 'SSALB ', SSALB / |
138 |
DATA ANAME(35),ACON(35) / 'UNDEF ', UNDEF / |
139 |
DATA ANAME(36),ACON(36) / 'CO2 ', CO2 / |
140 |
DATA ANAME(37),ACON(37) / 'RVAP ', RVAP / |
141 |
DATA ANAME(38),ACON(38) / 'CFC11 ', CFC11 / |
142 |
DATA ANAME(39),ACON(39) / 'CFC12 ', CFC12 / |
143 |
DATA ANAME(40),ACON(40) / 'CFC22 ', CFC22 / |
144 |
DATA ANAME(41),ACON(41) / 'DEG2RAD ', DEG2RAD / |
145 |
DATA ANAME(42),ACON(42) / 'ATMPOPA ', ATMPOPA/ |
146 |
DATA ANAME(43),ACON(43) / 'PI ', PI / |
147 |
DATA ANAME(44),ACON(44) / 'YRLEN ', YRLEN / |
148 |
DATA ANAME(45),ACON(45) / 'DAYSCY ',DAYSCY / |
149 |
DATA ANAME(46),ACON(46) / 'OBLDEG ',OBLDEG / |
150 |
|
151 |
DO 10 I=1,MAXCON |
152 |
IF(NAME.EQ.ANAME(I)) THEN |
153 |
GETCON = ACON(I) |
154 |
RETURN |
155 |
ENDIF |
156 |
10 CONTINUE |
157 |
|
158 |
900 PRINT *,' CANNOT FIND FLOATING POINT CONSTANT - ',NAME |
159 |
PRINT *,' GETCON - CANNOT FIND CONSTANT REQUESTED' |
160 |
RETURN |
161 |
END |