Changeset 224 in lmdz_wrf for trunk


Ignore:
Timestamp:
Jan 15, 2015, 6:38:25 PM (10 years ago)
Author:
lfita
Message:

Working version up to the filling. Now problems with dimensions of the variables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/iniaqua.py

    r216 r224  
    1919filekinds = ['CF', 'LMDZ', 'WRF']
    2020
    21 ## g.e. # iniaqua.py -d 32,32,39 -p hybdrid -o WRF -t 19791201000000 -z tropo -q 2
     21## e.g. # iniaqua.py -d 32,32,39 -p hybdrid -o WRF -t 19791201000000 -z tropo -q 2
    2222def fxy(dx, dy):
    2323    """!
     
    25552555      extrattrns= list for the specific values for the variables' extra attributes
    25562556    """
     2557    fname = 'generic_NetCDFile'
    25572558
    25582559# Creation of dimensions
     
    25702571    for varn in kvarns.keys():
    25712572        varvals = kvarns[varn]
    2572         dimsvar = []
    2573         for dimn in varvals[1]:
    2574             dimsvar.append(kdimns[dimn])
    2575 
    2576         if varvals[5] is not None:
    2577             nerwvar = ncobj.createVariable(varvals[0], 'f4', tuple(dimsvar),         \
    2578               fill_value=np.float(varvals[5]))
    2579         else:
    2580             newvar = ncobj.createVariable(varvals[0], 'f4', tuple(dimsvar))
     2573        if varvals[0] is not None:
     2574            dimsvar = []
     2575            for dimn in varvals[1]:
     2576                if dimn == 'DateStrLen':
     2577                    dimsvar.append(dimn)
     2578                else:
     2579                    dimsvar.append(kdimns[dimn])
     2580
     2581            if varvals[5] is not None:
     2582                nerwvar = ncobj.createVariable(varvals[0], 'f4', tuple(dimsvar),     \
     2583                  fill_value=np.float(varvals[5]))
     2584            else:
     2585                newvar = ncobj.createVariable(varvals[0], 'f4', tuple(dimsvar))
    25812586
    25822587# Attributes
    2583         for iattr in range(len(stdattrns)):
    2584             attrn = stdattrns[iattr]
    2585             if kattrns[attrn] is not None:
    2586                 newvar.setncattr(kattrns[attrn], varvals[2+iattr])
     2588            attrns = stdattrns.keys()
     2589            for iattr in range(len(attrns)):
     2590                attrn = attrns[iattr]
     2591                if stdattrns[attrn] is not None and varvals[4+iattr] is not None:
     2592                    newvar.setncattr(stdattrns[attrn], varvals[4+iattr])
    25872593
    25882594# Extra attributes
    2589         for iattr in range(len(extrattrns)):
    2590             attrn = extrrattrns[iattr]
    2591             if kfile == 'LMDZ':
    2592                 if attrn == 'coordinates':
    2593                     attrv = ''
    2594                     for din in varvals[1]:
    2595                         attrv = attrv + kdimns[din] + ' '
    2596             elif kfile == 'WRF':
    2597                 if attrn == 'FieldType':
    2598                     attrv = '104'
    2599                 elif attrn == 'MemoryOrder':
    2600                     attrv = ''
    2601                     Ndims = len(varvals[1])
    2602                     for idim in range(Ndims,0,-1):
    2603                         if varvals[1][idim] != 'T':
    2604                             attrv = attrv + varvals[1][idim].uppercase
    2605                 elif attrn == 'stagger':
    2606                     staggeredvars = {}
    2607                     staggeredvars['U'] = 'X'
    2608                     staggeredvars['V'] = 'Y'
    2609                     staggeredvars['PH'] = 'Z'
    2610 
    2611                     if ncvar.searchInlist(staggeredvars.keys(),varvals[0]):
    2612                         attrv = staggeredvars[vavals[0]]
    2613 
    2614             newvar.setncattr(extrattrns[iattr], attrv)
    2615 
    2616         newvar.sync()
     2595            for iattr in range(len(extrattrns)):
     2596                attrn = extrattrns[iattr]
     2597                if kfile == 'LMDZ':
     2598                    if attrn == 'coordinates':
     2599                        attrv = ''
     2600                        for din in varvals[1]:
     2601                            attrv = attrv + kdimns[din] + ' '
     2602                elif kfile == 'WRF':
     2603                    if attrn == 'FieldType':
     2604                        attrv = '104'
     2605                    elif attrn == 'MemoryOrder':
     2606                        attrv = ''
     2607                        Ndims = len(varvals[1])
     2608                        for idim in range(Ndims-1,0,-1):
     2609                            if varvals[1][idim] != 't':
     2610                                attrv = attrv + varvals[1][idim].upper()
     2611                    elif attrn == 'stagger':
     2612                        staggeredvars = {}
     2613                        staggeredvars['U'] = 'X'
     2614                        staggeredvars['V'] = 'Y'
     2615                        staggeredvars['PH'] = 'Z'
     2616   
     2617                        if ncvar.searchInlist(staggeredvars.keys(),varvals[0]):
     2618                            attrv = staggeredvars[varvals[0]]
     2619                        else:
     2620                            attrv = ''
     2621   
     2622                newvar.setncattr(extrattrns[iattr], attrv)
     2623   
     2624            ncobj.sync()
    26172625
    26182626    return
     
    27492757# Vertical profile
    27502758tetajl =  np.zeros((dimz, dimy+1, dimx), dtype=np.float)
    2751 theta = np.zeros((dimy+1, dimx+1), dtype=np.float)
    2752 thetarappel = np.zeros((dimz, dimy+1, dimx+1), dtype=np.float)
     2759#theta = np.zeros((dimy+1, dimx+1), dtype=np.float)
     2760#thetarappel = np.zeros((dimz, dimy+1, dimx+1), dtype=np.float)
     2761theta = np.zeros((dimy, dimx), dtype=np.float)
     2762thetarappel = np.zeros((dimz, dimy, dimx), dtype=np.float)
    27532763
    27542764for l in range (dimz):
     
    28242834
    28252835# bulk initialization of tracers
    2826 print 'Lluis nqtot:',nqtot
    28272836q = np.zeros((dimz, dimy, dimx, nqtot), dtype=np.float)
    28282837
     
    28582867for varn in ncf.variables.keys():
    28592868    varobj = ncf.variables[varn]
    2860     if varn == 'lon': varobj[:] = lon
    2861     elif varn == 'lat': varobj[:] = lat
    2862     elif varn == 'lev': varobj[:] = presnivs
    2863     elif varn == 'time': varobj[:] = timev
    2864     elif varn == 'temp': varobj[0,:,:,:] = theta[:]
    2865     elif varn == 'tsfc': varobj[:] = theta[0,:,:]
    2866     elif varn == 'u10m': varobj[:] = ucov[0,:,:]
    2867     elif varn == 'v10m': varobj[:] = vcov[0,:,:]
    2868     elif varn == 'u': varobj[0,:,:,:] = ucov[:]
    2869     elif varn == 'v': varobj[0,:,:,:] = vcov[:]
    2870     elif varn == 'zsfc': varobj[0,:,:] = phisfc[:]
    2871     elif varn == 'geopot': varobj[0,:,:] = phisall[:]
    2872     elif varn == 'psfc': varobj[0,:,:] = press[:]
    2873     elif varn == 'pres': varobj[0,:,:,:] = pres[:]
    2874     elif varn == 'H2Ov': varobj[0,:,:,:] = q[:,:,:0]
    2875     elif varn == 'H2Ol': varobj[0,:,:,:] = q[:,:,:1]
    2876 
     2869    if varn == filevarns['lon'][0]: varobj[:] = lon
     2870    elif varn == filevarns['lat'][0]: varobj[:] = lat
     2871    elif varn == filevarns['lev'][0]: varobj[:] = presnivs
     2872    elif varn == filevarns['time'][0]: varobj[:] = timev
     2873    elif varn == filevarns['temp'][0]:
     2874        print 'Lluis shapes varobj:',varobj.shape,'theta:',theta.shape
     2875        varobj[0,:,:,:] = theta[:]
     2876    elif varn == filevarns['tsfc'][0]: varobj[:] = theta[0,:,:]
     2877    elif varn == filevarns['u10m'][0]: varobj[:] = ucov[0,:,:]
     2878    elif varn == filevarns['v10m'][0]: varobj[:] = vcov[0,:,:]
     2879    elif varn == filevarns['u'][0]: varobj[0,:,:,:] = ucov[:]
     2880    elif varn == filevarns['v'][0]: varobj[0,:,:,:] = vcov[:]
     2881    elif varn == filevarns['zsfc'][0]: varobj[0,:,:] = phisfc[:]
     2882    elif varn == filevarns['geopot'][0]: varobj[0,:,:] = phisall[:]
     2883    elif varn == filevarns['psfc'][0]: varobj[0,:,:] = press[:]
     2884    elif varn == filevarns['pres'][0]: varobj[0,:,:,:] = pres[:]
     2885    elif varn == filevarns['H2Ov'][0]: varobj[0,:,:,:] = q[:,:,:0]
     2886    elif varn == filevarns['H2Ol'][0]: varobj[0,:,:,:] = q[:,:,:1]
    28772887
    28782888ncf.sync()
Note: See TracChangeset for help on using the changeset viewer.