Changeset 2300 in lmdz_wrf
- Timestamp:
- Jan 29, 2019, 10:50:37 PM (6 years ago)
- Location:
- trunk/tools
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/tools/module_scientific.f90 ¶
r2299 r2300 6274 6274 6275 6275 ! Local 6276 INTEGER :: ixA, iyA, ixB, iyB, iv 6276 INTEGER :: ixA, iyA, ixB, iyB, iv, ii 6277 6277 INTEGER :: NA, NB 6278 6278 INTEGER, DIMENSION(dxyA) :: ptsA, ptsB … … 6313 6313 inpointsA(ixA,iyA,iv) = ptsA(iv) 6314 6314 inpointsB(ixB,iyB,iv) = ptsB(iv) 6315 IF (Npoints(ixA,iyA,ixB,iyB) == 4) THEN 6316 PRINT *,ixA, iyA,ixB,iyB,'________________' 6317 DO ii = 1, Npoints(ixA,iyA,ixB,iyB) 6318 PRINT *,'Lluis ii:', ii, points(ixA,iyA,ixB,iyB,ii,:) 6319 PRINT *,'Lluis A:', inpointsA(ixA,iyA,iv), pointsA(ixA,iyA,ptsA(iv),:) 6320 PRINT *,'Lluis B:', inpointsB(ixB,iyB,iv), pointsB(ixB,iyB,ptsB(iv),:) 6321 END DO 6322 END IF 6315 6323 END DO 6316 6324 END DO -
TabularUnified trunk/tools/nc_var_tools.py ¶
r2299 r2300 28309 28309 elif (len(unma.shape) == 2): 28310 28310 drng = unma.shape[0]*unma.shape[1] 28311 Nt,indices =fsci.module_scientific.multi_index_mat2di(d12=drng,\28311 Nt,indicest=fsci.module_scientific.multi_index_mat2di(d12=drng, \ 28312 28312 mat=unmat, value=1, d1=unma.shape[1], d2=unma.shape[0]) 28313 indices = indicest.transpose() 28313 28314 elif (len(unma.shape) == 3): 28314 28315 drng = unma.shape[0]*unma.shape[1]*unma.shape[2] 28315 Nt,indices =fsci.module_scientific.multi_index_mat3di(d123=drng,\28316 Nt,indicest=fsci.module_scientific.multi_index_mat3di(d123=drng, \ 28316 28317 mat=unmat, value=1, d1=unma.shape[2], d2=unma.shape[1], \ 28317 28318 d3=unma.shape[0]) 28319 indices = indicest.transpose() 28318 28320 elif (len(unma.shape) == 4): 28319 28321 drng = unma.shape[0]*unma.shape[1]*unma.shape[2]*unma.shape[3] 28320 Nt,indices =fsci.module_scientific.multi_index_mat4di(d1234=drng,\28322 Nt,indicest=fsci.module_scientific.multi_index_mat4di(d1234=drng,\ 28321 28323 mat=unmat, value=1, d1=unma.shape[3], d2=unma.shape[2], \ 28322 28324 d3=unma.shape[1], d4=unma.shape[0]) 28325 indices = indicest.transpose() 28323 28326 else: 28324 28327 rS = str(len(unma.shape)) … … 28331 28334 ainds = ainds - 1 28332 28335 28333 if Ngridsin[0,islc] > 0: 28334 gridsin[0,0:Nt,0,islc] = ainds[0,0:Nt] 28335 gridsin[1,0:Nt,0,islc] = ainds[1,0:Nt] 28336 if Nt > 0: 28337 print 'Lluis:', islc, ':', Nt 28338 gridsin[0,0:Nt,0,islc] = ainds[0:Nt,0] 28339 gridsin[1,0:Nt,0,islc] = ainds[0:Nt,1] 28336 28340 percens[0:Nt,0,islc] = 1. 28337 28341 for iv in range(Nt): 28338 i = ainds[ 0,iv]28339 j = ainds[ 1,iv]28342 i = ainds[iv,0] 28343 j = ainds[iv,1] 28340 28344 areas[j,i] = 1. 28345 if j == 94: print islc,'Lluis:', j,i,areas[j,i] 28341 28346 28342 28347 # Values for file … … 28422 28427 anewvar.setncattr('coordinates',' '.join(varfinaldims[::-1])) 28423 28428 anewvar[:] = areas[:] 28429 if dn == 'HGT': 28430 for i in range(areas.shape[1]): 28431 if areas[94,i] == 1.: print 'Lluis 2:', 94,i,areas[94,i] 28424 28432 28425 28433 aanewvar = onewnc.createVariable(dn+'area','f',tuple(Srgrid), \ … … 28525 28533 sliceinBt = sliceinB.transpose() 28526 28534 28535 print 'Lluis shapes sliceNAt:', sliceNAt.shape, 'sliceinAt:', sliceinAt.shape 28536 print 'Lluis shapes sliceNBt:', sliceNBt.shape, 'sliceinBt:', sliceinBt.shape 28537 28527 28538 NpointsABt, pointsABt, inpA, inpB = fsci.module_scientific.coincident_gridsin2d( \ 28528 28539 npointsa=sliceNAt, pointsa=sliceinAt, npointsb=sliceNBt, pointsb=sliceinBt, \ … … 28534 28545 28535 28546 # Remembering that it is python (C-like...) 28536 inpointsA = inpointsA-1 28537 inpointsB = inpointsB-1 28547 # inpointsA = inpointsA 28548 # inpointsB = inpointsB 28549 28550 jB = 0 28551 iB = 3 28552 jA = 10 28553 iA = 2 28554 print 'iA: _____ ' 28555 for iv in range(sliceNA[jA,iA]): 28556 print iv, sliceinA[:,iv,jA,iA] 28557 print 'iB: _____ ' 28558 for iv in range(sliceNB[jB,iB]): 28559 print iv, sliceinB[:,iv,jB,iB] 28560 for iv in range(sliceNA[jA,iA]): 28561 for iv2 in range(sliceNB[jB,iB]): 28562 if sliceinA[0,iv,jA,iA] == sliceinB[0,iv2,jB,iB] and sliceinA[1,iv,jA,iA] == sliceinB[1,iv2,jB,iB]: 28563 print iv,':', sliceinA[:,iv,jA,iA], ';', iv2, ':', sliceinB[:,iv2,jB,iB] 28564 28565 print 'Lluis jB iB jA iA _______',jB,iB,jA,iA,':',NpointsAB[jB,iB,jA,iA] 28566 print 'Lluis inpA shapes', inpointsA.shape, ':', inpointsA[:,jA,iA] 28567 print 'Lluis inpB shapes', inpointsB.shape, ':', inpointsB[:,jB,iB] 28568 for iv in range(NpointsAB[jB,iB,jA,iA]): 28569 print iv, 'NA:', sliceNA[jA,iA], 'pA:', inpointsA[iv,jA,iA], 'c:', sliceinA[:,inpointsA[iv,jA,iA],jA,iA], \ 28570 'NB:', sliceNB[jB,iB], 'pB:', inpointsB[iv,jB,iB], 'c:', sliceinB[:,inpointsB[iv,jB,iB],jB,iB], '=', \ 28571 pointsAB[:,iv,jB,iB,jA,iA] 28572 28573 quit() 28538 28574 28539 28575 maxNpointsAB = np.max(NpointsAB) … … 28579 28615 for iB in range(dxB): 28580 28616 Nin = NpointsAB[jB,iB,jA,iA] 28617 print 'jB iB jA iA:', jB,iB,jA,iA, ':', Nin 28581 28618 innewvar[:,0:Nin,jB,iB,jA,iA] = pointsAB[:,0:Nin,jB,iB,jA,iA] 28582 28619 slicearea = 0. … … 28592 28629 aB = osliceaB[iyB,ixB] 28593 28630 # I do not understand why this is needed !! 28594 if aA != gen.mamat[1] and aB != gen.mamat[1]: 28595 anewvar[iv.jB,iB,jA,iA]= (aA*pA)*(aB*pB) 28631 if type(aA)!=type(gen.mamat[1]) and \ 28632 type(aB)!=type(gen.mamat[1]): 28633 anewvar[iv,jB,iB,jA,iA]= (aA*pA)*(aB*pB) 28596 28634 slicearea = slicearea + (aA*pA)*(aB*pB) 28635 else: 28636 print type(aA) != type(gen.mamat[1]), type(aB) != type(gen.mamat[1]) 28637 print 'Lluis aA ________', iyA, ixA, 'shape osliceaA:', osliceaA.shape, ':', aA, gen.mamat[1] 28638 print osliceaA[iyA-2:iyA+3,ixA-2:ixA+3] 28639 print 'Lluis aB ________', iyB, ixB, 'shape osliceaB:', osliceaB.shape, ':', aB 28640 print osliceaB[iyB-2:iyB+3,ixB-2:ixB+3] 28641 #quit() 28597 28642 aanewvar[jB,iB,jA,iA]= slicearea 28598 28643 … … 28701 28746 aB = osliceaB[iyB,ixB] 28702 28747 # I do not understand why this is needed !! 28703 if aA != gen.mamat[1] and aB != gen.mamat[1]:28704 anewvar[iv,jB,iB,jA,iA]= (aA*pA)*(aB*pB)28748 if type(aA)!=type(gen.mamat[1]) and \ 28749 type(aB)!=type(gen.mamat[1]): 28705 28750 slicearea = slicearea + (aA*pA)*(aB*pB) 28706 28751 aanewvar[jB,iB,jA,iA]= slicearea … … 28731 28776 # Percentages as the areal fraction of each grid with respect slice size 28732 28777 sgp = sga/sa 28778 i=3 28779 j=10 28780 k=2 28781 print 'Lluis percentages ________', i, j,k 28782 Npt = sN[i,j,k] 28783 for iv in range(Npt): 28784 print 'Lluis:', iv,'pt:', sin[:,iv,i,j,k], 'a:', sa[i,j,k], 'ga:', sga[iv,i,j,k] 28785 quit() 28733 28786 28734 28787 ssh = sN.shape … … 28841 28894 newvar = onewvars[statn] 28842 28895 print 'Lluis stn:', statn, 'shape:', newvar.shape 28843 newvar[:] = vout[ist] 28896 rightvals = np.where(vout[6] == 0, gen.fillValueF, vout[ist]) 28897 newvar[:] = rightvals 28844 28898 onewnc.sync() 28899 ist = ist + 1 28845 28900 28846 28901 quit()
Note: See TracChangeset
for help on using the changeset viewer.