Changeset 2315 in lmdz_wrf for trunk/tools
- Timestamp:
- Feb 4, 2019, 11:40:15 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/nc_var_tools.py
r2314 r2315 28890 28890 dxyC = osliceinC.shape[1] 28891 28891 28892 Srgrid = list(osliceN B.dimensions) + list(osliceNAB.dimensions)28892 Srgrid = list(osliceNC.dimensions) + list(osliceNAB.dimensions) 28893 28893 Sigrid = ['coord', dn+'gridin'] + Srgrid 28894 28894 Spgrid = [dn+'gridin'] + Srgrid … … 28897 28897 pointsABC = np.zeros((2,dxyAB,dyC,dxC,dyB,dxB,dyA,dxA), dtype=int) 28898 28898 inpointsAB = np.zeros((dxyAB,dyC,dxC,dyB,dxB,dyA,dxA), dtype=int) 28899 NpointsA = np.zeros((dyC,dxC,dyB,dxB,dyA,dxA), dtype=int) 28900 NpointsB = np.zeros((dyC,dxC,dyB,dxB,dyA,dxA), dtype=int) 28901 inpointsA = np.zeros((dxyAB,dyC,dxC,dyB,dxB,dyA,dxA), dtype=int) 28902 inpointsB = np.zeros((dxyAB,dyC,dxC,dyB,dxB,dyA,dxA), dtype=int) 28899 28903 inpointsC = np.zeros((dxyAB,dyC,dxC,dyB,dxB,dyA,dxA), dtype=int) 28900 print 'Lluis shapes sliceNAB:', sliceNAB.shape, 'sliceinAB:', sliceinAB.shape28901 28904 # Following B-slices 28902 28905 for j in range(dyB): … … 28906 28909 sliceNBt = sliceNC.transpose() 28907 28910 sliceinBt = sliceinC.transpose() 28908 28909 print 'LLuis j i:', j,i, 'shapes sliceNAt:', sliceNAt.shape, 'sliceinAt:', sliceinAt.shape, \28910 'sliceNBt:', sliceNBt.shape, 'sliceinBt:', sliceinBt.shape28911 print ' A dx dy dxy:', dxA, dyA, dxyAB, 'B dx dy dxy:', dxC, dyC, dxyC28912 28911 NpointsABt, pointsABt, inpA, inpB = fsci.module_scientific.coincident_gridsin2d( \ 28913 28912 npointsa=sliceNAt, pointsa=sliceinAt, npointsb=sliceNBt, pointsb=sliceinBt, \ … … 28918 28917 inpointsC[:,:,:,j,i,:,:] = inpB.transpose() 28919 28918 28919 # Getting respective A & B 28920 for jc in range(dyC): 28921 for ic in range(dxC): 28922 print jc, ic, 'Lluis shapes NpointsABt[jc,ic,:,:]', NpointsABt[jc,ic,:,:].shape, \ 28923 'pointsABt[jc,ic,:,:]', NpointsABt[jc,ic,:,:].shape, 'sliceNAt', sliceNAt.shape, \ 28924 'sliceinAt', sliceinAt.shape, 'A dx dy dxy:', dxA, dyA, dxyAB, \ 28925 'B dx dy dxy:', dxA, dyA, dxA 28926 28927 NptsAt, inptsAt, inpA, inpB = fsci.module_scientific.coincident_gridsin2d( \ 28928 npointsa=NpointsABt[jc,ic,:,:], pointsa=pointsABt[jc,ic,:,:], npointsb=sliceNAt,\ 28929 pointsb=sliceinAt, dxa=dxA, dya=dyA, dxya=dxyAB, dxb=dxA, dyb=dyA, dxyb=dxyA) 28930 NpointsA[jc,ic,j,i,:,:] = NptsAt.transpose() 28931 inpointsA[:,jc,ic,j,i,:,:] = inptsAt.transpose() 28932 28933 NptsBt, inptsBt, inpA, inpB = fsci.module_scientific.coincident_gridsin2d( \ 28934 npointsa=NpointsABt[jc,ic,:,:], pointsa=pointsABt[jc,ic,:,:], npointsb=sliceNBt,\ 28935 pointsb=sliceinBt, dxa=dxA, dya=dyA, dxya=dxyAB, dxb=dxB, dyb=dyB, dxyb=dxyB) 28936 NpointsB[jc,ic,j,i,:,:] = NptsAt.transpose() 28937 inpointsB[:,jc,ic,j,i,:,:] = inptsAt.transpose() 28938 28920 28939 # Remembering that it is python (C-like...) 28921 28940 inpointsAB = inpointsAB-1 28922 28941 inpointsC = inpointsC-1 28923 28942 28924 maxNpointsABC = np.max(NpointsAB )28943 maxNpointsABC = np.max(NpointsABC) 28925 28944 28926 28945 print " Joined slice '" + prevdn + "' & '" + newslcvarns[islc] + "':", \ … … 28928 28947 28929 28948 if not gen.searchInlist(onewnc.dimensions, dn+'gridin'): 28930 newdim = onewnc.createDimension(dn+'gridin', maxNpointsAB )28949 newdim = onewnc.createDimension(dn+'gridin', maxNpointsABC) 28931 28950 28932 28951 newvar = onewnc.createVariable(dn+'Ngrid','i', tuple(Srgrid)) 28952 print 'Lluis shapes: newvar', newvar.shape, 'NpointsABC:', NpointsABC.shape, 'Srgrid:', Srgrid 28933 28953 newvar[:] = NpointsABC[:] 28934 28954 basicvardef(newvar, dn+'Ngrid', "number of grids cells from slice " + \ … … 28960 28980 pnewvar.setncattr('coordinates',' '.join(Spgrid[::-1])) 28961 28981 28982 print 'Lluis shapes NpointsANC:', NpointsABC.shape, 'pointsABC:', pointsABC.shape, \ 28983 'inpoints AB:', inpointsAB.shape, 'sliceinAB:', sliceinAB.shape, 'oslicepAB:', \ 28984 oslicepAB.shape, 'osliceaAB:', osliceaAB.shape, 'inpoints C:', inpointsC.shape, \ 28985 'sliceinC:', sliceinC.shape, 'oslicepC:', oslicepC.shape, 'osliceaC:', osliceaC.shape 28986 ixA = -1 28987 iyA = -1 28988 ixB = -1 28989 iyB = -1 28990 ixC = -1 28991 iyC = -1 28962 28992 for jA in range(dyA): 28963 28993 for iA in range(dxA): 28964 28994 for jB in range(dyB): 28965 28995 for iB in range(dxB): 28966 Nin = NpointsAB[jB,iB,jA,iA] 28967 innewvar[:,0:Nin,jB,iB,jA,iA] = pointsAB[:,0:Nin,jB,iB,jA,iA] 28968 aanewvar[jB,iB,jA,iA]= gen.fillValueF 28969 anewvar[:,jB,iB,jA,iA]= gen.fillValueF 28970 pnewvar[:,jB,iB,jA,iA]= gen.fillValueF 28971 slicearea = 0. 28972 for iv in range(Nin): 28973 pA = oslicepA[inpointsA[iv,jB,iB,jA,iA],jA,iA] 28974 pB = oslicepB[inpointsB[iv,jB,iB,jA,iA],jB,iB] 28975 pnewvar[iv,jB,iB,jA,iA]= pA*pB 28976 ixA = sliceinA[1,inpointsA[iv,jB,iB,jA,iA],jA,iA] 28977 iyA = sliceinA[0,inpointsA[iv,jB,iB,jA,iA],jA,iA] 28978 aA = osliceaA[iyA,ixA] 28979 ixB = sliceinB[1,inpointsB[iv,jB,iB,jA,iA],jB,iB] 28980 iyB = sliceinB[0,inpointsB[iv,jB,iB,jA,iA],jB,iB] 28981 aB = osliceaB[iyB,ixB] 28982 anewvar[iv,jB,iB,jA,iA]= (aA*pA)*(aB*pB) 28983 slicearea = slicearea + (aA*pA)*(aB*pB) 28984 aanewvar[jB,iB,jA,iA]= slicearea 28996 for jC in range(dyC): 28997 for iC in range(dxC): 28998 Nin = NpointsABC[jC,iC,jB,iB,jA,iA] 28999 innewvar[:,0:Nin,jC,iC,jB,iB,jA,iA] = pointsABC[:,0:Nin,jC,iC,jB,iB,jA,iA] 29000 aanewvar[jC,iC,jB,iB,jA,iA]= gen.fillValueF 29001 anewvar[:,jC,iC,jB,iB,jA,iA]= gen.fillValueF 29002 pnewvar[:,jC,iC,jB,iB,jA,iA]= gen.fillValueF 29003 slicearea = 0. 29004 for iv in range(Nin): 29005 pA = oslicepAB[inpointsAB[iv,jC,iC,jB,iB,jA,iA],jB,iB,jA,iA] 29006 pB = oslicepC[inpointsC[iv,jC,iC,jB,iB,jA,iA],jC,iC] 29007 pnewvar[iv,jC,iC,jB,iB,jA,iA]= pA*pB 29008 ixAB = sliceinAB[1,inpointsAB[iv,jC,iC,jB,iB,jA,iA],jB,iB,jA,iA] 29009 iyAB = sliceinAB[0,inpointsAB[iv,jC,iC,jB,iB,jA,iA],jB,iB,jA,iA] 29010 ixA = inpointsA[1,NpointsA[iv,jC,iC,jB,iB,jA,iA],jC,iC,jB,iB,jA,iA] 29011 iyA = inpointsA[0,NpointsA[iv,jC,iC,jB,iB,jA,iA],jC,iC,jB,iB,jA,iA] 29012 ixB = inpointsB[1,NpointsB[iv,jC,iC,jB,iB,jA,iA],jC,iC,jB,iB,jA,iA] 29013 iyB = inpointsB[0,NpointsB[iv,jC,iC,jB,iB,jA,iA],jC,iC,jB,iB,jA,iA] 29014 ixC = sliceinC[1,inpointsC[iv,jC,iC,jB,iB,jA,iA],jC,iC] 29015 iyC = sliceinC[0,inpointsC[iv,jC,iC,jB,iB,jA,iA],jC,iC] 29016 print jA,iA,jB,iB,jC,iC,':',iyA,ixA,iyB,ixB,iyC,ixC 29017 aA = osliceaAB[iyB,ixB,iyA,ixA] 29018 aB = osliceaC[iyC,ixC] 29019 anewvar[iv,jC,iC,jB,iB,jA,iA]= (aA*pA)*(aB*pB) 29020 slicearea = slicearea + (aA*pA)*(aB*pB) 29021 aanewvar[jC,iC,jB,iB,jA,iA]= slicearea 28985 29022 onewnc.sync() 28986 29023
Note: See TracChangeset
for help on using the changeset viewer.