Changeset 1816 in lmdz_wrf


Ignore:
Timestamp:
Mar 19, 2018, 6:45:03 PM (7 years ago)
Author:
lfita
Message:

Adding y-axis slice in the final proper way...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/nc_var_tools.py

    r1815 r1816  
    1855018550                        Ndt = len(range(tini,tend))
    1855118551                        Ndy = len(range(yini,yend))
    18552                         print 'Lluis before!!!!'
    1855318552                        varinterp = fin.module_forinterpolate.interp( data_in=varint,\
    1855418553                          pres_field=prest, interp_levels=interplevs, psfc=psfct,    \
     
    1855618555                          extrapolate=extrap, geopt=isgeop, missing=gen.fillValueF,  \
    1855718556                          ix=dimx, iy=Ndy, iz=dimz, it=Ndt, num_metgrid_levels=Nplevs)
    18558                         print 'Lluis done!!!!'
    1855918557                        newvar[tini:tend,:,yini:yend,:] = varinterp.transpose()
     18558                    if dimyfrac != dimy and yend != dimy-1:
     18559                        print '    finishing time-splitting:', yend, ', ', dimy
     18560                        varint = varin[tini:tend,:,yend:dimy,:].transpose()
     18561                        prest = pres[tini:tend,:,yend:dimy,:].transpose()
     18562                        psfct = psfc[tini:tend,yend:dimy,:].transpose()
     18563                        hgtt = hgt[yend:dimy].transpose()
     18564                        tempt = temp[tini:tend,:,yend:dimy,:].transpose()
     18565                        qvt = qv[tini:tend,:,yend:dimy,:].transpose()
     18566                        Nplevs = len(interplevs)
     18567                        Ndt = len(range(tini,tend))
     18568                        Ndy = len(range(yend,dimy))
     18569                        varinterpyl= fin.module_forinterpolate.interp(data_in=varint,\
     18570                          pres_field=prest, interp_levels=interplevs, psfc=psfct,    \
     18571                          ter=hgtt, tk=tempt, qv=qvt, linlog=linloginterp,           \
     18572                          extrapolate=extrap, geopt=isgeop, missing=gen.fillValueF,  \
     18573                          ix=dimx, iy=Ndy, iz=dimz, it=Ndt, num_metgrid_levels=Nplevs)
     18574       
     18575                        newvar[tend:dimt,:,yend:dimy,:] = varinterpyl.transpose()
    1856018576                else:
    1856118577                    varint = varin[tini:tend,:,:,:].transpose()
     
    1856718583                    Nplevs = len(interplevs)
    1856818584                    Ndt = len(range(tini,tend))
    18569                     print 'Lluis before!!!!'
    1857018585                    varinterp = fin.module_forinterpolate.interp( data_in=varint,    \
    1857118586                      pres_field=prest, interp_levels=interplevs, psfc=psfct,        \
     
    1857318588                      extrapolate=extrap, geopt=isgeop, missing=gen.fillValueF,      \
    1857418589                      ix=dimx, iy=dimy, iz=dimz, it=Ndt, num_metgrid_levels=Nplevs)
    18575                     print 'Lluis done!!!!'
    1857618590                    newvar[tini:tend,:,:,:] = varinterp.transpose()
    1857718591
    1857818592            if dimtfrac != dimt and tend != dimt-1:
    1857918593                print '    finishing time-splitting:', tend, ', ', dimt
    18580                 varint = varin[tend:dimt,:,:,:].transpose()
    18581                 prest = pres[tend:dimt,:,:,:].transpose()
    18582                 psfct = psfc[tend:dimt,:,:].transpose()
    18583                 hgtt = hgt.transpose()
    18584                 tempt = temp[tend:dimt,:,:,:].transpose()
    18585                 qvt = qv[tend:dimt,:,:,:].transpose()
    18586 
    18587                 varinterplast = fin.module_forinterpolate.interp( data_in=varint,    \
    18588                   pres_field=prest, interp_levels=interplevs, psfc=psfct,            \
    18589                   ter=hgtt, tk=tempt, qv=qvt, linlog=linloginterp,                   \
    18590                   extrapolate=extrap, geopt=isgeop, missing=gen.fillValueF)
    18591 
    18592                 newvar[tend:dimt,:,:,:] = varinterplast.transpose()
     18594                tini = tend
     18595                tend = dimt
     18596                if np.prod([dimt-tend+1, dimz, dimx, dimy]) > 150*150*39:
     18597                    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)
     18603                    for iyy in range(0,dimyfrac*int(dimy/dimyfrac),dimyfrac):
     18604                        yini = iyy
     18605                        yend = iyy + dimyfrac
     18606                        varint = varin[tini:tend,:,yini:yend,:].transpose()
     18607                        prest = pres[tini:tend,:,yini:yend,:].transpose()
     18608                        psfct = psfc[tini:tend,yini:yend,:].transpose()
     18609                        hgtt = hgt[yini:yend,:].transpose()
     18610                        tempt = temp[tini:tend,:,yini:yend,:].transpose()
     18611                        qvt = qv[tini:tend,:,yini:yend,:].transpose()
     18612                        Nplevs = len(interplevs)
     18613                        Ndt = len(range(tini,tend))
     18614                        Ndy = len(range(yini,yend))
     18615                        varinterp = fin.module_forinterpolate.interp( data_in=varint,\
     18616                          pres_field=prest, interp_levels=interplevs, psfc=psfct,    \
     18617                          ter=hgtt, tk=tempt, qv=qvt, linlog=linloginterp,           \
     18618                          extrapolate=extrap, geopt=isgeop, missing=gen.fillValueF,  \
     18619                          ix=dimx, iy=Ndy, iz=dimz, it=Ndt, num_metgrid_levels=Nplevs)
     18620                        newvar[tini:tend,:,yini:yend,:] = varinterp.transpose()
     18621                    if dimyfrac != dimy and yend != dimy-1:
     18622                        print '    finishing time-splitting:', yend, ', ', dimy
     18623                        varint = varin[tini:tend,:,yend:dimy,:].transpose()
     18624                        prest = pres[tini:tend,:,yend:dimy,:].transpose()
     18625                        psfct = psfc[tini:tend,yend:dimy,:].transpose()
     18626                        hgtt = hgt[yend:dimy].transpose()
     18627                        tempt = temp[tini:tend,:,yend:dimy,:].transpose()
     18628                        qvt = qv[tini:tend,:,yend:dimy,:].transpose()
     18629                        Nplevs = len(interplevs)
     18630                        Ndt = len(range(tini,tend))
     18631                        Ndy = len(range(yend,dimy))
     18632                        varinterpyl= fin.module_forinterpolate.interp(data_in=varint,\
     18633                          pres_field=prest, interp_levels=interplevs, psfc=psfct,    \
     18634                          ter=hgtt, tk=tempt, qv=qvt, linlog=linloginterp,           \
     18635                          extrapolate=extrap, geopt=isgeop, missing=gen.fillValueF,  \
     18636                          ix=dimx, iy=Ndy, iz=dimz, it=Ndt, num_metgrid_levels=Nplevs)
     18637       
     18638                        newvar[tend:dimt,:,yend:dimy,:] = varinterpyl.transpose()
     18639                else:
     18640                    varint = varin[tend:dimt,:,:,:].transpose()
     18641                    prest = pres[tend:dimt,:,:,:].transpose()
     18642                    psfct = psfc[tend:dimt,:,:].transpose()
     18643                    hgtt = hgt.transpose()
     18644                    tempt = temp[tend:dimt,:,:,:].transpose()
     18645                    qvt = qv[tend:dimt,:,:,:].transpose()
     18646
     18647                    varinterplast = fin.module_forinterpolate.interp( data_in=varint,\
     18648                      pres_field=prest, interp_levels=interplevs, psfc=psfct,        \
     18649                      ter=hgtt, tk=tempt, qv=qvt, linlog=linloginterp,               \
     18650                      extrapolate=extrap, geopt=isgeop, missing=gen.fillValueF)
     18651   
     18652                    newvar[tend:dimt,:,:,:] = varinterplast.transpose()
    1859318653
    1859418654            for attrn in newvarattr.keys():
Note: See TracChangeset for help on using the changeset viewer.