source: CCCC/trunk/config_c4.py @ 60

Subversion URL: http://proj.badc.rl.ac.uk/svn/exarch/CCCC/trunk/config_c4.py@60
Revision 60, 3.9 KB checked in by mjuckes, 7 years ago (diff)

adding CCCC code

Line 
1import string
2
3validCmip5Experiments = ['1pctCO2', 'abrupt4xCO2', 'amip', 'amip4K', 'amip4xCO2', 'amipFuture', 'aqua4K', 'aqua4xCO2', 'aquaControl', 'decadal1959', 'decadal1960', 'decadal1961', 'decadal1962', 'decadal1963', 'decadal1964', 'decadal1965', 'decadal1966', 'decadal1967', 'decadal1968', 'decadal1969', 'decadal1970', 'decadal1971', 'decadal1972', 'decadal1973', 'decadal1974', 'decadal1975', 'decadal1976', 'decadal1977', 'decadal1978', 'decadal1979', 'decadal1980', 'decadal1981', 'decadal1982', 'decadal1983', 'decadal1984', 'decadal1985', 'decadal1986', 'decadal1987', 'decadal1988', 'decadal1989', 'decadal1990', 'decadal1991', 'decadal1992', 'decadal1993', 'decadal1994', 'decadal1995', 'decadal1996', 'decadal1997', 'decadal1998', 'decadal1999', 'decadal2000', 'decadal2001', 'decadal2002', 'decadal2003', 'decadal2004', 'decadal2005', 'decadal2006', 'decadal2007', 'decadal2008', 'decadal2009', 'decadal2010', 'decadal2011', 'decadal2012', 'esmControl', 'esmFdbk1', 'esmFdbk2', 'esmFixClim1', 'esmFixClim2', 'esmHistorical', 'esmrcp85', 'historical', 'historicalExt', 'historicalGHG', 'historicalMisc', 'historicalNat', 'lgm', 'midHolocene', 'noVolc1960', 'noVolc1965', 'noVolc1970', 'noVolc1975', 'noVolc1980', 'noVolc1985', 'noVolc1990', 'noVolc1995', 'noVolc2000', 'noVolc2005', 'past1000', 'piControl', 'rcp26', 'rcp45', 'rcp60', 'rcp85', 'sst2020', 'sst2030', 'sst2090', 'sst2090rcp45', 'sstClim', 'sstClim4xCO2', 'sstClimAerosol', 'sstClimSulfate', 'volcIn2010']
4
5validExperiment = validCmip5Experiments + ['evaluation']
6
7
8validCordexFrequecies = ['fx','sem','mon','day','6hr','3hr']
9
10validCordexDomainsL = [ 'SAM-44', 'CAM-44', 'NAM-44', 'EUR-44', 'AFR-44', 'WAS-44', 'EAS-44', 'CAS-44', 'AUS-44', 'ANT-44', 'ARC-44', 'MED-44']
11validCordexDomainsLi = map( lambda x: x + 'i', validCordexDomainsL )
12validCordexDomainsH = ['EUR-11']
13validCordexDomains = validCordexDomainsL + validCordexDomainsLi + validCordexDomainsH
14
15plevRequired = ['clh', 'clm', 'cll', 'ua850', 'va850', 'ta850', 'hus850', 'ua500', 'va500', 'ta500', 'zg500', 'ua200', 'va200', 'ta200', 'zg200']
16plevBndsRequired = ['clh', 'clm', 'cll']
17heightRequired = ['tas','tasmax','tasmin','huss','sfcWind','sfcWindmax','wsgsmax','uas','vas']
18
19
20ii = open( 'GCMModelName.txt' ).readlines()
21validGcmNames = []
22for l in ii:
23  if l[0] != '#' and len( string.strip(l) ) > 0:
24    validGcmNames.append( string.split(l)[0] )
25
26ii = open( 'RCMModelName.txt' ).readlines()
27validRcmNames = []
28validInstNames = []
29for l in ii:
30  if l[0] != '#' and len( string.strip(l) ) > 0:
31    bits = string.split(l)
32    validRcmNames.append( bits[0] )
33    validInstNames.append( bits[1] )
34
35plevValues = {'clh':22000, 'clm':56000, 'cll':84000}
36for i in [200,500,850]:
37  for v in ['zg','ua', 'va', 'ta', 'hus']:
38    k = '%s%s' % (v,i)
39    plevValues[k] = i*100
40
41heightRequired = ['tas', 'tasmax', 'tasmin', 'huss', 'sfcWind', 'sfcWindmax', 'wsgsmax', 'uas', 'vas']
42heightValues = {}
43for v in heightRequired:
44  if v in ['tas', 'tasmax', 'tasmin', 'huss']:
45    heightValues[v] = 2
46  else:
47    heightValues[v] = 10
48
49ii = open( 'cordex_domains.csv' ).readlines()
50keys = ['name','tag','res','grid_np_lon','grid_np_lat','nlon','nlat','w','e','s','n']
51rotatedPoleGrids = {}
52for l in ii[2:16]:
53  bits = string.split(string.strip(l),',')
54  ee = {}
55  i = 0
56  for k in keys:
57    if k in ['nlon','nlat']:
58      ee[k] = int(bits[i])
59    elif k in ['grid_np_lon','grid_np_lat','w','e','s','n']:
60      if bits[i] != 'N/A':
61        ee[k] = float(bits[i])
62      else:
63        ee[k] = bits[i]
64    else:
65      ee[k] = bits[i]
66    i += 1
67    rotatedPoleGrids[bits[1]] = ee
68
69##Area,Name, deg,Nlon,Nlat,West8,East8,South8,North8,
70keys = ['name','tag','res','nlon','nlat','w','e','s','n']
71interpolatedGrids = {}
72for l in ii[18:33]:
73  bits = string.split(string.strip(l),',')
74  ee = {}
75  i = 0
76  for k in keys:
77    if k in ['nlon','nlat']:
78      ee[k] = int(bits[i])
79    elif k in ['w','e','s','n']:
80        ee[k] = float(bits[i])
81    else:
82      ee[k] = bits[i]
83    i += 1
84    interpolatedGrids[bits[1]] = ee
85
86
Note: See TracBrowser for help on using the repository browser.