Changeset 55
- Timestamp:
- 19/09/13 17:22:39 (8 years ago)
- Location:
- FCC2/trunk
- Files:
-
- 1 deleted
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
FCC2/trunk/source/comp_mip.py
r48 r55 4 4 5 5 ml = ['CORDEX_3h', 'CORDEX_6h', 'CORDEX_Aday', 'CORDEX_day', 'CORDEX_grids', 'CORDEX_mon' ] 6 ml = ['CORDEX_3h', 'CORDEX_6h', 'CORDEX_Aday', 'CORDEX_day', 'CORDEX_mon' ] 7 ml2 = ['CORDEX_3h', 'CORDEX_6h', 'CORDEX_Aday', 'CMIP5_day', 'CORDEX_grids', 'CMIP5_Amon' ] 6 ml = ['CORDEX_3h', 'CORDEX_6h', 'CORDEX_fx', 'CORDEX_day', 'CORDEX_mon', 'CORDEX_sem' ] 8 7 ml2 = ['CMIP5_3hr', 'CMIP5_6hrPlev', 'CMIP5_Amon', 'CMIP5_cfDay', 'CMIP5_cfOff', 'CMIP5_day', 'CMIP5_grids', 'CMIP5_Lmon', 'CMIP5_OImon', 'CMIP5_Oyr', 9 8 'CMIP5_6hrLev', 'CMIP5_aero', 'CMIP5_cf3hr', 'CMIP5_cfMon', 'CMIP5_cfSites', 'CMIP5_fx', 'CMIP5_LImon', 'CMIP5_Oclim', 'CMIP5_Omon'] … … 13 12 cfsntab = 'cf-standard-name-table.xml' 14 13 cordex_dkrz = 'CORDEX_variables_requirement_table_upgedated-1.csv' 14 cordex_dkrz = 'CORDEX_variables_requirement_table_all.csv' 15 cordex_dkrz_pat = 'cordex_dkrz/CORDEX_variables_requirement_table_%s.csv' 16 cordex_dkrz_pat = 'cordex_dkrz_sep12/CORDEX_variables_requirement_table_%s.csv' 15 17 re_sn = re.compile( 'entry id="(.*)"' ) 16 18 re_sna = re.compile( 'alias id="(.*)"' ) … … 41 43 class comp: 42 44 43 def __init__(self, snl, snla=None, ec1=None ):45 def __init__(self, snl, snla=None, ec1=None,tag=None): 44 46 self.id = 'comp' 45 47 self.snl = snl 46 48 self.snla = snla 47 49 self.ec1 = ec1 48 49 50 def comp(self, e1, e2 ): 50 self.tag=tag 51 52 53 def comp(self, e1, e2,checkCellMethods=False,tag=None ): 54 self.tag=tag 55 51 56 ##e1 = tlist_to_dict( t1 ) 52 57 ##e2 = tlist_to_dict( t2 ) 53 58 59 checkAll = True 54 60 keys = e1.keys() 55 61 keys.sort() … … 57 63 e0 = 0 58 64 f2 = False 65 f3 = False 66 f4 = False 59 67 if e1[k][1]['standard_name'] not in self.snl: 60 68 if e1[k][1]['standard_name'] not in self.snla: … … 69 77 if e1[k][1]['long_name'] != self.ec1[k][1]: 70 78 f2 = True 79 if checkCellMethods: 80 if e1[k][1]['cell_methods'] != self.ec1[k][3]: 81 if not (e1[k][1]['cell_methods']=="None" and string.strip(self.ec1[k][3]) == "time:"): 82 f3 = True 83 if checkAll: 84 if (e1[k][1].has_key( 'positive' ) and self.ec1[k][4] == '') or ( (not e1[k][1].has_key( 'positive' )) and self.ec1[k][4] != ''): 85 f4 = True 86 elif e1[k][1].has_key( 'positive' ): 87 if e1[k][1]['positive'] != self.ec1[k][4]: 88 if not (e1[k][1]['positive']=="None" and string.strip(self.ec1[k][4]) == ""): 89 f4 = True 90 if (e1[k][1].has_key( 'modeling_realm' ) and self.ec1[k][5] == '') or ( (not e1[k][1].has_key( 'modeling_realm' )) and self.ec1[k][5] != ''): 91 f4 = True 92 elif e1[k][1].has_key( 'modeling_realm' ): 93 if e1[k][1]['modeling_realm'] != self.ec1[k][5]: 94 if not (e1[k][1]['modeling_realm']=="None" and string.strip(self.ec1[k][5]) == ""): 95 f4 = True 71 96 97 cks = ['units', 'long_name', 'standard_name'] 98 suppress4B = True 72 99 if k in e2.keys(): 73 100 if e1[k][1] != e2[k][1]: 74 print 'ERROR[4]: Anomaly bewteen MIP tables: %s:: %s -- %s [%s]' % (k, str(e1[k][1]), str( e2[k][1] ), vrln ) 101 ne1 = 0 102 for k2 in cks: 103 if e1[k][1][k2] != e2[k][1][k2]: 104 ne1 += 0 105 if ne1 > 0: 106 print 'ERROR[4A]: Anomaly bewteen MIP tables: %s:: %s -- %s [%s]' % (k, str(e1[k][1]), str( e2[k][1] ), vrln ) 107 else: 108 if not suppress4B: 109 print 'ERROR[4B]: Anomaly bewteen MIP tables: %s:: %s -- %s [%s]' % (k, str(e1[k][1]), str( e2[k][1] ), vrln ) 75 110 e0 = 1 76 111 else: … … 81 116 e0 = 3 82 117 118 xxx = k 119 if self.tag != None: 120 xxx += '[%s]' % self.tag 83 121 if f2 and (e0 == 2): 84 122 print 'ERROR[2]: Difference between CORDEX/CMIP5 MIP tables and VR: %s:: %s [%s] --- %s' % (k,e1[k][1]['long_name'],e1[k][2], self.ec1[k][1]) … … 86 124 print 'ERROR[3]: Difference between CORDEX MIP tables and VR: %s:: %s [%s] --- %s' % (k,e1[k][1]['long_name'],e1[k][2], self.ec1[k][1]) 87 125 elif f2: 88 print 'ERROR[5]: Difference between CORDEX MIP tables and VR: %s --- %s' % (e1[k][1]['long_name'], self.ec1[k][1]) 126 print 'ERROR[5]: Difference between CORDEX MIP tables and VR %s: %s --- %s' % (xxx,e1[k][1]['long_name'], self.ec1[k][1]) 127 if f3: 128 print 'ERROR[6]: Difference between CORDEX MIP tables and VR in cell_methods: %s:: %s --- %s' % (k,e1[k][1]['cell_methods'], self.ec1[k][3]) 129 if f4: 130 print 'ERROR[7]: Difference between CORDEX MIP tables and VR in positive, realm: %s:: %s,%s --- %s' % (xxx,e1[k][1].get('positive','None'),e1[k][1].get('modeling_realm','None'), self.ec1[k][4:6]) 89 131 90 132 … … 93 135 print 'Len snl = %s' % len(snl) 94 136 95 ll = open( base + cordex_dkrz ).readlines() 137 138 dkrz_cordex_version = 3 96 139 ec1 = {} 97 for l in ll[9:74]: 98 bits = string.split( l, ',' ) 99 var = bits[1] 100 ln = bits[13] 101 sn = bits[14] 102 if sn not in snl + snla: 103 print 'ERROR: CORDEX DKRZ sn %s for %s not in snl/snla' % (sn, var) 104 ec1[var] = ( sn,ln) 105 106 107 c = comp( snl,snla=snla, ec1=ec1) 108 109 110 ms = mipTableScan() 111 112 x = 'CORDEX_mon' 113 x = 'CORDEX_day' 114 115 def validate( t ): 140 if dkrz_cordex_version == 1: 141 ll = open( base + cordex_dkrz ).readlines() 142 for l in ll[9:74]: 143 bits = string.split( l, ',' ) 144 var = bits[1] 145 ln = bits[13] 146 sn = bits[14] 147 if sn not in snl + snla: 148 print 'ERROR: CORDEX DKRZ sn %s for %s not in snl/snla' % (sn, var) 149 ec1[var] = ( sn,ln) 150 elif dkrz_cordex_version == 2: 151 for tab in ['3hr','6hr','day','mon','sem','fx']: 152 ll = open( base + cordex_dkrz_pat % tab ).readlines() 153 for l in ll[3:]: 154 bits = string.split( l, ',' ) 155 if (tab != 'fx' and len( bits ) != 7) or (tab == 'fx' and len( bits ) != 5): 156 print 'cant safely parse %s [%s]' % (l,tab) 157 #1,sund,Duration of Sunshine,duration_of_sunshine,s,sum, 158 var,ln,sn,units = bits[1:5] 159 if tab != 'fx': 160 cm,pos = bits[5:7] 161 else: 162 cm,pos = [None,None] 163 if sn not in snl + snla: 164 print 'ERROR: CORDEX DKRZ [%s] sn %s for %s not in snl/snla' % (tab,sn, var) 165 ec1[var] = ( sn,ln,units,cm,pos) 166 elif dkrz_cordex_version == 3: 167 eeee = {} 168 eca = {} 169 ll = open( base + cordex_dkrz_pat % 'all' ).readlines() 170 for l in ll[2:]: 171 bits = string.split( string.strip(l), ',' ) 172 if string.strip(bits[0]) == '': 173 break 174 #1,sund,Duration of Sunshine,duration_of_sunshine,s,sum, 175 var,units = bits[1:3] 176 ln,sn,pos,realm = bits[12:16] 177 if sn not in snl + snla: 178 print 'ERROR: CORDEX DKRZ [%s] sn %s for %s not in snl/snla' % ('all',sn, var) 179 assert pos in ['','up','down'], 'Unexpected value for pos [%s] in %s' % (pos,l) 180 eca[var] = ( units,ln,sn,pos,realm ) 181 182 for tab in ['3hr','6hr','day','mon','sem','fx']: 183 ee = {} 184 ll = open( base + cordex_dkrz_pat % tab ).readlines() 185 for l in ll[2:]: 186 bits = string.split( l, ',' ) 187 if string.strip(bits[0]) == '': 188 break 189 #1,sund,Duration of Sunshine,duration_of_sunshine,s,sum, 190 var,cm = bits[1:3] 191 cm = 'time: ' + cm 192 units,ln,sn,pos,realm = eca[var] 193 ec1[var] = ( sn,ln,units,cm,pos,realm) 194 ee[var] = ( sn,ln,units,cm,pos,realm) 195 eeee[tab] = ee 196 197 198 199 def validate( t,cc ): 116 200 if t == 'all': 117 201 l1 = {} … … 121 205 for m in ml2: 122 206 l2 = ms.scan_table( open( base + '/cmip5_vocabs/mip/' + m ).readlines(), None, asDict=True, appendTo=l2, lax=True, tag=m) 207 ccm = False 123 208 else: 124 i = ml.index(t) 125 t2 = ml2[i] 126 assert t != t2 127 l1 = ms.scan_table( open( base + '/cordex_vocabs/mip/' + t ).readlines(), None, asDict=True) 128 l2 = ms.scan_table( open( base + '/cmip5_vocabs/mip/' + t2 ).readlines(), None, asDict=True ) 129 130 c.comp( l1, l2 ) 131 132 validate('all') 209 l2 = {} 210 for m in ml2: 211 l2 = ms.scan_table( open( base + '/cmip5_vocabs/mip/' + m ).readlines(), None, asDict=True, appendTo=l2, lax=True, tag=m) 212 k = { '3hr':'3h', '6hr':'6h' }.get( t,t ) 213 l1 = ms.scan_table( open( base + '/cordex_vocabs/mip/CORDEX_%s' % k ).readlines(), None, asDict=True) 214 ccm = True 215 216 cc.comp( l1, l2, checkCellMethods=ccm, tag=t ) 217 218 for tab in ['3hr','6hr','day','mon','sem','fx']: 219 ms = mipTableScan() 220 print 'Validating table %s ' % tab 221 print eeee[tab].keys() 222 c = comp( snl,snla=snla, ec1=eeee[tab]) 223 validate(tab,c) 133 224 -
FCC2/trunk/source/fcc_utils.py
r54 r55 1 import string, os, re, stat 1 import string, os, re, stat, sys 2 2 3 3 ncdumpCmd = 'ncdump' 4 4 ncdumpCmd = '/usr/local/5/bin/ncdump' 5 5 ## 6 7 6 8 7 class mipTableScan: … … 17 16 def scan_table(self,ll,log,asDict=False,appendTo=None,lax=False,tag=None): 18 17 19 lll = map( string.strip, ll ) 20 ssss = string.join( lll, ':::' ) 21 vitems = string.split( ssss, ':::variable_entry:' )[1:] 18 lll0 = map( string.strip, ll ) 19 lll = [] 20 for l in lll0: 21 if len(l) != 0: 22 if l[0] != '!': 23 lll.append(string.split(l,'!')[0]) 24 sll = [] 25 sll.append( ['header',[]] ) 26 for l in lll: 27 k = string.split( l, ':' )[0] 28 if k in ['variable_entry','axis_entry']: 29 sll.append( [k,[]] ) 30 sll[-1][1].append(l) 31 32 eee = [] 33 for s in sll: 34 if s[0] == 'variable_entry': 35 bits = string.split(s[1][0],':') 36 assert len(bits) == 2, 'Can not unpack: %s' % str(s[1]) 37 k,var = map( string.strip, string.split(s[1][0],':') ) 38 aa = {'standard_name':None, 'long_name':None,'units':None,'cell_methods':None } 39 ds = 'scalar' 40 for l in s[1][1:]: 41 bits = string.split(l,':') 42 k = string.strip(bits[0]) 43 v = string.strip( string.join( bits[1:], ':' ) ) 44 if k == 'dimensions': 45 ds = string.split(v) 46 else: 47 aa[k] = v 48 eee.append( (var,ds,aa,tag) ) 49 50 51 checkOldMethod = False 52 if checkOldMethod: 53 ssss = string.join( lll, ':::' ) 54 vitems = string.split( ssss, ':::variable_entry:' )[1:] 22 55 23 ee = [] 24 for i in vitems: 25 b1 = string.split( i, ':::')[0] 26 var = string.strip( b1 ) 27 aa = {} 28 for v in self.vats: 29 mm = self.re_vats[v].findall(i) 56 ee = [] 57 for i in vitems: 58 b1 = string.split( i, ':::')[0] 59 var = string.strip( b1 ) 60 aa = {} 61 for v in self.vats: 62 mm = self.re_vats[v].findall(i) 63 if len(mm) == 1: 64 aa[v] = string.strip(mm[0]) 65 else: 66 aa[v] = 'None' 67 68 mm = self.re_cmor_mip2.findall( i ) 30 69 if len(mm) == 1: 31 aa[v] = string.strip(mm[0]) 70 ds = string.split( string.strip(mm[0]) ) 71 elif len(mm) == 0: 72 ds = 'scalar' 32 73 else: 33 aa[v] = 'None' 34 35 mm = self.re_cmor_mip2.findall( i ) 36 if len(mm) == 1: 37 ds = string.split( string.strip(mm[0]) ) 38 elif len(mm) == 0: 39 ds = 'scalar' 40 else: 41 if log != None: 42 log.warn( 'Mistake?? in scan_table %s' % str(mm) ) 43 ds = mm 44 raise 'Mistake?? in scan_table %s' % str(mm) 45 ee.append( (var,ds,aa,tag) ) 74 if log != None: 75 log.warn( 'Mistake?? in scan_table %s' % str(mm) ) 76 ds = mm 77 raise 'Mistake?? in scan_table %s' % str(mm) 78 ee.append( (var,ds,aa,tag) ) 79 80 for k in range(len(ee) ): 81 if ee[k][0:2] == eee[k][0:2] and ee[k][2]['standard_name'] == eee[k][2]['standard_name'] and ee[k][2]['long_name'] == eee[k][2]['long_name']: 82 print 'OK:::', ee[k] 83 else: 84 print 'DIFF: ',ee[k],eee[k] 85 46 86 if not asDict: 47 return tuple( ee )87 return tuple( eee ) 48 88 else: 49 89 ff = {} 50 for l in ee :90 for l in eee: 51 91 ff[l[0]] = ( l[1], l[2], l[3] ) 52 92 if appendTo != None: 53 93 for k in ff.keys(): 94 assert ff[k][1].has_key( 'standard_name' ), 'No standard name in %s:: %s' % (k,str(ff[k][1].keys())) 54 95 if appendTo.has_key(k): 55 96 if lax and ff[k][1]['standard_name'] != appendTo[k][1]['standard_name']: -
FCC2/trunk/work/cordex_vocabs/mip/CORDEX_3h
r45 r55 7 7 cf_version: 1.4 ! version of CF that output conforms to 8 8 project_id: CORDEX ! project id 9 table_date: Apr2013 ! date this table was constructed9 table_date: Sept 2013 ! date this table was constructed 10 10 11 11 missing_value: 1.e20 ! value used to indicate a missing value … … 16 16 product: output 17 17 ! CMIP5's Table adapted for CORDEX 18 required_global_attributes: creation_date tracking_id forcing model_id contact institute_id ! space separated required global attribute 19 20 forcings: N/A Nat Ant GHG SA 18 required_global_attributes: creation_date tracking_id model_id contact institute_id ! space separated required global attribute 21 19 22 20 expt_id_ok: 'Evaluation run with reanalysis forcing' 'evaluation' … … 45 43 !---------------------------------- 46 44 out_name: lon 47 valid_min: -180.048 valid_max: +180.049 45 stored_direction: increasing 50 46 type: double … … 212 208 213 209 long_name: Near-Surface Air Temperature 214 comment: daily-mean near-surface (usually, 2 meter) air temperature.210 comment: mean near-surface (usually, 2 meter) air temperature. 215 211 !---------------------------------- 216 212 ! Additional variable information: … … 339 335 cell_methods: time: point 340 336 341 long_name: Daily-MeanNear-Surface Wind Speed337 long_name: Near-Surface Wind Speed 342 338 comment: near-surface (usually, 10 meters) wind speed. 343 339 !---------------------------------- -
FCC2/trunk/work/cordex_vocabs/mip/CORDEX_6h
r45 r55 7 7 cf_version: 1.4 ! version of CF that output conforms to 8 8 project_id: CORDEX ! project id 9 table_date: Apr2013 ! date this table was constructed9 table_date: Sept 2013 ! date this table was constructed 10 10 11 11 missing_value: 1.e20 ! value used to indicate a missing value … … 15 15 product: output 16 16 ! CMIP5's Table adapted for CORDEX 17 required_global_attributes: creation_date tracking_id forcing model_id contact institute_id ! space separated required global attribute 18 19 forcings: N/A Nat Ant GHG SA 17 required_global_attributes: creation_date tracking_id model_id contact institute_id ! space separated required global attribute 20 18 21 19 expt_id_ok: 'Evaluation run with reanalysis forcing' 'evaluation' … … 44 42 !---------------------------------- 45 43 out_name: lon 46 valid_min: -180.047 valid_max: +180.048 44 stored_direction: increasing 49 45 type: double … … 268 264 269 265 !============ 266 axis_entry: p220 267 !============ 268 !---------------------------------- 269 ! Axis attributes: 270 !---------------------------------- 271 standard_name: air_pressure 272 units: Pa 273 axis: Z ! X, Y, Z, T (default: undeclared) 274 positive: down ! up or down (default: undeclared) 275 long_name: pressure 276 !---------------------------------- 277 ! Additional axis information: 278 !---------------------------------- 279 out_name: plev 280 stored_direction: decreasing 281 type: double 282 value: 22000. ! of scalar (singleton) dimension 283 bounds_values: 44000. 0.0 ! of scalar (singleton) dimension bounds 284 must_have_bounds: no 285 !---------------------------------- 286 ! 287 288 289 !============ 290 axis_entry: p560 291 !============ 292 !---------------------------------- 293 ! Axis attributes: 294 !---------------------------------- 295 standard_name: air_pressure 296 units: Pa 297 axis: Z ! X, Y, Z, T (default: undeclared) 298 positive: down ! up or down (default: undeclared) 299 long_name: pressure 300 !---------------------------------- 301 ! Additional axis information: 302 !---------------------------------- 303 out_name: plev 304 stored_direction: decreasing 305 type: double 306 value: 56000. ! of scalar (singleton) dimension 307 bounds_values: 68000. 44000. ! of scalar (singleton) dimension bounds 308 must_have_bounds: no 309 !---------------------------------- 310 ! 311 312 313 !============ 314 axis_entry: p840 315 !============ 316 !---------------------------------- 317 ! Axis attributes: 318 !---------------------------------- 319 standard_name: air_pressure 320 units: Pa 321 axis: Z ! X, Y, Z, T (default: undeclared) 322 positive: down ! up or down (default: undeclared) 323 long_name: pressure 324 !---------------------------------- 325 ! Additional axis information: 326 !---------------------------------- 327 out_name: plev 328 stored_direction: decreasing 329 type: double 330 value: 84000. ! of scalar (singleton) dimension 331 bounds_values: 100000. 68000. ! of scalar (singleton) dimension bounds 332 must_have_bounds: no 333 !---------------------------------- 334 ! 335 336 !============ 270 337 variable_entry: evspsbl 271 338 !============ … … 304 371 units: kg m-2 s-1 305 372 cell_methods: time: mean 306 long_name: Potential evaporation373 long_name: Potential Evapotranspiration 307 374 comment: at surface; potential flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation) 308 375 !---------------------------------- … … 689 756 ! Variable attributes: 690 757 !---------------------------------- 691 standard_name: atmosphere_boundary_layer_t ickness758 standard_name: atmosphere_boundary_layer_thickness 692 759 units: m 693 760 cell_methods: time: point … … 716 783 units: kg m-2 717 784 cell_methods: time: point 718 719 long_name: Column water vapor content 785 long_name: Water Vapor Path 720 786 comment: vertically integrated for a column 721 787 !---------------------------------- … … 934 1000 ! Variable attributes: 935 1001 !---------------------------------- 936 standard_name: geopotential 1002 standard_name: geopotential_height 937 1003 units: m 938 1004 cell_methods: time: point … … 1088 1154 cell_methods: time: mean 1089 1155 1090 long_name: High Cloud Cover1156 long_name: High Level Cloud Fraction 1091 1157 comment: p<440 hPa 1092 1158 !---------------------------------- 1093 1159 ! Additional variable information: 1094 1160 !---------------------------------- 1095 dimensions: longitude latitude time 1161 dimensions: longitude latitude time p220 1096 1162 out_name: clh 1097 1163 type: real … … 1113 1179 cell_methods: time: mean 1114 1180 1115 long_name: M edium Cloud Cover1181 long_name: Mid Level Cloud Fraction 1116 1182 comment: 440 hPa < p < 680 hPa 1117 1183 !---------------------------------- 1118 1184 ! Additional variable information: 1119 1185 !---------------------------------- 1120 dimensions: longitude latitude time 1186 dimensions: longitude latitude time p560 1121 1187 out_name: clm 1122 1188 type: real … … 1140 1206 cell_methods: time: mean 1141 1207 1142 long_name: Low Cloud Cover1208 long_name: Low Level Cloud Fraction 1143 1209 comment: p>680 hPa 1144 1210 !---------------------------------- 1145 1211 ! Additional variable information: 1146 1212 !---------------------------------- 1147 dimensions: longitude latitude time 1213 dimensions: longitude latitude time p840 1148 1214 out_name: cll 1149 1215 type: real -
FCC2/trunk/work/cordex_vocabs/mip/CORDEX_day
r45 r55 7 7 cf_version: 1.4 ! version of CF that output conforms to 8 8 project_id: CORDEX ! project id 9 table_date: Apr2013 ! date this table was constructed9 table_date: Sept 2013 ! date this table was constructed 10 10 11 11 missing_value: 1.e20 ! value used to indicate a missing value … … 15 15 product: output 16 16 ! CMIP5's Table adapted for CORDEX 17 required_global_attributes: creation_date tracking_id forcing model_id contact institute_id ! space separated required global attribute 18 19 forcings: N/A Nat Ant GHG SA 17 required_global_attributes: creation_date tracking_id model_id contact institute_id ! space separated required global attribute 20 18 21 19 expt_id_ok: 'Evaluation run with reanalysis forcing' 'evaluation' … … 44 42 !---------------------------------- 45 43 out_name: lon 46 valid_min: -180.047 valid_max: +180.048 44 stored_direction: increasing 49 45 type: double … … 246 242 ! 247 243 244 !============ 245 axis_entry: p220 246 !============ 247 !---------------------------------- 248 ! Axis attributes: 249 !---------------------------------- 250 standard_name: air_pressure 251 units: Pa 252 axis: Z ! X, Y, Z, T (default: undeclared) 253 positive: down ! up or down (default: undeclared) 254 long_name: pressure 255 !---------------------------------- 256 ! Additional axis information: 257 !---------------------------------- 258 out_name: plev 259 stored_direction: decreasing 260 type: double 261 value: 22000. ! of scalar (singleton) dimension 262 bounds_values: 44000. 0.0 ! of scalar (singleton) dimension bounds 263 must_have_bounds: no 264 !---------------------------------- 265 ! 266 267 268 !============ 269 axis_entry: p560 270 !============ 271 !---------------------------------- 272 ! Axis attributes: 273 !---------------------------------- 274 standard_name: air_pressure 275 units: Pa 276 axis: Z ! X, Y, Z, T (default: undeclared) 277 positive: down ! up or down (default: undeclared) 278 long_name: pressure 279 !---------------------------------- 280 ! Additional axis information: 281 !---------------------------------- 282 out_name: plev 283 stored_direction: decreasing 284 type: double 285 value: 56000. ! of scalar (singleton) dimension 286 bounds_values: 68000. 44000. ! of scalar (singleton) dimension bounds 287 must_have_bounds: no 288 !---------------------------------- 289 ! 290 291 292 !============ 293 axis_entry: p840 294 !============ 295 !---------------------------------- 296 ! Axis attributes: 297 !---------------------------------- 298 standard_name: air_pressure 299 units: Pa 300 axis: Z ! X, Y, Z, T (default: undeclared) 301 positive: down ! up or down (default: undeclared) 302 long_name: pressure 303 !---------------------------------- 304 ! Additional axis information: 305 !---------------------------------- 306 out_name: plev 307 stored_direction: decreasing 308 type: double 309 value: 84000. ! of scalar (singleton) dimension 310 bounds_values: 100000. 68000. ! of scalar (singleton) dimension bounds 311 must_have_bounds: no 312 !---------------------------------- 313 ! 314 248 315 249 316 !============ … … 440 507 cell_methods: time: mean 441 508 442 long_name: Daily-MeanNear-Surface Wind Speed509 long_name: Near-Surface Wind Speed 443 510 comment: near-surface (usually, 10 meters) wind speed. 444 511 !---------------------------------- … … 724 791 cell_methods: time: mean 725 792 726 long_name: Potential evaporation793 long_name: Potential Evapotranspiration 727 794 comment: at surface; potential flux of water into the atmosphere due to conversion of both liquid and solid phases to vapor (from underlying surface and vegetation) 728 795 !---------------------------------- … … 1078 1145 cell_methods: time: maximum 1079 1146 1080 long_name: Daily Maximum Near-Surface Wind Speed Of Gust1147 long_name: Daily Maximum Near-Surface Wind Speed of Gust 1081 1148 comment: near-surface (usually, 10 meters) wind speed of gust 1082 1149 !---------------------------------- … … 1180 1247 ! Variable attributes: 1181 1248 !---------------------------------- 1182 standard_name: atmosphere_boundary_layer_t ickness1249 standard_name: atmosphere_boundary_layer_thickness 1183 1250 units: m 1184 1251 cell_methods: time: mean … … 1208 1275 cell_methods: time: mean 1209 1276 1210 long_name: Column water vapor content1277 long_name: Water Vapor Path 1211 1278 comment: vertically integrated for a column 1212 1279 !---------------------------------- … … 1474 1541 ! Variable attributes: 1475 1542 !---------------------------------- 1476 standard_name: eastward_wind _at1543 standard_name: eastward_wind 1477 1544 units: m s-1 1478 1545 cell_methods: time: mean … … 1579 1646 cell_methods: time: mean 1580 1647 1581 long_name: High Cloud Cover1648 long_name: High Level Cloud Fraction 1582 1649 comment: p<440 hPa 1583 1650 !---------------------------------- 1584 1651 ! Additional variable information: 1585 1652 !---------------------------------- 1586 dimensions: longitude latitude time 1653 dimensions: longitude latitude time p220 1587 1654 out_name: clh 1588 1655 type: real … … 1604 1671 cell_methods: time: mean 1605 1672 1606 long_name: M edium Cloud Cover1673 long_name: Mid Level Cloud Fraction 1607 1674 comment: 440 hPa < p < 680 hPa 1608 1675 !---------------------------------- 1609 1676 ! Additional variable information: 1610 1677 !---------------------------------- 1611 dimensions: longitude latitude time 1678 dimensions: longitude latitude time p560 1612 1679 out_name: clm 1613 1680 type: real … … 1631 1698 cell_methods: time: mean 1632 1699 1633 long_name: Low Cloud Cover1700 long_name: Low Level Cloud Fraction 1634 1701 comment: p>680 hPa 1635 1702 !---------------------------------- 1636 1703 ! Additional variable information: 1637 1704 !---------------------------------- 1638 dimensions: longitude latitude time 1705 dimensions: longitude latitude time p840 1639 1706 out_name: cll 1640 1707 type: real … … 1734 1801 cell_methods: time: mean 1735 1802 1736 long_name: S olid Precipitation1803 long_name: Snowfall Flux 1737 1804 comment: at surface; includes precipitation of all forms of water in the solid phase 1738 1805 !---------------------------------- -
FCC2/trunk/work/cordex_vocabs/mip/CORDEX_grids
r45 r55 2 2 3 3 4 cmor_version: 2. 0! version of CMOR that can read this table4 cmor_version: 2.6 ! version of CMOR that can read this table 5 5 cf_version: 1.4 ! version of CF that output conforms to 6 6 project_id: CORDEX ! project id 7 table_date: April2013 ! date this table was constructed7 table_date: Sept 2013 ! date this table was constructed 8 8 9 9 missing_value: 1.e20 ! value used to indicate a missing value … … 13 13 product: output 14 14 ! CMIP5's Table adapted for CORDEX 15 required_global_attributes: creation_date tracking_id forcing model_id parent_experiment_id branch_time ! space separated required global attribute 16 17 18 expt_id_ok: 'A1BfromIPSL' 19 expt_id_ok: 'A1BfromEH5' 20 expt_id_ok: '20CfromIPSL' 21 expt_id_ok: '20CfromEH5' 22 expt_id_ok: 'fromERAint' 23 expt_id_ok: 'IPSL-CM4-A1B' 24 expt_id_ok: 'IPSL-CM4-20C' 25 expt_id_ok: 'EH5-OM-A1B-3' 26 expt_id_ok: 'EH5-OM-20C-3' 27 expt_id_ok: 'ERAint' 28 15 required_global_attributes: creation_date tracking_id model_id conact institute_id ! space separated required global attribute 16 17 expt_id_ok: 'Evaluation run with reanalysis forcing' 'evaluation' 18 expt_id_ok: 'historical' 'historical' 19 expt_id_ok: 'RCP4.5' 'rcp45' 20 expt_id_ok: 'RCP8.5' 'rcp85' 21 expt_id_ok: 'AMIP' 'amip' 22 expt_id_ok: '10- or 30-year run initialized in year XXXX' 'decadalXXXX' 29 23 30 24 ! … … 229 223 !---------------------------------- 230 224 out_name: lon 231 valid_min: 0. ! CMOR will add n*360 to input values232 ! (where n is an integer) to ensure233 ! longitudes are in proper range.234 valid_max: 360. ! see above comment.235 225 !---------------------------------- 236 226 ! … … 249 239 !---------------------------------- 250 240 out_name: lat 251 valid_min: -90.252 valid_max: 90.253 241 !---------------------------------- 254 242 ! … … 265 253 !---------------------------------- 266 254 out_name: lon_vertices 267 valid_min: 0. ! CMOR will add n*360 to input values268 ! (where n is an integer) to ensure269 ! longitudes are in proper range.270 valid_max: 360. ! see above comment.271 255 !---------------------------------- 272 256 ! … … 283 267 !---------------------------------- 284 268 out_name: lat_vertices 285 valid_min: -90. 286 valid_max: 90. 287 !---------------------------------- 288 ! 289 ! 269 !---------------------------------- 270 ! 271 ! -
FCC2/trunk/work/cordex_vocabs/mip/CORDEX_mon
r45 r55 7 7 cf_version: 1.4 ! version of CF that output conforms to 8 8 project_id: CORDEX ! project id 9 table_date: Apr2013 ! date this table was constructed9 table_date: Sept 2013 ! date this table was constructed 10 10 11 11 missing_value: 1.e20 ! value used to indicate a missing value … … 15 15 product: output 16 16 ! CMIP5's Table adapted for CORDEX 17 required_global_attributes: creation_date tracking_id forcing model_id contact institute_id ! space separated required global attribute 18 19 forcings: N/A Nat Ant GHG SA 17 required_global_attributes: creation_date tracking_id model_id contact institute_id ! space separated required global attribute 20 18 21 19 expt_id_ok: 'Evaluation run with reanalysis forcing' 'evaluation' … … 44 42 !---------------------------------- 45 43 out_name: lon 46 valid_min: -180.047 valid_max: +180.048 44 stored_direction: increasing 49 45 type: double … … 282 278 standard_name: air_temperature 283 279 units: K 284 cell_methods: time: maximum 280 cell_methods: time: maximum within days time: mean over days 285 281 286 282 long_name: Daily Maximum Near-Surface Air Temperature … … 309 305 standard_name: air_temperature 310 306 units: K 311 cell_methods: time: minimum 307 cell_methods: time: minimum within days time: mean over days 312 308 313 309 long_name: Daily Minimum Near-Surface Air Temperature … … 414 410 cell_methods: time: mean 415 411 416 long_name: Daily-MeanNear-Surface Wind Speed412 long_name: Near-Surface Wind Speed 417 413 comment: near-surface (usually, 10 meters) wind speed. 418 414 !---------------------------------- … … 437 433 standard_name: wind_speed 438 434 units: m s-1 439 cell_methods: time: maximum 435 cell_methods: time: maximum within days time: mean over days 440 436 441 437 long_name: Daily Maximum Near-Surface Wind Speed -
FCC2/trunk/work/cordex_vocabs/mip/CORDEX_sem
r45 r55 7 7 cf_version: 1.4 ! version of CF that output conforms to 8 8 project_id: CORDEX ! project id 9 table_date: Apr2013 ! date this table was constructed9 table_date: Sept 2013 ! date this table was constructed 10 10 11 11 missing_value: 1.e20 ! value used to indicate a missing value … … 15 15 product: output 16 16 ! CMIP5's Table adapted for CORDEX 17 required_global_attributes: creation_date tracking_id forcing model_id contact institute_id ! space separated required global attribute 18 19 forcings: N/A Nat Ant GHG SA 17 required_global_attributes: creation_date tracking_id model_id contact institute_id ! space separated required global attribute 20 18 21 19 expt_id_ok: 'Evaluation run with reanalysis forcing' 'evaluation' … … 44 42 !---------------------------------- 45 43 out_name: lon 46 valid_min: -180.047 valid_max: +180.048 44 stored_direction: increasing 49 45 type: double … … 282 278 standard_name: air_temperature 283 279 units: K 284 cell_methods: time: maximum 280 cell_methods: time: maximum within days time: mean over days 285 281 286 282 long_name: Daily Maximum Near-Surface Air Temperature … … 309 305 standard_name: air_temperature 310 306 units: K 311 cell_methods: time: minimum 307 cell_methods: time: minimum within days time: mean over days 312 308 313 309 long_name: Daily Minimum Near-Surface Air Temperature … … 414 410 cell_methods: time: mean 415 411 416 long_name: Daily-MeanNear-Surface Wind Speed412 long_name: Near-Surface Wind Speed 417 413 comment: near-surface (usually, 10 meters) wind speed. 418 414 !---------------------------------- … … 437 433 standard_name: wind_speed 438 434 units: m s-1 439 cell_methods: time: maximum 435 cell_methods: time: maximum within days time: mean over days 440 436 441 437 long_name: Daily Maximum Near-Surface Wind Speed -
FCC2/trunk/work/cordex_vocabs/mip/md5s
r45 r55 1 {'CORDEX': {' Aday': {'April 2012': '42b03893870922ae3f344dbd0727bdfb'}, 'grids': {'April 2013': '31e0a9ce3bc27f9a60e759c4c44923b7', 'April 2012': '6fc08779ccf96e99265f79b999ff17a0'}, '6h': {'Apr 2013': '8e303385f115a043c3d67fc4ee073d69', 'April 2012': '2643fa5019c3df9410a0e15621808d55'}, '3h': {'Apr 2013': '546d4c49c698991a53dc09cf3aadd74c', 'April 2012': '8fb745982bf07388406cabe9e77173c6'}, 'mon': {'Apr 2013': 'a948e1cd93d8bdd4821cac73a90371c6', 'April 2012': 'ba5880e7ff89cde661d19b1dbee5358d'}, 'sem': {'Apr 2013': '6458254df0d61e4a5b8cb90daaed62c5'}, 'day': {'Apr 2013': '99fc0f2e0f16e32c8b1560980f7da0b3', 'April 2012': 'a6ce774c0efd45240dc303aeadc4c245'}, 'Lday': {'April 2012': 'edafa6c4c87821c699b69e2058f13d4b'}}}1 {'CORDEX': {'6h': {'Apr 2013': '8e303385f115a043c3d67fc4ee073d69', 'Sept 2013': 'ce05d7ae454b2aa7c972bf06f8d33553', 'April 2012': '2643fa5019c3df9410a0e15621808d55', 'July 2013': 'c3c9029bff9dc72df616522b22cd85de'}, 'Aday': {'April 2012': '42b03893870922ae3f344dbd0727bdfb'}, '3h': {'Apr 2013': '546d4c49c698991a53dc09cf3aadd74c', 'Sept 2013': 'a209327db72f47196b21cf7a4655ddaf', 'April 2012': '8fb745982bf07388406cabe9e77173c6', 'July 2013': 'b230ca47a4edcf1e5f9ec74e97410e36'}, 'mon': {'Apr 2013': 'a948e1cd93d8bdd4821cac73a90371c6', 'Sept 2013': '19e7695480f6ae3f17e425f20c21f259', 'April 2012': 'ba5880e7ff89cde661d19b1dbee5358d', 'July 2013': '1b9479f2893c6124ee1475c7c65e99af'}, 'grids': {'Sept 2013': 'e8e570a72315cbf3c63a15a7d95a8a57', 'April 2013': '414fe050a4a92cf5f1b93988aeada34d', 'April 2012': '6fc08779ccf96e99265f79b999ff17a0', 'July 2013': 'd9763b275ec6625a0d9e5c2501204aed'}, 'fx': {'June 2013': '489dc062568da69b55388920cdf0971d', 'Sept 2013': '5eabf12e1a78bb8153c03b023a311691'}, 'sem': {'Apr 2013': '6458254df0d61e4a5b8cb90daaed62c5', 'Sept 2013': '91300170940f9e61460869e1fe3a2b51', 'July 2013': '5ebff7dbba013efa7facaf4a1fb277c9'}, 'day': {'Apr 2013': '99fc0f2e0f16e32c8b1560980f7da0b3', 'Sept 2013': '7069478e2f896b0b9ed068eddc9737ec', 'April 2012': 'a6ce774c0efd45240dc303aeadc4c245', 'July 2013': 'ab426a0337d9d54a9a6813d143b8d1a8'}, 'Lday': {'April 2012': 'edafa6c4c87821c699b69e2058f13d4b'}}}
Note: See TracChangeset
for help on using the changeset viewer.