Changeset 1817 in lmdz_wrf


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

Fixing `pinterp' on y-axis slices

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r1816 r1817  
    1841818418    print '  ' + fname + ' interpolating at pressure levels _______'
    1841918419    print '     ', interplevs
     18420    tsaid = False
     18421    ysaid = False
    1842018422    for vn in varns:
    1842118423        print "      '" + vn + "' ..."
     
    1852018522                dimtfrac = 5
    1852118523                varinterp = np.zeros(tuple([dimx,dimy,len(interplevs),dimtfrac]), dtype=np.float)
    18522                 print warnmsg
    18523                 print '  ' + fname + ': variable to interpolate:', varin.shape,      \
    18524                   'too big!!'
    18525                 print '    p-interpolation will be done by time-slices of 5 time-steps'
    18526                 print range(0,dimtfrac*int(dimt/dimtfrac),dimtfrac)
     18524                if not tsaid:
     18525                    print warnmsg
     18526                    print '  ' + fname + ': variable to interpolate:', varin.shape,  \
     18527                      'too big!!'
     18528                    print '    p-interpolation will be done by time-slices of 5 time-steps'
     18529                    print range(0,dimtfrac*int(dimt/dimtfrac),dimtfrac)
    1852718530            else:
    1852818531                dimtfrac = dimt
     
    1853318536                if np.prod([tend-tini+1, dimz, dimx, dimy]) > 150*150*39:
    1853418537                    dimyfrac = 50
    18535                     print warnmsg
    18536                     print '  ' + fname + ': variable to interpolate:', varin.shape,      \
    18537                       'too big!!'
    18538                     print '    p-interpolation will be done by yaxis-slices of 10 grid-points'
    18539                     print range(0,dimyfrac*int(dimy/dimyfrac),dimyfrac)
     18538                    if not ysaid:
     18539                        print warnmsg
     18540                        print '  ' + fname + ': variable to interpolate:', varin.shape,\
     18541                          'too big!!'
     18542                        print '    p-interpolation will be done by yaxis-slices of', \
     18543                          dimyfrac,' 10 grid-points'
     18544                        print range(0,dimyfrac*int(dimy/dimyfrac),dimyfrac)
    1854018545                    for iyy in range(0,dimyfrac*int(dimy/dimyfrac),dimyfrac):
    1854118546                        yini = iyy
     
    1855718562                        newvar[tini:tend,:,yini:yend,:] = varinterp.transpose()
    1855818563                    if dimyfrac != dimy and yend != dimy-1:
    18559                         print '    finishing time-splitting:', yend, ', ', dimy
     18564                        if not ysaid:
     18565                            print '    finishing yaxis-splitting:', yend, ', ', dimy
     18566                            ysaid = True
    1856018567                        varint = varin[tini:tend,:,yend:dimy,:].transpose()
    1856118568                        prest = pres[tini:tend,:,yend:dimy,:].transpose()
     
    1857318580                          ix=dimx, iy=Ndy, iz=dimz, it=Ndt, num_metgrid_levels=Nplevs)
    1857418581       
    18575                         newvar[tend:dimt,:,yend:dimy,:] = varinterpyl.transpose()
     18582                        newvar[tini:tend,:,yend:dimy,:] = varinterpyl.transpose()
    1857618583                else:
    1857718584                    varint = varin[tini:tend,:,:,:].transpose()
     
    1859118598
    1859218599            if dimtfrac != dimt and tend != dimt-1:
    18593                 print '    finishing time-splitting:', tend, ', ', dimt
     18600                if not tsaid:
     18601                    print '    finishing time-splitting:', tend, ', ', dimt
     18602                    tsaid = True
    1859418603                tini = tend
    1859518604                tend = dimt
    1859618605                if np.prod([dimt-tend+1, dimz, dimx, dimy]) > 150*150*39:
    1859718606                    dimyfrac = 50
    18598                     print warnmsg
    18599                     print '  ' + fname + ': variable to interpolate:', varin.shape,      \
    18600                       'too big!!'
    18601                     print '    p-interpolation will be done by yaxis-slices of 10 grid-points'
    18602                     print range(0,dimyfrac*int(dimy/dimyfrac),dimyfrac)
    1860318607                    for iyy in range(0,dimyfrac*int(dimy/dimyfrac),dimyfrac):
    1860418608                        yini = iyy
     
    1862018624                        newvar[tini:tend,:,yini:yend,:] = varinterp.transpose()
    1862118625                    if dimyfrac != dimy and yend != dimy-1:
    18622                         print '    finishing time-splitting:', yend, ', ', dimy
    1862318626                        varint = varin[tini:tend,:,yend:dimy,:].transpose()
    1862418627                        prest = pres[tini:tend,:,yend:dimy,:].transpose()
     
    1863618639                          ix=dimx, iy=Ndy, iz=dimz, it=Ndt, num_metgrid_levels=Nplevs)
    1863718640       
    18638                         newvar[tend:dimt,:,yend:dimy,:] = varinterpyl.transpose()
     18641                        newvar[tini:tend,:,yend:dimy,:] = varinterpyl.transpose()
    1863918642                else:
    1864018643                    varint = varin[tend:dimt,:,:,:].transpose()
Note: See TracChangeset for help on using the changeset viewer.