程式 | 版本 | 編譯 | 說明 |
---|---|---|---|
wrf | 4.0/4.2.1等等不拘 | 國網上的intel mpi | 必須是pnetcdf版本、不接受序列版本netcdf |
TransWrfout | 3.11 | python | 將pnetcdf之wrfout結果填入指定序列netcdf模版 |
mcip | 5.0/5.1 | ifort | 無mpi之序列版本。不能使用平行作業 |
Time
維度,以減少檔案容量ncdump -h $nc|grep WRF
nc = netCDF4.Dataset(fname,'r+')
nc0= netCDF4.Dataset(fnam0,'r')
V =[list(filter(lambda x:nc.variables[x].ndim==j, [i for i in nc.variables])) for j in [1,2,3,4]]
V0=[list(filter(lambda x:nc0.variables[x].ndim==j, [i for i in nc0.variables])) for j in [1,2,3,4]]
v='V10'
nt,nrow,ncol=nc0[v].shape
print(nt)
for t in range(nt):
nc[v][t,:,:]=nc0[v][t,:,:]
for v in V[3]:
nc[v][:,:,:,:]=nc0[v][:,:,:,:]
for v in V[2]:
if v not in V0[2]:continue
nc[v][:,:,:]=nc0[v][:,:,:]
for v in V[1]:
if nc[v].shape!=nc0[v].shape:continue
nc[v][:,:]=nc0[v][:,:]
for v in V[0]:
nc[v][:]=nc0[v][:]
with open('att.txt', 'r') as f:
var=[i.split(':')[1].split('=')[0].replace(' ','') for i in f if len(i)>0]
for v in var:
if '-' in v:continue
try:
exec('nc.'+v+'=nc0.'+v)
except:
continue
$BEGD
$gfs
目錄連結到$fcst
之作法pwd
)dates
)targ
targ=fcst+'/grid45/wrfout'
$InMetFiles
仍為固定檔名之暫存檔
nam0=pwd+'/wrfout_d0'+ad0+'_'+dates[jj]+'_00:00:00'
tdy=sys.argv[1]
bdate=datetime.datetime.strptime(tdy,"%Y-%m-%d")
nd=12
dates=[(bdate+datetime.timedelta(days=i)).strftime("%Y-%m-%d") for i in range(nd)]
...
pwd=subprocess.check_output("pwd" ,shell=True).decode('utf8').strip('\n')
fcst='/work/sinotec2/cmaqruns/forecast'
targ=fcst+'/grid45/wrfout'
ads={1:['3'],2:['1','2']}
gds={1:['03'],2:['45','09']}
ndms=1
if pwd[-3:]=='45k':
ndms=2
with open(targ+'/att.txt', 'r') as f:
var=[i.split(':')[1].split('=')[0].replace(' ','') for i in f if len(i)>0]
for ii in range(ndms):
ad=ads[ndms][ii]
ad0=ad
if ndms==1:ad0='1'
ftemp=targ+'/wrfout_d0'+ad+'_template'
for jj in range(nd):
fnam0=pwd+'/wrfout_d0'+ad0+'_'+dates[jj]+'_00:00:00'
if not os.path.isfile(fnam0):continue
nc0= netCDF4.Dataset(fnam0,'r')
fname=targ+'/wrfout_d0'+ad+'_'+str(jj)
os.system('test -e '+fname+' && rm -f '+fname+';cp '+ftemp+' '+fname)
nc = netCDF4.Dataset(fname,'r+')