Changeset 766 in lmdz_wrf
- Timestamp:
- May 10, 2016, 1:55:00 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/nc_var_tools.py
r765 r766 13740 13740 13741 13741 # mindiff = np.min([minlat, minlon])/1. 13742 mindiff = np.min([minlat, minlon])*10.e613742 mindiffin = np.sqrt(minlat*minlat + minlon*minlon) 13743 13743 13744 13744 print ' ' + fname + ': Closest latitude to Equator:', minlat … … 13856 13856 quit(-1) 13857 13857 13858 sortedlonmap = np.sort(lonmap) 13859 sortedlatmap = np.sort(latmap) 13860 Nsortlonm = len(sortedlonmap) 13861 Nsortlatm = len(sortedlatmap) 13862 13863 diffsortlon = sortedlonmap[1:Nsortlonm-1]-sortedlonmap[0:Nsortlonm-2] 13864 diffsortlat = sortedlatmap[1:Nsortlatm-1]-sortedlatmap[0:Nsortlatm-2] 13865 13866 mindifflonmap = np.min(diffsortlon) 13867 maxdifflonmap = np.max(diffsortlon) 13868 mindifflatmap = np.min(diffsortlat) 13869 maxdifflatmap = np.max(diffsortlat) 13870 13871 mindiffmap = np.sqrt(mindifflonmap*mindifflonmap+mindifflatmap*mindifflatmap) 13872 maxdiffmap = np.sqrt(maxdifflonmap*maxdifflonmap+maxdifflatmap*maxdifflatmap) 13873 13874 print ' ' + fname + ': minimum distance in target projection:', mindiffmap, \ 13875 'maximum:', maxdiffmap 13858 13876 # Matrix map creation 13859 13877 ## … … 13902 13920 basicvardef(newvarindiff, 'locindiff', 'distance between input point and ' + \ 13903 13921 'its final location','degree') 13922 set_attributek(newvar,'authorized_minimum_distance',mindiff,'R') 13904 13923 13905 13924 # map variable … … 13923 13942 newvarin = newnc.createVariable('inpts', 'i4', ('pts')) 13924 13943 else: 13925 newvarin = newnc.createVariable('inpts', 'i4', ('lat','lon')) 13926 13927 basicvardef(newvarin, 'inpts', 'Equivalent point from the input source', '-') 13944 if kind[Lkind-4:Lkind] == 'frac': 13945 Nmaxcoinpt = np.int((maxdiffmap/mindiffin)*(maxdiffmap/mindiffin)) 13946 print ' ' + fname + ': maximum theoretical number of coincident ' + \ 13947 'grid points in the same target gid point:', Nmaxcoinpt 13948 newdim = newnc.createDimension('Ncoinpt', Nmaxcoinpt) 13949 newvarin = newnc.createVariable('inpts', 'i4', ('Ncoinpt','lat', \ 13950 'lon')) 13951 basicvardef(newvarin, 'inpts', 'Equivalent points from the input ' + 13952 'source', '-') 13953 else: 13954 newvarin = newnc.createVariable('inpts', 'i4', ('lat','lon')) 13955 basicvardef(newvarin, 'inpts', 'Equivalent point from the input ' + \ 13956 'source', '-') 13957 13928 13958 newvar.setncattr('coordinates', 'lon lat') 13929 13959 … … 13950 13980 13951 13981 # Reducing the searching points 13952 Nsearchpt = 49999913982 Nsearchpt = 999999 13953 13983 Ninpts=np.min([Nsearchpt, Ninpts-ipoint]) 13954 13984 newvarinvals = newvarinpt[ipoint:ipoint+Ninpts] … … 13957 13987 mapoints = ma.array(points, mask=maskpt) 13958 13988 ptsf = mapoints.compressed() 13959 13960 Nptsf = len(ptsf)13961 print Ninpts,'Npoints to find:', len(ptsf), ptsf[0:10], newvarindiff[ptsf[0:10]]13962 print ' ' + fname + ': from:', Ninpts,'re-locating:',Nptsf,'points starting at',\13963 ipoint,'...'13964 13989 13965 13990 Nptsf = len(ptsf) … … 14002 14027 idiff, ilonlatv = fin.module_forinterpolate.interpolate1dll(projlon, \ 14003 14028 projlat, lonvss, latvss, np.float64(mindiff), inptss) 14004 print 'Lluis shapes: newvar', newvar.shape,'ilonlatv:',ilonlatv.shape,'range:',np.min([len(idiff),fracs])14005 print 'Lluis shapes: ovar:',ovar.shape14006 14029 14007 14030 for i in range(np.min([len(idiff),fracs])): … … 14030 14053 14031 14054 for i in range(np.min([len(idiff),fracs])): 14032 print i,'Lluis:',ovar[iri+i], ilonlatv[i,1],',',ilonlatv[i,0],newvar[ovar[iri+i],ilonlatv[i,1],ilonlatv[i,0]], type(newvar[ovar[iri+i],ilonlatv[i,1],ilonlatv[i,0]]) 14033 if newvar[ovar[iri+i],ilonlatv[i,1],ilonlatv[i,0]].mask: 14034 newvar[ovar[iri+i],ilonlatv[i,1],ilonlatv[i,0]].mask = False 14035 newvar[ovar[iri+i],ilonlatv[i,1],ilonlatv[i,0]] = 1. 14055 if type(newvar[ovar[iri+i]-1,ilonlatv[i,1],ilonlatv[i,0]]) == \ 14056 type(ma.array(1)) and newvar[ovar[iri+i]-1,ilonlatv[i,1], \ 14057 ilonlatv[i,0]].mask: 14058 newvar[ovar[iri+i]-1,ilonlatv[i,1],ilonlatv[i,0]].mask = False 14059 newvar[ovar[iri+i]-1,ilonlatv[i,1],ilonlatv[i,0]] = 1. 14060 newvarin[0,ilonlatv[i,1],ilonlatv[i,0]] = iri + i 14036 14061 else: 14037 newvar[ovar[iri+i],ilonlatv[i,1],ilonlatv[i,0]] = \ 14038 newvar[ovar[iri+i],ilonlatv[i,1],ilonlatv[i,0]] + 1 14039 newvarin[ilonlatv[i,1],ilonlatv[i,0]] = iri + i 14062 Npt = np.sum(newvarin[:,ilonlatv[i,1],ilonlatv[i,0]] > 0) 14063 print ilonlatv[i,1],ilonlatv[i,0],'Npt:',Npt 14064 print newvarin[:,ilonlatv[i,1],ilonlatv[i,0]] 14065 newvar[ovar[iri+i]-1,ilonlatv[i,1],ilonlatv[i,0]] = \ 14066 newvar[ovar[iri+i]-1,ilonlatv[i,1],ilonlatv[i,0]] + 1. 14067 newvarin[Npt+1,ilonlatv[i,1],ilonlatv[i,0]] = iri + i 14040 14068 newvarinpt[iri+i] = 1 14041 14069 newvarindiff[iri+i] = idiff[i]
Note: See TracChangeset
for help on using the changeset viewer.