Annotation of modelE/model/CONST.f, revision 2.18
2.0 gavin 1: MODULE CONSTANT
2: !@sum CONSTANT definitions for physical constants and useful numbers
3: !@auth G. Schmidt
4: !@ver 1.0
5: IMPLICIT NONE
6: SAVE
7: C**** Conventions: 'by' implies reciprocal, 'rt' implies square root
8:
9: C**** Numerical constants
10:
11: real*8,parameter :: pi = 3.1415926535897932d0 !@param pi pi
12: real*8,parameter :: twopi = 2d0*pi !@param twopi 2*pi
13: real*8,parameter :: radian = pi/180d0 !@param radian pi/180
14: !@param zero,one 0 and 1 for occasional use as arguments
15: real*8,parameter :: zero = 0d0, one=1d0
16: !@param rt2,byrt2 sqrt(2), 1/sqrt(2)
17: real*8,parameter :: rt2 = 1.4142135623730950d0
18: real*8,parameter :: byrt2 = 1./rt2
19: !@param rt3,byrt3 sqrt(3), 1/sqrt(3)
20: real*8,parameter :: rt3 = 1.7320508075688772d0
21: real*8,parameter :: byrt3 = 1./rt3
22: !@param rt12,byrt12 sqrt(12), 1/sqrt(12)
23: real*8,parameter :: rt12 = 3.4641016151377546d0
24: real*8,parameter :: byrt12 = 1./rt12
25: real*8,parameter :: by3 =1./3d0 !@param by3 1/3
26: real*8,parameter :: by6 =1./6d0 !@param by6 1/6
27: real*8,parameter :: by9 =1./9d0 !@param by9 1/9
28: real*8,parameter :: by12=1./12d0 !@param by12 1/12
2.2 cdrar 29: !@param undef Missing value
30: real*8,parameter :: undef=-1.d30
2.4 gavin 31: !@param teeny small positive value used in num/(den+teeny) to avoid 0/0
32: real*8,parameter :: teeny=1.d-30
2.17 ialeinov 33: integer*8,parameter :: intNaN=-1 ! i.e. = Z'FFFFFFFFFFFFFFFF'
2.15 ialeinov 34: !@param NaN NaN
2.16 ialeinov 35: real*8,parameter :: NaN=transfer(intNaN,1.d0)
2.0 gavin 36:
37: C**** Physical constants
38:
39: !@param stbo Stefan-Boltzmann constant (W/m^2 K^4)
40: real*8,parameter :: stbo =5.67051d-8 !current best estimate
41:
2.2 cdrar 42: c**** Latent heats:
2.0 gavin 43: c**** Note that for energy conservation the efective latent heat at any
44: c**** temperature must follow these formulae (assuming a reference
45: c**** temperature of 0 Celcius, and constant specific heats).
46: c**** If specific heats vary as a function of temperature, the extra
2.2 cdrar 47: c**** term becomes an integral
2.0 gavin 48: c**** lhe(T) = lhe(0) + (shv-shw) T (in C)
49: c**** lhm(T) = lhm(0) + (shw-shi) T (in C)
50: c**** lhs(T) = lhs(0) + (shv-shi) T (in C)
2.2 cdrar 51: !@param lhe latent heat of evap at 0 C (2.5008d6 J/kg)
2.0 gavin 52: real*8,parameter :: lhe = 2.5d6
2.2 cdrar 53: !@param lhm latent heat of melt at 0 C (334590 J/kg)
2.0 gavin 54: real*8,parameter :: lhm = 3.34d5
2.2 cdrar 55: !@param bylhm 1/lhm
2.0 gavin 56: real*8,parameter :: bylhm = 1./lhm
57: !@param lhs latent heat of sublimation at 0 C (J/kg)
58: real*8,parameter :: lhs = lhe+lhm
59:
60: !@param rhow density of pure water (1000 kg/m^3)
61: real*8,parameter :: rhow = 1d3
2.10 gavin 62: !@param rhows density of average sea water (1030 kg/m^3)
63: real*8,parameter :: rhows = 1030d0
2.14 gavin 64: !@param byrhows recip. density of average sea water (1/1030 m^3/kg)
65: real*8,parameter :: byrhows = 1d0/rhows
2.0 gavin 66: !@param rhoi density of pure ice (916.6 kg/m^3)
67: real*8,parameter :: rhoi = 916.6d0
68: !@param byrhoi 1/rhoi (m^3/kg)
69: real*8,parameter :: byrhoi = 1d0/rhoi
70:
71: !@param tf freezing point of water at 1 atm (273.16 K)
72: real*8,parameter :: tf = 273.16d0
73: !@param bytf 1/tf (K^-1)
74: real*8,parameter :: bytf = 1d0/tf
75:
76: !@param shw heat capacity of water (at 20 C) (4185 J/kg C)
77: real*8,parameter :: shw = 4185.
78: !@param byshw 1/shw
79: real*8,parameter :: byshw = 1d0/shw
80:
81: !@param shi heat capacity of pure ice (at 0 C) (2060 J/kg C)
82: real*8,parameter :: shi = 2060.
83: !@param byshi 1/shi
84: real*8,parameter :: byshi = 1d0/shi
85:
86: c**** RGAS = R/M_A = 1000* 8.314510 J/mol K /28.9655 g/mol
87: c**** For values of CO2 much larger than present day (> 4x conc)
88: c**** the molecular weight of dry air M_A could change.
89: c**** Assume that M_O2 = 31.9988 and M_CO2 = 44.00995
90: c**** and current percentages 20.946% and 0.0350% (US Stand. Atm.)
91: c**** Assuming CO2 displaces other gases equally M_A=28.9602 + n*0.00527
92: c**** where n is multiple of present day CO2 conc (350 ppm)
93: c**** For 4xCO2 M_A = 28.9813 => rgas = 286.89
94: c**** For 10xCO2 M_A = 29.0129 => rgas = 286.58
95: !@param gasc gas constant (8.314510 J/mol K)
96: real*8,parameter :: gasc = 8.314510d0
2.6 faluvegi 97: !@param bygasc 1/gasc
98: real*8,parameter :: bygasc = 1./gasc
2.0 gavin 99: !@param mair molecular weight of dry air (28.9655 g/mol)
100: real*8,parameter :: mair = 28.9655d0
101: !@param rgas gas constant (287.05 J/K kg)
102: real*8,parameter :: rgas = 1d3 * gasc / mair ! = 287.05...
103:
104: !@param mwat molecular weight of water vapour
105: real*8,parameter :: mwat = 18.015d0
106: !@param rvap gas constant for water vapour (461.5 J/K kg)
107: c**** defined as R/M_W = 1000* 8.314510 J/mol K /18.015 g/mol
108: real*8,parameter :: rvap = 1d3 * gasc / mwat ! = 461.5...
109:
110: !@param mrat mass ratio of air to water vapour (0.62197)
111: real*8,parameter :: mrat = mwat/mair ! = 0.62197....
112: !@param bymrat 1/mrat (1.6078)
113: real*8,parameter :: bymrat = 1./mrat ! = 1.6078....
114: !@param deltx coeff. of humidity in virtual temperature defn. (0.6078)
115: real*8,parameter :: deltx = bymrat-1. ! = 0.6078....
116:
117: !@param srat ratio of specific heats at const. press. and vol. (=1.401)
118: real*8,parameter :: srat = 1.401d0
119: !@param kapa ideal gas law exponent for dry air (.2862)
120: c**** kapa = (g-1)/g where g=1.401 = c_p/c_v
121: real*8,parameter :: kapa = (srat - 1.)/srat ! =.2862....
122: !@param bykapa,bykapap1,bykapap2 various useful reciprocals of kapa
123: real*8,parameter :: bykapa = 1./kapa
124: real*8,parameter :: bykapap1 = 1./(kapa+1.)
125: real*8,parameter :: bykapap2 = 1./(kapa+2.)
126:
2.9 gavin 127: !@param sha specific heat of dry air (const. pres.) (rgas/kapa J/kg C)
2.0 gavin 128: real*8,parameter :: sha = rgas/kapa
129: !@param bysha 1/sha
130: real*8,parameter :: bysha = 1./sha
131:
2.9 gavin 132: !@param shv specific heat of water vapour (const. pres.) (J/kg C)
2.0 gavin 133: c**** shv is currently assumed to be zero to aid energy conservation in
134: c**** the atmosphere. Once the heat content associated with water
135: c**** vapour is included, this can be set to the standard value
2.2 cdrar 136: c**** Literature values are 1911 (Arakawa), 1952 (Wallace and Hobbs)
2.0 gavin 137: c**** Smithsonian Met Tables = 4*rvap + delta = 1858--1869 ????
138: c real*8,parameter :: shv = 4.*rvap ????
139: real*8,parameter :: shv = 0.
140:
2.5 gavin 141: !@var visc_air dynamic viscosity of air (kg/m s)
2.7 cdrar 142: real*8,parameter :: visc_air = 1.7d-5
2.5 gavin 143:
2.18 ! gavin 144: !@var visc_air_kin kinematic viscosity of air (1 bar 15 deg C) (m^2/s)
2.13 gavin 145: real*8,parameter :: visc_air_kin = 1.46d-5
146:
2.18 ! gavin 147: !@var visc_wtr_kin kinematic viscosity of water (35 psu, 20 deg C) (m^2/s)
2.14 gavin 148: real*8,parameter :: visc_wtr_kin = 1.05d-6
149:
2.12 gavin 150: !@var avog Avogadro's constant (atmos/mole)
151: real*8,parameter :: avog=6.023d23
2.11 gavin 152:
2.0 gavin 153: C**** Astronomical constants
154:
155: !@param sday sec per day (s)
156: real*8,parameter :: sday = 86400.
157:
158: !@param hrday hours in a day (hrs)
159: real*8,parameter :: hrday = sday/3600.
160:
161: !@param omega earth's rotation rate (7.29 s^-1)
162: c real*8,parameter :: omega = 7.2921151467d-5 ! NOVAS value
163: real*8,parameter :: EDPERD = 1.
164: real*8,parameter :: EDPERY = 365.
165: real*8,parameter :: omega = TWOPI*(EDPERD+EDPERY)/
166: * (EDPERD*EDPERY*SDAY)
167: !@param omega2 2*omega
168: real*8,parameter :: omega2 = 2.*omega
169:
170: !@param radius radius of the earth (6371000 m)
171: c**** radius of spherical earth, same volume = 6371000 m
172: real*8,parameter :: radius = 6375000.
173: !@param grav gravitaional accelaration (9.80665 m/s^2)
174: c**** SI reference gravity (at 45 deg) = 9.80665
175: real*8,parameter :: grav = 9.80665d0
176: !@param bygrav 1/grav
177: real*8,parameter :: bygrav = 1d0/grav
178:
2.1 gavin 179: C**** lapse rate related variables
180: !@param GAMD dry adiabatic lapse rate (=0.0098 K/m)
181: real*8, parameter :: gamd = grav*kapa/rgas
2.0 gavin 182: !@param BMOIST moist adiabatic lapse rate (K/m)
183: real*8, parameter :: bmoist = 0.0065d0
184: !@param BBYG moist adiabatic lapse rate divided by grav
185: real*8, parameter :: bbyg = bmoist*bygrav
186: !@param GBYRB grav divided by rgas and bmoist
187: real*8, parameter :: gbyrb = grav/(rgas*bmoist)
188:
189: C**** Useful conversion factors
190:
191: !@param kg2mb,mb2kg conversion from milli-bars to kg/m^2
192: real*8,parameter :: kg2mb = 1d-2*grav, mb2kg = 1d2*bygrav
193: !@param kgpa2mm,mm2kgpa conversion from kg/m^2 water to mm
194: real*8,parameter :: kgpa2mm = 1d0, mm2kgpa = 1d0
195:
196: END MODULE CONSTANT
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>