Changeset 1184 in lmdz_wrf
- Timestamp:
- Oct 14, 2016, 3:21:13 PM (9 years ago)
- Location:
- trunk/tools
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/interpolate.F90
r1140 r1184 20 20 IMPLICIT NONE 21 21 22 INTEGER, PARAMETER :: r_k = KIND(1.d0)22 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 23 23 INTEGER, INTENT(in) :: dx, dy 24 24 REAL(r_k), DIMENSION(dx,dy), INTENT(in) :: ilon, ilat … … 206 206 IMPLICIT NONE 207 207 208 INTEGER, PARAMETER :: r_k = KIND(1.d0)208 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 209 209 INTEGER, INTENT(in) :: dimx, dimy 210 210 REAL(r_k), DIMENSION(dimx,dimy), INTENT(in) :: projlon, projlat -
trunk/tools/module_ForDiagnosticsVars.F90
r1141 r1184 11 11 IMPLICIT NONE 12 12 13 INTEGER, PARAMETER :: r_k = KIND(1.d0)13 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 14 14 REAL(r_k), PARAMETER :: ZEPSEC=1.0D-12 15 15 ! Low limit pressure for medium clouds [Pa] … … 40 40 IMPLICIT NONE 41 41 42 INTEGER, PARAMETER :: r_k = KIND(1.d0)42 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 43 43 INTEGER, INTENT(in) :: dz 44 44 REAL(r_k), DIMENSION(dz), INTENT(in) :: clfra, p … … 97 97 IMPLICIT NONE 98 98 99 INTEGER, PARAMETER :: r_k = KIND(1.d0)99 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 100 100 INTEGER, INTENT(in) :: dz 101 101 REAL(r_k), DIMENSION(dz), INTENT(in) :: clfra -
trunk/tools/module_ForInterpolate.F90
r1180 r1184 20 20 IMPLICIT NONE 21 21 22 INTEGER, PARAMETER :: r_k = KIND(1.d0)22 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 23 23 INTEGER, INTENT(in) :: dx, dy 24 24 REAL(r_k), DIMENSION(dx,dy), INTENT(in) :: ilon, ilat … … 211 211 IMPLICIT NONE 212 212 213 INTEGER, PARAMETER :: r_k = KIND(1.d0)213 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 214 214 INTEGER, INTENT(in) :: dx, dy, iv 215 215 REAL(r_k), DIMENSION(dx,dy), INTENT(in) :: ilon, ilat … … 441 441 IMPLICIT NONE 442 442 443 INTEGER, PARAMETER :: r_k = KIND(1.d0)443 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 444 444 INTEGER, INTENT(in) :: dx, dy 445 445 REAL(r_k), DIMENSION(dx,dy), INTENT(in) :: ilon, ilat … … 493 493 IMPLICIT NONE 494 494 495 INTEGER, PARAMETER :: r_k = KIND(1.d0)495 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 496 496 INTEGER, INTENT(in) :: dimx, dimy 497 497 REAL(r_k), DIMENSION(dimx,dimy), INTENT(in) :: projlon, projlat … … 597 597 IMPLICIT NONE 598 598 599 INTEGER, PARAMETER :: r_k = KIND(1.d0)599 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 600 600 INTEGER, INTENT(in) :: dimx, dimy 601 601 REAL(r_k), DIMENSION(dimx,dimy), INTENT(in) :: projlon, projlat … … 728 728 IMPLICIT NONE 729 729 730 INTEGER, PARAMETER :: r_k = KIND(1.d0)730 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 731 731 INTEGER, INTENT(in) :: idimx, idimy, pdimx, pdimy 732 732 REAL(r_k), DIMENSION(pdimx,pdimy), INTENT(in) :: projlon, projlat … … 738 738 INTEGER :: i,j,iv, ix, iy 739 739 REAL(r_k) :: mindiffLl, dist 740 REAL(r_k) :: inclon, inclat, maxdiffprojlonlat 740 741 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 743 743 REAL(r_k), DIMENSION(2) :: extremelon, extremelat, ipos 744 744 INTEGER, DIMENSION(2) :: iLl … … 763 763 extremelat = (/ MINVAL(projlat), MAXVAL(projlat) /) 764 764 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 765 772 ! Using case outside loop to be more efficient 766 773 SELECT CASE(TRIM(intkind)) 767 774 CASE ('dis') 775 inclon = inlonv(2,1) - inlonv(1,1) 776 inclat = inlatv(1,2) - inlatv(1,1) 777 768 778 DO i=1, pdimx 769 779 DO j=1, pdimy … … 771 781 difflonlat = SQRT((projlon(i,j)-inlonv)**2. + (projlat(i,j)-inlatv)**2.) 772 782 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. 780 786 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)) 785 840 END IF 786 IF ( projlat(i,j) < inlatv(iLl(1),iLl(2)) ) THEN787 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 ELSE792 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 IF797 ! Computing distances798 DO iv=1,4799 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.) THEN803 outLlw(3,iv,i,j) = 1./dist804 ELSE805 outLlw(3,iv,i,j) = 1.806 END IF807 END DO808 ! Normalizing809 outLlw(3,:,i,j) = outLlw(3,:,i,j)/(SUM(outLlw(3,:,i,j)))810 841 END DO 811 842 END DO … … 819 850 outLlw(1,1,i,j) = REAL(ipos(1)) 820 851 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 822 861 ix = INT(outLlw(1,1,i,j)) 823 862 iy = INT(outLlw(2,1,i,j)) … … 836 875 IMPLICIT NONE 837 876 838 INTEGER, PARAMETER :: r_k = KIND(1.d0)877 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 839 878 INTEGER, INTENT(in) :: idimx, idimy, pdimx, pdimy 840 879 REAL(r_k), DIMENSION(pdimx,pdimy), INTENT(in) :: projlon, projlat … … 895 934 END SUBROUTINE var2D_IntProj 896 935 897 SUBROUTINE var3D_IntProj(var3Din, inlonv, inlatv, projlon, projlat, intkind, varout, idimx, idimy,&898 pdimx, pdimy, d3)936 SUBROUTINE var3D_IntProj(var3Din, inlonv, inlatv, projlon, projlat, intkind, mask, varout, idimx, & 937 idimy, pdimx, pdimy, d3) 899 938 ! Subroutine to interpolate a 3D variable 900 939 … … 903 942 IMPLICIT NONE 904 943 905 INTEGER, PARAMETER :: r_k = KIND(1.d0)944 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 906 945 INTEGER, INTENT(in) :: idimx, idimy, pdimx, pdimy, d3 907 946 REAL(r_k), DIMENSION(pdimx,pdimy), INTENT(in) :: projlon, projlat … … 909 948 CHARACTER(LEN=50), INTENT(in) :: intkind 910 949 REAL(r_k), DIMENSION(idimx,idimy,d3), INTENT(in) :: var3Din 950 INTEGER, DIMENSION(idimx,idimy,d3), INTENT(in) :: mask 911 951 REAL(r_k), DIMENSION(pdimx,pdimy,d3), INTENT(out) :: varout 912 952 … … 931 971 ! 3rd: weight for i-index, j-index to use for ponderation (0<1.) 932 972 ! var3Din: 3D variable to interpolate 973 ! mask: mask of the intpu values (1: good, 0: none) 933 974 ! varout: variable interpolated on the target projection 934 975 fname = 'var3D_IntProj' … … 941 982 DO i=1, pdimx 942 983 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) 950 999 END DO 951 END DO1000 END IF 952 1001 END DO 953 1002 END DO … … 957 1006 ix = INT(outLlw(1,1,i,j)) 958 1007 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 962 1015 END DO 963 1016 END DO … … 974 1027 IMPLICIT NONE 975 1028 976 INTEGER, PARAMETER :: r_k = KIND(1.d0)1029 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 977 1030 INTEGER, INTENT(in) :: idimx, idimy, pdimx, pdimy, d3, d4 978 1031 REAL(r_k), DIMENSION(pdimx,pdimy), INTENT(in) :: projlon, projlat … … 1050 1103 IMPLICIT NONE 1051 1104 1052 INTEGER, PARAMETER :: r_k = KIND(1.d0)1105 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 1053 1106 INTEGER, INTENT(in) :: idimx, idimy, pdimx, pdimy, d3, d4, d5 1054 1107 REAL(r_k), DIMENSION(pdimx,pdimy), INTENT(in) :: projlon, projlat … … 1129 1182 IMPLICIT NONE 1130 1183 1131 INTEGER, PARAMETER :: r_k = KIND(1.d0)1184 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 1132 1185 INTEGER, INTENT(in) :: dimx, dimy 1133 1186 REAL(r_k), DIMENSION(dimx,dimy), INTENT(in) :: projlon, projlat … … 1228 1281 IMPLICIT NONE 1229 1282 1230 INTEGER, PARAMETER :: r_k = KIND(1.d0)1283 ! INTEGER, PARAMETER :: r_k = KIND(1.d0) 1231 1284 INTEGER, INTENT(in) :: dimx, dimy 1232 1285 REAL(r_k), DIMENSION(dimx), INTENT(in) :: projlon -
trunk/tools/module_generic.F90
r764 r1184 1 1 MODULE module_generic 2 2 ! 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 3 7 4 8 CONTAINS -
trunk/tools/nc_var_tools.py
r1183 r1184 11 11 # add_dims: Function to add dimensions from a given netCDF object to another one 12 12 # 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 13 15 # 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 one15 16 # attrinvar: Check existence of an attribute in a netCDF variable object 16 17 # basicvardef: Function to give the basic attributes to a variable (std_name, long_name, units) … … 288 289 return 289 290 291 def 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 290 326 def add_globattrs(oc,nc,attrns): 291 327 """ Function to add global attributes from a given netCDF object to another one … … 6801 6837 6802 6838 newdim = objofile.createDimension(dimn, dimsize) 6803 6804 6839 6805 6840 # Variables … … 16048 16083 'npp': nearest point 16049 16084 '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 16051 16087 filen= name of file to interpolate 16052 16088 variable = ',' list of variable to interpolate ('all' for all variables) … … 16205 16241 rlatt = rlat.transpose() 16206 16242 16207 # dimension-vardims 16243 # dimension-vardims from input variable 16208 16244 vardimns = {} 16245 dimvarns = {} 16209 16246 for vardn in dimvars: 16210 16247 dimn = vardn.split('@')[0] 16211 16248 dimvn = vardn.split('@')[1] 16212 16249 vardimns[dimn] = dimvn 16250 dimvarns[dimvn] = dimn 16213 16251 16214 16252 # File creation … … 16239 16277 16240 16278 for varn in varns: 16241 if not inf.variables.has_key( inlatn):16279 if not inf.variables.has_key(varn): 16242 16280 print errormsg 16243 16281 print ' ' + fname + ": input file '" + filen + "' does not have '" + \ … … 16261 16299 varint = varin.transpose() 16262 16300 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 16263 16308 if Nvarind == 2: 16264 16309 varoutt = fin.module_forinterpolate.var2d_intproj(var2din=varint, \ … … 16268 16313 varoutt = fin.module_forinterpolate.var3d_intproj(var3din=varint, \ 16269 16314 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]) 16271 16317 elif Nvarind == 4: 16272 16318 varoutt = fin.module_forinterpolate.var4d_intproj(var4din=varint, \ … … 16286 16332 # Recovering 'python' C-like space 16287 16333 varout = varoutt.transpose() 16334 varout = np.where(varout >= 0.9*gen.fillValueF, gen.fillValueF, varout) 16288 16335 16289 16336 # Variable's dimensions and their related variables 16290 16337 vdims = list(ovarin.dimensions) 16291 dimsfile = onewnc.dimensions.keys()16292 16338 for dimn in vdims: 16339 dimsfile = onewnc.dimensions.keys() 16293 16340 if not gen.searchInlist(dimsfile, dimn): 16294 16341 odimn = inf.dimensions[dimn] … … 16302 16349 'assigned any variable !!' 16303 16350 print ' assigned pairs (via [dimvars]) _______' 16304 gen.print _dictionary(vardimns)16351 gen.printing_dictionary(vardimns) 16305 16352 quit(-1) 16306 16353 else: … … 16309 16356 # Interpolated variable 16310 16357 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') 16313 16360 varattrs = ovarin.ncattrs() 16314 16361 if gen.searchInlist(varattrs,'_FillValue'): 16315 16362 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) 16318 16364 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) 16321 16367 16322 16368 newvar[:] = varout[:]
Note: See TracChangeset
for help on using the changeset viewer.