- Timestamp:
- Jan 15, 2015, 6:38:25 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tools/iniaqua.py
r216 r224 19 19 filekinds = ['CF', 'LMDZ', 'WRF'] 20 20 21 ## g.e. # iniaqua.py -d 32,32,39 -p hybdrid -o WRF -t 19791201000000 -z tropo -q 221 ## e.g. # iniaqua.py -d 32,32,39 -p hybdrid -o WRF -t 19791201000000 -z tropo -q 2 22 22 def fxy(dx, dy): 23 23 """! … … 2555 2555 extrattrns= list for the specific values for the variables' extra attributes 2556 2556 """ 2557 fname = 'generic_NetCDFile' 2557 2558 2558 2559 # Creation of dimensions … … 2570 2571 for varn in kvarns.keys(): 2571 2572 varvals = kvarns[varn] 2572 dimsvar = [] 2573 for dimn in varvals[1]: 2574 dimsvar.append(kdimns[dimn]) 2575 2576 if varvals[5] is not None: 2577 nerwvar = ncobj.createVariable(varvals[0], 'f4', tuple(dimsvar), \ 2578 fill_value=np.float(varvals[5])) 2579 else: 2580 newvar = ncobj.createVariable(varvals[0], 'f4', tuple(dimsvar)) 2573 if varvals[0] is not None: 2574 dimsvar = [] 2575 for dimn in varvals[1]: 2576 if dimn == 'DateStrLen': 2577 dimsvar.append(dimn) 2578 else: 2579 dimsvar.append(kdimns[dimn]) 2580 2581 if varvals[5] is not None: 2582 nerwvar = ncobj.createVariable(varvals[0], 'f4', tuple(dimsvar), \ 2583 fill_value=np.float(varvals[5])) 2584 else: 2585 newvar = ncobj.createVariable(varvals[0], 'f4', tuple(dimsvar)) 2581 2586 2582 2587 # Attributes 2583 for iattr in range(len(stdattrns)): 2584 attrn = stdattrns[iattr] 2585 if kattrns[attrn] is not None: 2586 newvar.setncattr(kattrns[attrn], varvals[2+iattr]) 2588 attrns = stdattrns.keys() 2589 for iattr in range(len(attrns)): 2590 attrn = attrns[iattr] 2591 if stdattrns[attrn] is not None and varvals[4+iattr] is not None: 2592 newvar.setncattr(stdattrns[attrn], varvals[4+iattr]) 2587 2593 2588 2594 # Extra attributes 2589 for iattr in range(len(extrattrns)): 2590 attrn = extrrattrns[iattr] 2591 if kfile == 'LMDZ': 2592 if attrn == 'coordinates': 2593 attrv = '' 2594 for din in varvals[1]: 2595 attrv = attrv + kdimns[din] + ' ' 2596 elif kfile == 'WRF': 2597 if attrn == 'FieldType': 2598 attrv = '104' 2599 elif attrn == 'MemoryOrder': 2600 attrv = '' 2601 Ndims = len(varvals[1]) 2602 for idim in range(Ndims,0,-1): 2603 if varvals[1][idim] != 'T': 2604 attrv = attrv + varvals[1][idim].uppercase 2605 elif attrn == 'stagger': 2606 staggeredvars = {} 2607 staggeredvars['U'] = 'X' 2608 staggeredvars['V'] = 'Y' 2609 staggeredvars['PH'] = 'Z' 2610 2611 if ncvar.searchInlist(staggeredvars.keys(),varvals[0]): 2612 attrv = staggeredvars[vavals[0]] 2613 2614 newvar.setncattr(extrattrns[iattr], attrv) 2615 2616 newvar.sync() 2595 for iattr in range(len(extrattrns)): 2596 attrn = extrattrns[iattr] 2597 if kfile == 'LMDZ': 2598 if attrn == 'coordinates': 2599 attrv = '' 2600 for din in varvals[1]: 2601 attrv = attrv + kdimns[din] + ' ' 2602 elif kfile == 'WRF': 2603 if attrn == 'FieldType': 2604 attrv = '104' 2605 elif attrn == 'MemoryOrder': 2606 attrv = '' 2607 Ndims = len(varvals[1]) 2608 for idim in range(Ndims-1,0,-1): 2609 if varvals[1][idim] != 't': 2610 attrv = attrv + varvals[1][idim].upper() 2611 elif attrn == 'stagger': 2612 staggeredvars = {} 2613 staggeredvars['U'] = 'X' 2614 staggeredvars['V'] = 'Y' 2615 staggeredvars['PH'] = 'Z' 2616 2617 if ncvar.searchInlist(staggeredvars.keys(),varvals[0]): 2618 attrv = staggeredvars[varvals[0]] 2619 else: 2620 attrv = '' 2621 2622 newvar.setncattr(extrattrns[iattr], attrv) 2623 2624 ncobj.sync() 2617 2625 2618 2626 return … … 2749 2757 # Vertical profile 2750 2758 tetajl = np.zeros((dimz, dimy+1, dimx), dtype=np.float) 2751 theta = np.zeros((dimy+1, dimx+1), dtype=np.float) 2752 thetarappel = np.zeros((dimz, dimy+1, dimx+1), dtype=np.float) 2759 #theta = np.zeros((dimy+1, dimx+1), dtype=np.float) 2760 #thetarappel = np.zeros((dimz, dimy+1, dimx+1), dtype=np.float) 2761 theta = np.zeros((dimy, dimx), dtype=np.float) 2762 thetarappel = np.zeros((dimz, dimy, dimx), dtype=np.float) 2753 2763 2754 2764 for l in range (dimz): … … 2824 2834 2825 2835 # bulk initialization of tracers 2826 print 'Lluis nqtot:',nqtot2827 2836 q = np.zeros((dimz, dimy, dimx, nqtot), dtype=np.float) 2828 2837 … … 2858 2867 for varn in ncf.variables.keys(): 2859 2868 varobj = ncf.variables[varn] 2860 if varn == 'lon': varobj[:] = lon 2861 elif varn == 'lat': varobj[:] = lat 2862 elif varn == 'lev': varobj[:] = presnivs 2863 elif varn == 'time': varobj[:] = timev 2864 elif varn == 'temp': varobj[0,:,:,:] = theta[:] 2865 elif varn == 'tsfc': varobj[:] = theta[0,:,:] 2866 elif varn == 'u10m': varobj[:] = ucov[0,:,:] 2867 elif varn == 'v10m': varobj[:] = vcov[0,:,:] 2868 elif varn == 'u': varobj[0,:,:,:] = ucov[:] 2869 elif varn == 'v': varobj[0,:,:,:] = vcov[:] 2870 elif varn == 'zsfc': varobj[0,:,:] = phisfc[:] 2871 elif varn == 'geopot': varobj[0,:,:] = phisall[:] 2872 elif varn == 'psfc': varobj[0,:,:] = press[:] 2873 elif varn == 'pres': varobj[0,:,:,:] = pres[:] 2874 elif varn == 'H2Ov': varobj[0,:,:,:] = q[:,:,:0] 2875 elif varn == 'H2Ol': varobj[0,:,:,:] = q[:,:,:1] 2876 2869 if varn == filevarns['lon'][0]: varobj[:] = lon 2870 elif varn == filevarns['lat'][0]: varobj[:] = lat 2871 elif varn == filevarns['lev'][0]: varobj[:] = presnivs 2872 elif varn == filevarns['time'][0]: varobj[:] = timev 2873 elif varn == filevarns['temp'][0]: 2874 print 'Lluis shapes varobj:',varobj.shape,'theta:',theta.shape 2875 varobj[0,:,:,:] = theta[:] 2876 elif varn == filevarns['tsfc'][0]: varobj[:] = theta[0,:,:] 2877 elif varn == filevarns['u10m'][0]: varobj[:] = ucov[0,:,:] 2878 elif varn == filevarns['v10m'][0]: varobj[:] = vcov[0,:,:] 2879 elif varn == filevarns['u'][0]: varobj[0,:,:,:] = ucov[:] 2880 elif varn == filevarns['v'][0]: varobj[0,:,:,:] = vcov[:] 2881 elif varn == filevarns['zsfc'][0]: varobj[0,:,:] = phisfc[:] 2882 elif varn == filevarns['geopot'][0]: varobj[0,:,:] = phisall[:] 2883 elif varn == filevarns['psfc'][0]: varobj[0,:,:] = press[:] 2884 elif varn == filevarns['pres'][0]: varobj[0,:,:,:] = pres[:] 2885 elif varn == filevarns['H2Ov'][0]: varobj[0,:,:,:] = q[:,:,:0] 2886 elif varn == filevarns['H2Ol'][0]: varobj[0,:,:,:] = q[:,:,:1] 2877 2887 2878 2888 ncf.sync()
Note: See TracChangeset
for help on using the changeset viewer.