Changeset 1811 in lmdz_wrf for trunk/tools/nc_var_tools.py


Ignore:
Timestamp:
Mar 19, 2018, 1:57:49 PM (7 years ago)
Author:
lfita
Message:

Fixing conflict

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r1810 r1811  
    1616import generic_tools as gen
    1717import subprocess as sub
     18import module_ForDef as fdef
    1819
    1920####### Contents:
     
    174175infmsg = 'INFORMATION -- information -- INFORMATION -- information'
    175176
     177# Which resolution has been defined for Fortran reals?
     178if type(fdef.module_definitions.onerk) == type(np.float64):
     179    isFR64 = True
     180else:
     181    isFR64 = False
     182print 'Lluis oneRK:', type(fdef.module_definitions.onerk), 'isFR64:', isFR64
     183
    176184## Constants
    177185# Radius of the Earth (m)
     
    1805118059def pinterp(values, ncfile, variables):
    1805218060    """ Function to vertically interpolate using subroutines from the p_interp.F90 NCAR program
     18061      Using fortran codes: module_generic.F90
    1805318062      values= [interplevs],[linloginterp],[extrap]
    1805418063        [interplevs]: ':' separated list of pressure values to interpolate [Pa] (decreassing in Pa)
     
    1806018069      variables = ',' separated list of names of variables to interpolate ('all', fo all 4D-atmospheric variables)
    1806118070        'WRFght': for WRF geopotential height
    18062         'WRFhus': for WRF specific humidity
    1806318071        'WRFrh': for WRF relative humidity
    1806418072        'WRFt': for WRF temperature
    1806518073        'WRFu': for WRF x-wind de-staggered
    1806618074        'WRFv': for WRF y-wind de-staggered
    18067         'WRFw': for WRF z-wind de-staggered
    1806818075    """
    1806918076    import module_ForInt as fin
     
    1818118188
    1818218189        pres0 = ovar1[:] + ovar2[:]
    18183         pres = pres0.astype('float64')
     18190        if isFR64:
     18191            pres = pres0.astype('float64')
     18192        else:
     18193            pres = pres0.astype('float')
    1818418194
    1818518195        dimx = pres.shape[3]
     
    1819318203    elif modname == 'LMDZ':
    1819418204        ovar1 = onc.variables['pres']
    18195         pres = ovar1[:].astype('float64')
     18205        if isFR64:
     18206            pres = ovar1[:].astype('float64')
     18207        else:
     18208            pres = ovar1[:].astype('float')
    1819618209        dimx = pres.shape[3]
    1819718210        dimy = pres.shape[2]
     
    1820318216    elif modname == 'cfLMDZ':
    1820418217        ovar1 = onc.variables['p']
    18205         pres = ovar1[:].astype('float64')
     18218        if isFR64:
     18219            pres = ovar1[:].astype('float64')
     18220        else:
     18221            pres = ovar1[:].astype('float')
    1820618222        dimx = pres.shape[3]
    1820718223        dimy = pres.shape[2]
     
    1821318229    else:
    1821418230        ovar1 = onc.variables['p']
    18215         pres = ovar1[:].astype('float64')
     18231        if isFR64:
     18232            pres = ovar1[:].astype('float64')
     18233        else:
     18234            pres = ovar1[:].astype('float')
    1821618235        dimx = pres.shape[3]
    1821718236        dimy = pres.shape[2]
     
    1822718246    if modname == 'WRF':
    1822818247        ovar1 = onc.variables['PSFC']
    18229         psfc = ovar1[:].astype('float64')
     18248        if isFR64:
     18249            psfc = ovar1[:].astype('float64')
     18250        else:
     18251            psfc = ovar1[:].astype('float')
    1823018252    elif modname == 'LMDZ' or modname == 'cfLMDZ':
    1823118253        ovar1 = onc.variables['psol']
    18232         psfc = ovar1[:].astype('float64')
     18254        if isFR64:
     18255            psfc = ovar1[:].astype('float64')
     18256        else:
     18257            psfc = ovar1[:].astype('float')
    1823318258    else:
    1823418259        ovar1 = onc.variables['ps']
    18235         psfc = ovar1[:].astype('float64')
     18260        if isFR64:
     18261            psfc = ovar1[:].astype('float64')
     18262        else:
     18263            psfc = ovar1[:].astype('float')
    1823618264
    1823718265    # geopotential height
     
    1824318271        unstg[1] = unstg[1] - 1
    1824418272        geop = np.zeros(tuple(unstg), dtype=np.float)
    18245         geop = 0.5*(geop0[:,1:dimz+1,:,:] + geop0[:,0:dimz,:,:]).astype('float64')
     18273        if isFR64:
     18274            geop = 0.5*(geop0[:,1:dimz+1,:,:] + geop0[:,0:dimz,:,:]).astype('float64')
     18275        else:
     18276            geop = 0.5*(geop0[:,1:dimz+1,:,:] + geop0[:,0:dimz,:,:]).astype('float')
    1824618277    elif modname == 'LMDZ' or modname == 'cfLMDZ':
    1824718278        ovar1 = onc.variables['geop']
    18248         geop = ovar1[:].astype('float64')
     18279        if isFR64:
     18280            geop = ovar1[:].astype('float64')
     18281        else:
     18282            geop = ovar1[:].astype('float')
    1824918283    else:
    1825018284        ovar1 = onc.variables['z']
    18251         geop = ovar1[:].astype('float64')
     18285        if isFR64:
     18286            geop = ovar1[:].astype('float64')
     18287        else:
     18288            geop = ovar1[:].astype('float')
    1825218289
    1825318290    # terrain height
    1825418291    if modname == 'WRF':
    1825518292        ovar1 = onc.variables['HGT']
    18256         hgt = ovar1[0,:,:].astype('float64')
     18293        if isFR64:
     18294            hgt = ovar1[0,:,:].astype('float64')
     18295        else:
     18296            hgt = ovar1[0,:,:].astype('float')
    1825718297    elif modname == 'LMDZ' or modname == 'cfLMDZ':
    1825818298        grav = 9.81
    1825918299        ovar1 = onc.variables['phis']
    18260         hgt = (ovar1[0,:,:]/grav).astype('float64')
     18300        if isFR64:
     18301            hgt = (ovar1[0,:,:]/grav).astype('float64')
     18302        else:
     18303            hgt = (ovar1[0,:,:]/grav).astype('float')
    1826118304    else:
    1826218305        ovar1 = onc.variables['orog']
    18263         hgt = ovar1[:].astype('float64')
     18306        if isFR64:
     18307            hgt = ovar1[:].astype('float64')
     18308        else:
     18309            hgt = ovar1[:].astype('float')
    1826418310
    1826518311    # water vapour mixing ratio
    1826618312    if modname == 'WRF':
    1826718313        ovar1 = onc.variables['QVAPOR']
    18268         qv = ovar1[:].astype('float64')
     18314        if isFR64:
     18315            qv = ovar1[:].astype('float64')
     18316        else:
     18317            qv = ovar1[:].astype('float')
    1826918318    elif modname == 'LMDZ' or modname == 'cfLMDZ':
    1827018319        ovar1 = onc.variables['ovap']
    18271         qv = ovar1[:].astype('float64')
     18320        if isFR64:
     18321            qv = ovar1[:].astype('float64')
     18322        else:
     18323            qv = ovar1[:].astype('float')
    1827218324    else:
    1827318325        ovar1 = onc.variables['hus']
    18274         qv = ovar1[:].astype('float64')
     18326        if isFR64:
     18327            qv = ovar1[:].astype('float64')
     18328        else:
     18329            qv = ovar1[:].astype('float')
    1827518330
    1827618331    # temperature
     
    1828218337        ovar10 = onc.variables['T']
    1828318338        var10 = ovar10[:]
    18284         ovar1 = (var10).astype('float64')
     18339        if isFR64:
     18340            ovar1 = (var10).astype('float64')
     18341        else:
     18342            ovar1 = (var10).astype('float')
    1828518343        temp0 = (ovar1[:]+300.)*(pres[:]/p0)**RCP
    18286         temp = temp0.astype('float64')
     18344        if isFR64:
     18345            temp = temp0.astype('float64')
     18346        else:
     18347            temp = temp0.astype('float')
    1828718348    elif modname == 'LMDZ' or modname == 'cfLMDZ':
    1828818349        ovar1 = onc.variables['temp']
    18289         temp = ovar1[:].astype('float64')
     18350        if isFR64:
     18351            temp = ovar1[:].astype('float64')
     18352        else:
     18353            temp = ovar1[:].astype('float')
    1829018354    else:
    1829118355        ovar1 = onc.variables['ta']
    18292         temp = ovar1[:].astype('float64')
     18356        if isFR64:
     18357            temp = ovar1[:].astype('float64')
     18358        else:
     18359            temp = ovar1[:].astype('float')
    1829318360
    1829418361    onewnc = NetCDFFile(ofile, 'w')
     
    1835118418                isgeop = True
    1835218419                varattrs = gen.variables_values('WRFght')
    18353                 CFvn = varattrs[0]
    18354                 newvarattr['standard_name'] = varattrs[1]
    18355                 newvarattr['long_name'] = varattrs[4].replace('|',' ')
    18356                 newvarattr['units'] = varattrs[5]
    18357             elif vn == 'WRFhus':
    18358                 # relative humidity
    18359                 varin = qv/(1.+qv)
    18360                 isgeop = False
    18361                 varattrs = gen.variables_values('hus')
    1836218420                CFvn = varattrs[0]
    1836318421                newvarattr['standard_name'] = varattrs[1]
     
    1840918467                newvarattr['long_name'] = varattrs[4].replace('|',' ')
    1841018468                newvarattr['units'] = varattrs[5]
    18411             elif vn == 'WRFw':
    18412                 ovarin = onc.variables['W']
    18413                 print infmsg
    18414                 print '  ' + fname + ': De-staggering z-wind variable !!'
    18415                 print '    from:', ovarin.shape, 'to', (dimt, dimz, dimy, dimx)
    18416                 varin = np.zeros((dimt, dimz, dimy, dimx), dtype=np.float64)
    18417                 varin[:] = 0.5*(ovarin[:,0:dimz,:,:] + ovarin[:,1:dimz+1,:,:])
    18418                 isgeop = False
    18419                 varattrs = gen.variables_values('wa')
    18420                 CFvn = varattrs[0]
    18421                 newvarattr['standard_name'] = varattrs[1]
    18422                 newvarattr['long_name'] = varattrs[4].replace('|',' ')
    18423                 newvarattr['units'] = varattrs[5]
    1842418469            elif vn == 'pres':
    1842518470                varin = pres
Note: See TracChangeset for help on using the changeset viewer.