Changeset 922 for CMIP6dreqbuild


Ignore:
Timestamp:
22/12/16 17:47:40 (3 years ago)
Author:
mjuckes
Message:

misc to do with CF tables

Location:
CMIP6dreqbuild/trunk
Files:
9 added
1 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • CMIP6dreqbuild/trunk/docs/xlst_xdsSchemaGen.xml

    r799 r922  
    201201        <xsl:attribute name="name">ct__<xsl:value-of select="@label"/></xsl:attribute><xsl:text>&#xa;</xsl:text> 
    202202        <xs:sequence> 
    203            <xs:element name="item" maxOccurs="8000"> 
     203           <xs:element name="item" maxOccurs="12000"> 
    204204           <xsl:attribute name="type">aa:ct__<xsl:value-of select="@label"/>_vocabItem</xsl:attribute> 
    205205           </xs:element> 
  • CMIP6dreqbuild/trunk/src/workbook/inputs/cmv_duplication.csv

    r904 r922  
    14741474+       8bbb0aa8-4a5b-11e6-9cd2-ac72891c3257    19beb3b8-81b1-11e6-92de-ac72891c3257    aermonthly      snow cover fraction             aermonthly ((isd.003)) 
    14751475+               8bbb0aa8-4a5b-11e6-9cd2-ac72891c3257    LImon   Snow Area Fraction      Fraction of each grid cell that is occupied by snow that rests on land portion of cell. LImon ((isd.003)) 
     1476NEXT            1       mon     tntrs   f7ded7a0-562c-11e6-a2a4-ac72891c3257     
     1477+               01d3ff0c-c792-11e6-aa58-5404a60d96b5    aermonthly      Shortwave heating rate  shortwave heating rates aermonthly ((isd.003)) 
     1478+       01d3ff0c-c792-11e6-aa58-5404a60d96b5    8b89abe8-4a5b-11e6-9cd2-ac72891c3257    emMon   Shortwave heating rate          CFMIP [cfMon_3dstd_new] 
     1479NEXT            2       fx      areacella       f7dcac96-562c-11e6-a2a4-ac72891c3257     
     1480+               19bda16c-81b1-11e6-92de-ac72891c3257    aerfixed        area of grid cell               aerfixed ((isd.003)) 
     1481+       19bda16c-81b1-11e6-92de-ac72891c3257    f2faa9ac-c38d-11e6-abc1-1b922e5e1118    emFx    Atmosphere Grid-Cell Area       Atmosphere Grid-Cell Area       LS3MIP [fxLS3MIP] 
     1482NEXT            3       mon     tntrl   f7ded7a0-562c-11e6-a2a4-ac72891c3257     
     1483+               01d409fc-c792-11e6-aa58-5404a60d96b5    aermonthly      Longwave heating rate   longwave heating rates  aermonthly ((isd.003)) 
     1484+       01d409fc-c792-11e6-aa58-5404a60d96b5    8b89a3a0-4a5b-11e6-9cd2-ac72891c3257    emMon   Longwave heating rate           CFMIP [cfMon_3dstd_new] 
     1485NEXT            4       mon     ta      f7e94ce4-562c-11e6-a2a4-ac72891c3257     
     1486+               fda700b2-96ec-11e6-b81e-c9e268aff03a    aermonthlyz     Air Temperature         aermonthlyz ((isd.003)) 
     1487+       fda700b2-96ec-11e6-b81e-c9e268aff03a    9352ad42-c793-11e6-b166-5404a60d96b5    emMonZ  Air Temperature zonal mean; hence YZT   DynVar [DYVR_monthly_a] 
     1488NEXT            5       mon     fg13co2 f7ddef0c-562c-11e6-a2a4-ac72891c3257     
     1489+       6f69d2d8-9acb-11e6-b7ee-ac72891c3257    c91eef28-c5e8-11e6-84e6-5404a60d96b5    Omon    Surface Downward Flux of Abiotic 13CO2  Gas exchange flux of abiotic 13CO2 (positive into ocean)        Omon ((isd.003)) 
     1490+               6f69d2d8-9acb-11e6-b7ee-ac72891c3257    emMon   Surface Downward Flux of Abiotic 13CO2          C4MIP [C_Hist] 
     1491NEXT            6       mon     ua      f7e94ce4-562c-11e6-a2a4-ac72891c3257     
     1492+               f1f36fa2-aa70-11e6-9736-5404a60d96b5    aermonthlyz     Eastward Wind           aermonthlyz ((isd.003)) 
     1493+       f1f36fa2-aa70-11e6-9736-5404a60d96b5    9352a7d4-c793-11e6-b166-5404a60d96b5    emMonZ  Eastward Wind   zonal mean; hence YZT   DynVar [DYVR_monthly_a] 
     1494NEXT            7       mon     clc     f7ded7a0-562c-11e6-a2a4-ac72891c3257     
     1495+       baaa557c-e5dd-11e5-8482-ac72891c3257    01d319d4-c792-11e6-aa58-5404a60d96b5    aermonthly      Convective Cloud Area Fraction  Convective cloud fraction       aermonthly ((isd.003)) 
     1496+               baaa557c-e5dd-11e5-8482-ac72891c3257    cfMon   Convective Cloud Area Fraction          cfMon ((isd.003)) 
     1497NEXT            8       mon     snc     f7dcac96-562c-11e6-a2a4-ac72891c3257     
     1498+       bab7c2d4-e5dd-11e5-8482-ac72891c3257    19beb3b8-81b1-11e6-92de-ac72891c3257    aermonthly      snow cover fraction             aermonthly ((isd.003)) 
     1499+               bab7c2d4-e5dd-11e5-8482-ac72891c3257    LImon   Snow Area Fraction      Fraction of each grid cell that is occupied by snow that rests on land portion of cell. LImon ((isd.003)) 
     1500NEXT            9       mon     intdoc  f7ddef0c-562c-11e6-a2a4-ac72891c3257     
     1501+               c91e58f6-c5e8-11e6-84e6-5404a60d96b5    Omon    Dissolved Organic Carbon Content        Vertically integrated DOC (explicit pools only) Omon ((isd.003)) 
     1502+       c91e58f6-c5e8-11e6-84e6-5404a60d96b5    8b82fa32-4a5b-11e6-9cd2-ac72891c3257    emMon   Dissolved Organic Carbon Content                C4MIP [C_Ocean_T1] 
     1503NEXT            10      mon     clivi   f7dcac96-562c-11e6-a2a4-ac72891c3257     
     1504+               baaa9852-e5dd-11e5-8482-ac72891c3257    Amon    Ice Water Path  mass of ice water in the column divided by the area of the column (not just the area of the cloudy portion of the column). Includes precipitating frozen hydrometeors ONLY if the precipitating hydrometeor affects the calculation of radiative transfer in model.     Amon ((isd.003)) 
     1505+       baaa9852-e5dd-11e5-8482-ac72891c3257    01d4f5a6-c792-11e6-aa58-5404a60d96b5    aermonthly      ice water path          aermonthly ((isd.003)) 
     1506NEXT            11      fx      orog    f7dcac96-562c-11e6-a2a4-ac72891c3257     
     1507+       f2faae98-c38d-11e6-abc1-1b922e5e1118    19bda55e-81b1-11e6-92de-ac72891c3257    aerfixed        surface altitude        The surface called "surface" means the lower boundary of the atmosphere. Altitude is the (geometric) height above the geoid, which is the reference geopotential surface. The geoid is similar to mean sea level.       aerfixed ((isd.003)) 
     1508+               f2faae98-c38d-11e6-abc1-1b922e5e1118    emFx    surface altitude        surface altitude        LS3MIP [fxLS3MIP] 
     1509NEXT            1       day     mrro    f7de23aa-562c-11e6-a2a4-ac72891c3257     
     1510+       d2283c2e-4a9f-11e6-b84e-ac72891c3257    bab17cb2-e5dd-11e5-8482-ac72891c3257    day     Total Runoff    computed as the total runoff (including "drainage" through the base of the soil model) leaving the land portion of the grid cell divided by the land area in the grid cell.     day ((isd.003)) 
     1511+               d2283c2e-4a9f-11e6-b84e-ac72891c3257    emDay   Total Runoff    runoff_flux     LS3MIP [LWday] 
     1512NEXT            2       mon     nep     f7de23aa-562c-11e6-a2a4-ac72891c3257     
     1513+       d2290cee-4a9f-11e6-b84e-ac72891c3257    bab241c4-e5dd-11e5-8482-ac72891c3257    Lmon    Net Carbon Mass Flux out of Atmophere due to Net Ecosystem Productivity on Land.        Natural flux of CO2 (expressed as a mass flux of carbon) from the atmosphere to the land calculated as the difference between uptake associated will photosynthesis and the release of CO2 from the sum of plant and soil respiration and fire.  Positive flux is into the land.  emissions from natural fires + human ignition fires as calculated by the fire module of the DGVM, but excluding any CO2 flux from fire included in fLuc, defined below (CO2 Flux to Atmosphere from Land Use Change). Lmon ((isd.003)) 
     1514+               d2290cee-4a9f-11e6-b84e-ac72891c3257    emMon   Net Carbon Mass Flux out of Atmophere due to Net Ecosystem Productivity on Land.        Net Ecosystem Exchange  LS3MIP [LCmon] 
     1515NEXT            3       mon     fLuc    f7de23aa-562c-11e6-a2a4-ac72891c3257     
     1516+       d229196e-4a9f-11e6-b84e-ac72891c3257    baad9d4a-e5dd-11e5-8482-ac72891c3257    Lmon    Net Carbon Mass Flux into Atmosphere due to Land Use Change     human changes to land (excluding forest regrowth) accounting possibly for different time-scales related to fate of the wood, for example.       Lmon ((isd.003)) 
     1517+               d229196e-4a9f-11e6-b84e-ac72891c3257    emMon   Net Carbon Mass Flux into Atmosphere due to Land Use Change     Net Carbon Mass Flux into Atmosphere due to Land Use Change     LS3MIP [LCmon] 
     1518NEXT            4       day     snw     f7de23aa-562c-11e6-a2a4-ac72891c3257     
     1519+       d2288954-4a9f-11e6-b84e-ac72891c3257    bab820b2-e5dd-11e5-8482-ac72891c3257    day     Surface Snow Amount     the mass of surface snow on the land portion of the grid cell divided by the land area in the grid cell; reported as 0.0 where the land fraction is 0; excludes snow on vegetation canopy or on sea ice.        day ((isd.003)) 
     1520+               d2288954-4a9f-11e6-b84e-ac72891c3257    emDay   Surface Snow Amount     surface_snow_amount     LS3MIP [LWday] 
     1521NEXT            5       mon     cWood   f7de23aa-562c-11e6-a2a4-ac72891c3257     
     1522+       d229353e-4a9f-11e6-b84e-ac72891c3257    baa909c4-e5dd-11e5-8482-ac72891c3257    Lmon    Carbon Mass in Wood     including sapwood and hardwood. Lmon ((isd.003)) 
     1523+               d229353e-4a9f-11e6-b84e-ac72891c3257    emMon   Carbon Mass in Wood     Carbon Mass in Wood     LS3MIP [LCmon] 
     1524NEXT            6       mon     cMisc   f7de23aa-562c-11e6-a2a4-ac72891c3257     
     1525+       d2293d68-4a9f-11e6-b84e-ac72891c3257    baa8cd24-e5dd-11e5-8482-ac72891c3257    Lmon    Carbon Mass in Other Living Compartments on Land        e.g., labile, fruits, reserves, etc.    Lmon ((isd.003)) 
     1526+               d2293d68-4a9f-11e6-b84e-ac72891c3257    emMon   Carbon Mass in Other Living Compartments on Land        Carbon Mass in Other Living Compartments on Land        LS3MIP [LCmon] 
  • CMIP6dreqbuild/trunk/src/workbook/isd3b.py

    r904 r922  
    1717### 
    1818 
    19 import xlrd, xml, os, sys, string, shelve 
     19import xlrd, xml, os, sys, string, shelve, json 
    2020import utils_wb, uuid 
    2121import xml.dom, xml.dom.minidom 
     
    2727import ivg 
    2828 
     29mipTabMaps = json.load( open('inputs/mipTableMaps.txt', 'r' ) ) 
     30 
    2931#up: 
    3032varPositive = {'rlus':'up', 'rlut':'up', 'rlutcs':'up', 'hfls':'up', 'hfss':'up', 'mcu':'up', 'rsus':'up', 'rsut':'up', 'rsutcs':'up', 'rlds':'down', 'rsds':'down' } 
     
    3537## 
    3638refCmv = ivg.refCmv() 
    37 extRefCmvMode = 'r' 
    38 extRefCmv = shelve.open( 'sh/extRefCmv', 'r' ) 
     39extRefCmvMode = 'w' 
     40extRefCmv = shelve.open( 'sh/extRefCmv' ) 
    3941extRefCmvInv = {} 
    4042nd = 0 
     
    4345for k in extRefCmv: 
    4446  k1 = extRefCmv[k] 
     47  tab,var = k.split( '.' ) 
    4548  if k1 in extRefCmvInv: 
    46     print 'FATAL: Duplicate key in extRefCmv: %s [%s] %s' % (k,k1,extRefCmvInv[k1]) 
    47     sd.add(k) 
    48     sd2.add(extRefCmvInv[k1]) 
    49     nd += 1 
     49    tab2, var2 = extRefCmvInv[k1].split('.') 
     50    if var == var2 and (tab == mipTabMaps.get( tab2, None) or tab2 == mipTabMaps.get( tab, None) ): 
     51       pass 
     52    else: 
     53      print 'FATAL: Duplicate key in extRefCmv: %s [%s] %s' % (k,k1,extRefCmvInv[k1]) 
     54      sd.add(k) 
     55      sd2.add(extRefCmvInv[k1]) 
     56      nd += 1 
    5057  extRefCmvInv[k1] = k 
    5158assert nd == 0, 'FATAL ERRORS FOUND ... see standard output: %s, %s'  % (str( sd ), str( sd2 ) ) 
    5259 
     60extRefCmvMapped = {} 
    5361def chkRefCmv( ntab, lab, u0, msg ): 
    54               if ntab in refCmv.refUid[ntab] and lab in refCmv.refUid[ntab]: 
    55                      uid = refCmv.refUid[ntab][lab] 
    56                      print 'INFO.uid0.%s: uid  found in extRefCmv: %s, %s (%s) {%s}' % (msg,ntab,lab,uid,u0) 
     62              useExtRef = True 
     63              ##thistab = mipTabMaps.get( ntab, ntab ) 
     64              thistab = ntab 
     65              if thistab in refCmv.refUid[thistab] and lab in refCmv.refUid[thistab]: 
     66                     uid = refCmv.refUid[thistab][lab] 
     67                     print 'INFO.uid0.%s: uid  found in extRefCmv: %s, %s (%s) {%s}' % (msg,thistab,lab,uid,u0) 
    5768              else: 
    58                      kk = str( '%s.%s' % (ntab,lab) ) 
     69                     kk = str( '%s.%s' % (thistab,lab) ) 
    5970                     if kk in extRefCmv: 
    60                        uid = extRefCmv[kk] 
    61                        print 'INFO.uid.%s: uid found in extRefCmv: %s, %s (%s) {%s}' % (msg,ntab,lab,uid,u0) 
     71                       if useExtRef: 
     72                         uid = extRefCmv[kk] 
     73                         print 'INFO.uid.%s: uid found in extRefCmv: %s, %s (%s) {%s}' % (msg,thistab,lab,uid,u0) 
     74                         extRefCmvMapped[u0] = uid 
     75                       else: 
     76                         u1 = extRefCmv[kk] 
     77                         print 'INFO.uid.%s: uid in extRefCmv ignored: %s, %s (%s) {%s}' % (msg,thistab,lab,u1,u0) 
     78                         uid = u0 
    6279                     else: 
    6380                       if extRefCmvMode != 'r': 
    6481                         extRefCmv[kk] = u0 
    65                        print 'WARN.uid.%s: uid not found: %s, %s (%s)' % (msg,ntab,lab,u0) 
     82                       print 'WARN.uid.%s: uid not found: %s, %s (%s)' % (msg,thistab,lab,u0) 
    6683                       uid = u0 
    6784              return uid 
     
    7087siSurfFluxes = ['sidmasstranx', 'sidmasstrany', 'siforcecoriolx', 'siforcecorioly', 'siforcetiltx', 'siforcetilty', 'siforceintstrx', 'siforceintstry', 'sistrxdtop', 'sistrydtop', 'sistrxdbot', 'sistrydbot', 'siu', 'siv'] 
    7188oceanVars = ['fg13co2','fg14co2'] 
    72 realmTab = {'landice':['LImongre','LImonant','LIyrgre','LIyrant','LIfxgre','LIfxant'], 'atmos':['6hrLev','6hrPlev','6hrPevpt','em1hrclimmon','em3hr','em1hr','em3hrpt','emDayZ','emDaypt','emMonZ']} 
     89realmTab = {'landice':['LImongre','LImonant','LIyrgre','LIyrant','LIfxgre','LIfxant','ImonGre','ImonAnt','IyrGre','IyrAnt','IfxGre','IfxAnt'], 
     90              'atmos':['6hrLev','6hrPlev','6hrPevpt','em1hrclimmon','em3hr','em1hr','em3hrpt','emDayZ','emDaypt','emMonZ']} 
    7391## emYr, emMon, emFy, emMonZ .... need checking 
    7492knownRealmA = [ 'LS3MIP [LWday]', 'LS3MIP [LEday]', 'CFMIP [cf1hrClimMon]', 'HighResMIP [3hr_cloud]', 'CFMIP [cf3hr_sim_new]', 'C4MIP [L_3hr]', 'DAMIP [DAMIP_day]', 'DAMIP [DAMIP_3hr_p2]', 'DynVar [DYVR_daily_c]', 'PMIP [PMIP-6hr]', 'HighResMIP [1hrLev]'] 
     
    780798                else: 
    781799                  lab = tt.var 
     800                  if tt.out_name != tt.var: 
     801                    print 'WARN.outname.00001: out name issue.... ',tt.out_name,tt.var 
    782802                  if lab in {'*','include Oyr 3D tracers'}: 
    783803                    lab = '-copy-' 
     
    885905            d1 = {u'where land over land':(False,'area: mean where land over land'), \ 
    886906                  u'land':(False,'area: mean where land'), \ 
     907                  u'hourly max':(False,'area: mean time: mean within hours time: maximum over hours'), \ 
    887908                  u'grounded ice sheet':(True,'area: mean where grounded_ice_sheet'), \ 
    888909                  u'ice sheet':(True,'area: mean where ice_sheet'), \ 
     
    9831004                assert tt.group not in ['icesheetmon', 'icesheetyear','icesheetfx'], 'Unexpected tt.group: %s' % str(tt) 
    9841005                if tt.group in ['LImonant','LImongre','LIyrant','LIyrgre','LIfxant','LIfxgre']: 
     1006                  gr = 'g' 
     1007                  ntab = tt.group 
     1008                elif tt.group in ['ImonAnt','ImonGre','IyrAnt','IyrGre','IfxAnt','IfxGre']: 
    9851009                  gr = 'g' 
    9861010                  ntab = tt.group 
     
    13161340          cmet = msk 
    13171341        elif msk != '': 
    1318           cmet = msk + ' ' + cmet 
     1342          if "time:" in msk: 
     1343            print 'INFO.cmet.05005: using time: info in msk: ',msk,cmet 
     1344            cmet = msk 
     1345          else: 
     1346            cmet = msk + ' ' + cmet 
    13191347        kk += 1 
    13201348        label = 'str-b%3.3i' % kk 
     
    18011829                  thisd[kk[j]] = str( ll[j] ) 
    18021830              vid = str( ll[3] ) 
     1831              if vid in extRefCmvMapped: 
     1832                print 'INFO.isd005.0002: mapping vid: ',vid,extRefCmvMapped[vid] 
     1833                vid = extRefCmvMapped[vid] 
    18031834   
    18041835              print 'INFO.isd005.0001: ',thisl, uid, vgid 
  • CMIP6dreqbuild/trunk/src/workbook/ivg.py

    r904 r922  
    176176      sht = wb.sheet_by_name( 's1' ) 
    177177      r1 = [x.value for x in sht.row(0)] 
    178       assert r1 == self.hd, 'Headings of refStructure.xlsx do not match expected values' 
     178      assert r1 == self.hd, 'Headings of refStructure.xlsx do not match expected values: %s' % str(r1) 
    179179      print 'IMPORT REF 02: PASSED FIRST CHECK' 
    180180      inx = [self.hd.index(x) for x in ['time label', 'spatial label', 'odims', 'coords', 'cell_methods', u'cell_measures', 'flag_meanings'] ]  
  • CMIP6dreqbuild/trunk/srcMisc/dreq_consol.py

    r386 r922  
    266266          htmlline = string.replace( htmlline, u'\xb2', '2' ) 
    267267          htmlline = string.replace( htmlline, u'\xb3', '3' ) 
    268           self.oo.write( "<tr>%s</tr>" % str(htmlline) + '\n' ) 
     268          htmlline = string.replace( htmlline, u'\u201c', '"' ) 
     269          htmlline = string.replace( htmlline, u'\u201d', '"' ) 
     270          try: 
     271            self.oo.write( "<tr>%s</tr>" % str(htmlline) + '\n' ) 
     272          except: 
     273            print 'FAILED TO WRITE: ', htmlline 
     274            raise 
    269275 
    270276  def parseRQ(self): 
Note: See TracChangeset for help on using the changeset viewer.