Changeset 1184 in lmdz_wrf


Ignore:
Timestamp:
Oct 14, 2016, 3:21:13 PM (9 years ago)
Author:
lfita
Message:

Adding:

  • Use of generic fillval64' and r_k' definition from 'module_generic.F90'
  • Working version of the npp' and dis' interpolation in 3D using mask also variable
  • `add_varattrs': Function to add variables attributes from a given netCDF object to other variables in another one
Location:
trunk/tools
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/interpolate.F90

    r1140 r1184  
    2020  IMPLICIT NONE
    2121
    22   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     22!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    2323  INTEGER, INTENT(in)                                    :: dx, dy
    2424  REAL(r_k), DIMENSION(dx,dy), INTENT(in)                :: ilon, ilat
     
    206206  IMPLICIT NONE
    207207
    208   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     208!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    209209  INTEGER, INTENT(in)                                    :: dimx, dimy
    210210  REAL(r_k), DIMENSION(dimx,dimy), INTENT(in)            :: projlon, projlat
  • trunk/tools/module_ForDiagnosticsVars.F90

    r1141 r1184  
    1111  IMPLICIT NONE
    1212
    13   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     13!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    1414  REAL(r_k), PARAMETER                                   :: ZEPSEC=1.0D-12
    1515! Low limit pressure for medium clouds [Pa]
     
    4040    IMPLICIT NONE
    4141
    42     INTEGER, PARAMETER                                   :: r_k = KIND(1.d0)
     42!    INTEGER, PARAMETER                                   :: r_k = KIND(1.d0)
    4343    INTEGER, INTENT(in)                                  :: dz
    4444    REAL(r_k), DIMENSION(dz), INTENT(in)                 :: clfra, p
     
    9797    IMPLICIT NONE
    9898
    99     INTEGER, PARAMETER                                   :: r_k = KIND(1.d0)
     99!    INTEGER, PARAMETER                                   :: r_k = KIND(1.d0)
    100100    INTEGER, INTENT(in)                                  :: dz
    101101    REAL(r_k), DIMENSION(dz), INTENT(in)                 :: clfra
  • trunk/tools/module_ForInterpolate.F90

    r1180 r1184  
    2020  IMPLICIT NONE
    2121
    22   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     22!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    2323  INTEGER, INTENT(in)                                    :: dx, dy
    2424  REAL(r_k), DIMENSION(dx,dy), INTENT(in)                :: ilon, ilat
     
    211211  IMPLICIT NONE
    212212
    213   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     213!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    214214  INTEGER, INTENT(in)                                    :: dx, dy, iv
    215215  REAL(r_k), DIMENSION(dx,dy), INTENT(in)                :: ilon, ilat
     
    441441  IMPLICIT NONE
    442442
    443   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     443!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    444444  INTEGER, INTENT(in)                                    :: dx, dy
    445445  REAL(r_k), DIMENSION(dx,dy), INTENT(in)                :: ilon, ilat
     
    493493  IMPLICIT NONE
    494494
    495   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     495!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    496496  INTEGER, INTENT(in)                                    :: dimx, dimy
    497497  REAL(r_k), DIMENSION(dimx,dimy), INTENT(in)            :: projlon, projlat
     
    597597  IMPLICIT NONE
    598598
    599   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     599!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    600600  INTEGER, INTENT(in)                                    :: dimx, dimy
    601601  REAL(r_k), DIMENSION(dimx,dimy), INTENT(in)            :: projlon, projlat
     
    728728  IMPLICIT NONE
    729729
    730   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     730!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    731731  INTEGER, INTENT(in)                                    :: idimx, idimy, pdimx, pdimy
    732732  REAL(r_k), DIMENSION(pdimx,pdimy), INTENT(in)          :: projlon, projlat
     
    738738  INTEGER                                                :: i,j,iv, ix, iy
    739739  REAL(r_k)                                              :: mindiffLl, dist
     740  REAL(r_k)                                              :: inclon, inclat, maxdiffprojlonlat
    740741  REAL(r_k), DIMENSION(idimx,idimy)                      :: difflonlat
    741   REAL(r_k), DIMENSION(idimx-1,idimy)                    :: difflon
    742   REAL(r_k), DIMENSION(idimx,idimy-1)                    :: difflat
     742  REAL(r_k), DIMENSION(pdimx,pdimy)                      :: difflon, difflat
    743743  REAL(r_k), DIMENSION(2)                                :: extremelon, extremelat, ipos
    744744  INTEGER, DIMENSION(2)                                  :: iLl
     
    763763  extremelat = (/ MINVAL(projlat), MAXVAL(projlat) /)
    764764 
     765  ! Maximum distance between grid points in target projection
     766  difflon = 0.
     767  difflat = 0.
     768  difflon(1:pdimx-1,:) = projlon(2:pdimx,:)-projlon(1:pdimx-1,:)
     769  difflat(:,1:pdimy-1) = projlat(:,2:pdimy)-projlat(:,1:pdimy-1)
     770  maxdiffprojlonlat = MAXVAL(SQRT(difflon**2. + difflat**2.))
     771
    765772  ! Using case outside loop to be more efficient
    766773  SELECT CASE(TRIM(intkind))
    767774    CASE ('dis')
     775      inclon = inlonv(2,1) - inlonv(1,1)
     776      inclat = inlatv(1,2) - inlatv(1,1)
     777
    768778      DO i=1, pdimx
    769779        DO j=1, pdimy     
     
    771781          difflonlat = SQRT((projlon(i,j)-inlonv)**2. + (projlat(i,j)-inlatv)**2.)
    772782          mindiffLl = MINVAL(difflonlat)
    773           ! Getting the four surrounding values
    774           iLl = index2DArrayR(difflonlat, idimx, idimy, mindiffLl)
    775           IF ( projlon(i,j) < inlonv(iLl(1),iLl(2)) ) THEN
    776             outLlw(1,1,i,j) = MAX(iLl(1)-1,1)
    777             outLlw(1,2,i,j) = MAX(iLl(1)-1,1)
    778             outLlw(1,3,i,j) = MIN(iLl(1),idimx)
    779             outLlw(1,4,i,j) = MIN(iLl(1),idimx)
     783          IF (mindiffLl > maxdiffprojlonlat) THEN
     784            outLlw(3,:,i,j) = 0.
     785            outLlw(3,:,i,j) = -1.
    780786          ELSE
    781             outLlw(1,1,i,j) = MIN(iLl(1),1)
    782             outLlw(1,2,i,j) = MIN(iLl(1),1)
    783             outLlw(1,3,i,j) = MAX(iLl(1)+1,idimx)
    784             outLlw(1,4,i,j) = MAX(iLl(1)+1,idimx)
     787            ! Getting the four surrounding values
     788            iLl = index2DArrayR(difflonlat, idimx, idimy, mindiffLl)
     789            IF ( (projlon(i,j) < inlonv(iLl(1),iLl(2)) .AND. inclon > 0.) .OR.                          &
     790              (projlon(i,j) > inlonv(iLl(1),iLl(2)) .AND. inclon < 0.) ) THEN
     791              outLlw(1,1,i,j) = MAX(iLl(1)-1,1)
     792              outLlw(1,2,i,j) = MAX(iLl(1)-1,1)
     793              outLlw(1,3,i,j) = MIN(iLl(1),idimx)
     794              outLlw(1,4,i,j) = MIN(iLl(1),idimx)
     795            ELSE
     796              outLlw(1,1,i,j) = MAX(iLl(1),1)
     797              outLlw(1,2,i,j) = MAX(iLl(1),1)
     798              outLlw(1,3,i,j) = MIN(iLl(1)+1,idimx)
     799              outLlw(1,4,i,j) = MIN(iLl(1)+1,idimx)
     800            END IF
     801            IF ( (projlat(i,j) < inlatv(iLl(2),iLl(2)) .AND. inclat > 0.) .OR.                          &
     802              (projlat(i,j) > inlatv(iLl(2),iLl(2)) .AND. inclat < 0.) )  THEN
     803              outLlw(2,1,i,j) = MAX(iLl(2)-1,1)
     804              outLlw(2,2,i,j) = MIN(iLl(2),idimy)
     805              outLlw(2,3,i,j) = MIN(iLl(2),idimy)
     806              outLlw(2,4,i,j) = MAX(iLl(2)-1,1)
     807            ELSE
     808              outLlw(2,1,i,j) = MAX(iLl(2),1)
     809              outLlw(2,2,i,j) = MIN(iLl(2)+1,idimy)
     810              outLlw(2,3,i,j) = MIN(iLl(2)+1,idimy)
     811              outLlw(2,4,i,j) = MAX(iLl(2),1)
     812            END IF
     813            ! Computing distances
     814!Keep the print for future checks?
     815!            IF (MOD(i+j,200) == 0) THEN
     816!              PRINT *,'center point:',i,j,'=', iLl,':',projlon(i,j),projlat(i,j),' incs',inclon,' ,',inclat
     817!              PRINT *,'SW:', outLlw(1,1,i,j), outLlw(2,1,i,j),':',inlonv(outLlw(1,1,i,j), outLlw(2,1,i,j)),&
     818!                inlatv(outLlw(1,1,i,j), outLlw(2,1,i,j))
     819!              PRINT *,'NW:', outLlw(1,2,i,j), outLlw(2,2,i,j),':',inlonv(outLlw(1,2,i,j), outLlw(2,2,i,j)),&
     820!                inlatv(outLlw(1,2,i,j), outLlw(2,2,i,j))
     821!              PRINT *,'NE:', outLlw(1,3,i,j), outLlw(2,3,i,j),':',inlonv(outLlw(1,3,i,j), outLlw(2,3,i,j)),&
     822!                inlatv(outLlw(1,3,i,j), outLlw(2,3,i,j))
     823!              PRINT *,'SE:', outLlw(1,4,i,j), outLlw(2,4,i,j),':',inlonv(outLlw(1,4,i,j), outLlw(2,4,i,j)),&
     824!                inlatv(outLlw(1,4,i,j), outLlw(2,4,i,j))
     825!            END IF
     826            DO iv=1,4
     827              ix = INT(outLlw(1,iv,i,j))
     828              iy = INT(outLlw(2,iv,i,j))
     829              dist = SQRT( (projlon(i,j)-inlonv(ix,iy))**2. + (projlat(i,j)-inlatv(ix,iy))**2. )
     830              IF ( dist /= 0.) THEN
     831                outLlw(3,iv,i,j) = 1./dist
     832              ELSE
     833                outLlw(3,iv,i,j) = 1.
     834              END IF
     835!              IF (i+j == 2) PRINT *,'iv:',iv,'dist:',dist,'weight:',outLlw(3,iv,i,j)
     836            END DO
     837            ! Normalizing
     838            outLlw(3,:,i,j) = outLlw(3,:,i,j)/(SUM(outLlw(3,:,i,j)))
     839!             IF (i+j == 2) PRINT *,'Normalized weights:',outLlw(3,:,i,j),':',SUM(outLlw(3,:,i,j))
    785840          END IF
    786           IF ( projlat(i,j) < inlatv(iLl(1),iLl(2)) ) THEN
    787             outLlw(2,1,i,j) = MIN(iLl(1)-1,1)
    788             outLlw(2,2,i,j) = MAX(iLl(1),idimy)
    789             outLlw(2,3,i,j) = MAX(iLl(1),idimy)
    790             outLlw(2,4,i,j) = MIN(iLl(1)-1,1)
    791           ELSE
    792             outLlw(2,1,i,j) = MIN(iLl(1),1)
    793             outLlw(2,2,i,j) = MAX(iLl(1)+1,idimy)
    794             outLlw(2,3,i,j) = MAX(iLl(1)+1,idimy)
    795             outLlw(2,4,i,j) = MIN(iLl(1),1)
    796           END IF
    797           ! Computing distances
    798           DO iv=1,4
    799             ix = INT(outLlw(1,iv,i,j))
    800             iy = INT(outLlw(2,iv,i,j))
    801             dist = SQRT( (projlon(i,j)-inlonv(ix,iy))**2. + (projlat(i,j)-inlatv(ix,iy))**2. )
    802             IF ( dist /= 0.) THEN
    803               outLlw(3,iv,i,j) = 1./dist
    804             ELSE
    805               outLlw(3,iv,i,j) = 1.
    806             END IF
    807           END DO
    808           ! Normalizing
    809           outLlw(3,:,i,j) = outLlw(3,:,i,j)/(SUM(outLlw(3,:,i,j)))
    810841        END DO
    811842      END DO
     
    819850          outLlw(1,1,i,j) = REAL(ipos(1))
    820851          outLlw(2,1,i,j) = REAL(ipos(2))
    821           outLlw(3,1,i,j) = 1.
     852          ! We do not want that values larger that the maximum distance between target grid points
     853!          PRINT *,i,j,':',mindiffLl,'maxdiffLl:',maxdiffprojlonlat
     854          IF (mindiffLl .gt. maxdiffprojlonlat) THEN
     855!            PRINT *,'  ' // TRIM(fname) // ': reprojected minimum distance to nearest grid point:',   &
     856!              mindiffLl, ' larger than the maximum distance between grid points in target projection!!'
     857            outLlw(3,1,i,j) = -1.
     858          ELSE
     859            outLlw(3,1,i,j) = 1.
     860          END IF
    822861          ix = INT(outLlw(1,1,i,j))
    823862          iy = INT(outLlw(2,1,i,j))
     
    836875  IMPLICIT NONE
    837876
    838   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     877!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    839878  INTEGER, INTENT(in)                                    :: idimx, idimy, pdimx, pdimy
    840879  REAL(r_k), DIMENSION(pdimx,pdimy), INTENT(in)          :: projlon, projlat
     
    895934END SUBROUTINE var2D_IntProj
    896935
    897 SUBROUTINE var3D_IntProj(var3Din, inlonv, inlatv, projlon, projlat, intkind, varout, idimx, idimy,    &
    898   pdimx, pdimy, d3)
     936SUBROUTINE var3D_IntProj(var3Din, inlonv, inlatv, projlon, projlat, intkind, mask, varout, idimx,     &
     937  idimy, pdimx, pdimy, d3)
    899938! Subroutine to interpolate a 3D variable
    900939
     
    903942  IMPLICIT NONE
    904943
    905   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     944!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    906945  INTEGER, INTENT(in)                                    :: idimx, idimy, pdimx, pdimy, d3
    907946  REAL(r_k), DIMENSION(pdimx,pdimy), INTENT(in)          :: projlon, projlat
     
    909948  CHARACTER(LEN=50), INTENT(in)                          :: intkind
    910949  REAL(r_k), DIMENSION(idimx,idimy,d3), INTENT(in)       :: var3Din
     950  INTEGER, DIMENSION(idimx,idimy,d3), INTENT(in)         :: mask
    911951  REAL(r_k), DIMENSION(pdimx,pdimy,d3), INTENT(out)      :: varout
    912952
     
    931971!       3rd: weight for i-index, j-index to use for ponderation (0<1.)
    932972! var3Din: 3D variable to interpolate
     973! mask: mask of the intpu values (1: good, 0: none)
    933974! varout: variable interpolated on the target projection
    934975  fname = 'var3D_IntProj'
     
    941982      DO i=1, pdimx
    942983        DO j=1, pdimy
    943           DO k=1, d3
    944             varout(i,j,k) = 0.
    945             DO iv=1, 4
    946               ix = INT(outLlw(1,iv,i,j))
    947               iy = INT(outLlw(2,iv,i,j))
    948               w =  outLlw(3,iv,i,j)
    949               varout(i,j,k) = varout(i,j,k) + w*var3Din(ix,iy,k)
     984          IF (ALL(outLlw(3,:,i,j) == -1.)) THEN
     985            varout(i,j,:) = fillVal64
     986          ELSE
     987            DO k=1, d3
     988              varout(i,j,k) = 0.
     989              DO iv=1, 4
     990                ix = INT(outLlw(1,iv,i,j))
     991                iy = INT(outLlw(2,iv,i,j))
     992                IF (mask(ix,iy,k) == 1) THEN
     993                  w =  outLlw(3,iv,i,j)
     994                  varout(i,j,k) = varout(i,j,k) + w*var3Din(ix,iy,k)
     995                END IF
     996!                IF (MOD(i+j+k,150) == 0) PRINT *,iv,':',ix,iy,w,'<>',var3Din(ix,iy,k),'-->',varout(i,j,k)
     997              END DO
     998!                IF (MOD(i+j+k,150) == 0) PRINT *,'vout:',varout(i,j,k)
    950999            END DO
    951           END DO
     1000          END IF
    9521001        END DO
    9531002      END DO
     
    9571006          ix = INT(outLlw(1,1,i,j))
    9581007          iy = INT(outLlw(2,1,i,j))
    959           DO k=1, d3
    960             varout(i,j,k) = var3Din(ix,iy,k)
    961           END DO
     1008          IF ( (outLlw(3,1,i,j) == -1.) .OR. (mask(ix,iy,1) == 0) ) THEN
     1009            varout(i,j,:) = fillVal64
     1010          ELSE
     1011            DO k=1, d3
     1012              varout(i,j,k) = var3Din(ix,iy,k)*outLlw(3,1,i,j)
     1013            END DO
     1014          END IF
    9621015        END DO
    9631016      END DO
     
    9741027  IMPLICIT NONE
    9751028
    976   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     1029!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    9771030  INTEGER, INTENT(in)                                    :: idimx, idimy, pdimx, pdimy, d3, d4
    9781031  REAL(r_k), DIMENSION(pdimx,pdimy), INTENT(in)          :: projlon, projlat
     
    10501103  IMPLICIT NONE
    10511104
    1052   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     1105!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    10531106  INTEGER, INTENT(in)                                    :: idimx, idimy, pdimx, pdimy, d3, d4, d5
    10541107  REAL(r_k), DIMENSION(pdimx,pdimy), INTENT(in)          :: projlon, projlat
     
    11291182  IMPLICIT NONE
    11301183
    1131   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     1184!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    11321185  INTEGER, INTENT(in)                                    :: dimx, dimy
    11331186  REAL(r_k), DIMENSION(dimx,dimy), INTENT(in)            :: projlon, projlat
     
    12281281  IMPLICIT NONE
    12291282
    1230   INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     1283!  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
    12311284  INTEGER, INTENT(in)                                    :: dimx, dimy
    12321285  REAL(r_k), DIMENSION(dimx), INTENT(in)                 :: projlon
  • trunk/tools/module_generic.F90

    r764 r1184  
    11MODULE module_generic
    22! Module with generic functions
     3
     4  INTEGER, PARAMETER                                     :: r_k = KIND(1.d0)
     5  ! Fill value at 64 bits
     6  REAL(r_k)                                              :: fillval64 = 1.e20
    37
    48  CONTAINS
  • trunk/tools/nc_var_tools.py

    r1183 r1184  
    1111# add_dims: Function to add dimensions from a given netCDF object to another one
    1212# add_globattrs: Function to add global attributes from a given netCDF object to another one
     13# add_varattrs: Function to add variables attributes from a given netCDF object to other variables in another one
     14# add_vars: Function to add variables from a given netCDF object to another one
    1315# addvals: Function to add values to a given variable at a given dimension
    14 # add_vars: Function to add variables from a given netCDF object to another one
    1516# attrinvar: Check existence of an attribute in a netCDF variable object
    1617# basicvardef: Function to give the basic attributes to a variable (std_name, long_name, units)
     
    288289    return
    289290
     291def add_varattrs(oc,nc,attrvnames,vnames):
     292    """ Function to add variables attributes from a given netCDF object to other variables in another one
     293      oc: source netcdfile object
     294      nc: netcdfile object to add dimensions
     295      attrvnames: list of variables to take the attributes
     296      vnames: list of name of variables to add
     297    """
     298    fname = 'add_varattrs'
     299
     300    ivar = 0
     301    for vn in attrvnames:
     302        ovn = vnames[ivar]
     303        if not oc.variables.has_key(vn):
     304            print errormsg
     305            print '  ' +fname+ ": source file does not have variable '" + vn + "' !!"
     306            quit(-1)
     307        if not nc.variables.has_key(ovn):
     308            print errormsg
     309            print '  ' +fname+ ": target file does not have variable '" + ovn + "' !!"
     310            quit(-1)
     311
     312        varo = oc.variables[vn]
     313        ovaro = nc.variables[ovn]
     314        varattrs = varo.ncattrs()
     315
     316        for attrn in varattrs:
     317            if attrn != '_FillValue':
     318                attrv = varo.getncattr(attrn)
     319                newattr = set_attribute(ovaro, attrn, attrv)
     320
     321        nc.sync()
     322        ivar = ivar + 1
     323
     324    return
     325
    290326def add_globattrs(oc,nc,attrns):
    291327    """ Function to add global attributes from a given netCDF object to another one
     
    68016837
    68026838        newdim = objofile.createDimension(dimn, dimsize)
    6803 
    68046839
    68056840# Variables
     
    1604816083          'npp': nearest point
    1604916084          'dis': distance weighted (4 closest)
    16050         dimvars= ':', separated list of couples of dimension, and variable with its values [dimn]@[variabledim]
     16085        dimvars= ':', separated list of couples of dimension, and variable with its values [dimn]@[variabledim] from
     16086          file to interpolate
    1605116087      filen= name of file to interpolate
    1605216088      variable = ',' list of variable to interpolate ('all' for all variables)
     
    1620516241    rlatt = rlat.transpose()
    1620616242
    16207     # dimension-vardims
     16243    # dimension-vardims from input variable
    1620816244    vardimns = {}
     16245    dimvarns = {}
    1620916246    for vardn in dimvars:
    1621016247        dimn = vardn.split('@')[0]
    1621116248        dimvn = vardn.split('@')[1]
    1621216249        vardimns[dimn] = dimvn
     16250        dimvarns[dimvn] = dimn
    1621316251
    1621416252    # File creation
     
    1623916277
    1624016278    for varn in varns:
    16241         if not inf.variables.has_key(inlatn):
     16279        if not inf.variables.has_key(varn):
    1624216280            print errormsg
    1624316281            print '  ' + fname + ": input file '" + filen + "' does not have '" +    \
     
    1626116299        varint = varin.transpose()
    1626216300
     16301        # Do we have masked values?
     16302        if type(varin) == type(ma.asarray([1,1])):
     16303            inmask = np.where(varin.mask, 0, 1)
     16304        else:
     16305            inmask = np.ones((varin.shape), dtype=int)
     16306        inmaskt = inmask.transpose()
     16307
    1626316308        if Nvarind == 2:
    1626416309            varoutt = fin.module_forinterpolate.var2d_intproj(var2din=varint,        \
     
    1626816313            varoutt = fin.module_forinterpolate.var3d_intproj(var3din=varint,        \
    1626916314              inlonv=ilont, inlatv=ilatt, projlon=rlont, projlat=rlatt, intkind=kind,\
    16270               idimx=idx, idimy=idy, pdimx=rdx, pdimy=rdy, d3=varin.shape[0])
     16315              mask=inmaskt, idimx=idx, idimy=idy, pdimx=rdx, pdimy=rdy,              \
     16316              d3=varin.shape[0])
    1627116317        elif Nvarind == 4:
    1627216318            varoutt = fin.module_forinterpolate.var4d_intproj(var4din=varint,        \
     
    1628616332        # Recovering 'python' C-like space
    1628716333        varout = varoutt.transpose()
     16334        varout = np.where(varout >= 0.9*gen.fillValueF, gen.fillValueF, varout)
    1628816335
    1628916336        # Variable's dimensions and their related variables
    1629016337        vdims = list(ovarin.dimensions)
    16291         dimsfile = onewnc.dimensions.keys()
    1629216338        for dimn in vdims:
     16339            dimsfile = onewnc.dimensions.keys()
    1629316340            if not gen.searchInlist(dimsfile, dimn):
    1629416341                odimn = inf.dimensions[dimn]
     
    1630216349                      'assigned any variable !!'
    1630316350                    print '    assigned pairs (via [dimvars]) _______'
    16304                     gen.print_dictionary(vardimns)
     16351                    gen.printing_dictionary(vardimns)
    1630516352                    quit(-1)
    1630616353                else:
     
    1630916356        # Interpolated variable
    1631016357        vardims = list(ovarin.dimensions)
    16311         newvardims = gen.replace_list(vardims,inlonn,'lon')
    16312         newvardims = gen.replace_list(newvardims,inlatn,'lat')
     16358        newvardims = gen.replace_list(vardims,dimvarns[inlonn],'lon')
     16359        newvardims = gen.replace_list(newvardims,dimvarns[inlatn],'lat')
    1631316360        varattrs = ovarin.ncattrs()
    1631416361        if gen.searchInlist(varattrs,'_FillValue'):       
    1631516362            fillv = ovarin.getncattr('_FillValue')
    16316             newvar = onewnc.createVariable(varn, 'f4', tuple(newvardims),            \
    16317               fill_value=fillv)
     16363            varout = np.where(varout == fillv, gen.fillValueF, varout)
    1631816364            varattrs.remove('_FillValue')
    16319         else:
    16320             newvar = onewnc.createVariable(varn, 'f4', tuple(newvardims))
     16365        newvar = onewnc.createVariable(varn, 'f4', tuple(newvardims),            \
     16366          fill_value=gen.fillValueF)
    1632116367
    1632216368        newvar[:] = varout[:]
Note: See TracChangeset for help on using the changeset viewer.