好久不见,水博客来了。最近甚是懒散。没啥想写的,感觉可以把一些code理一理,算是在这里备份一下。
bpch文件剪切
eg. seperate_bpch.pro (主要是用一下bpch_sep这个函数)
该代码能够对GEOS-Chem输出的二进制文件进行裁剪,要不然trac*文件可能有几十上百G,太大了实在不方面分析。通过这个代码可以对文件进行时间和变量切片。
关键在bpch_dep这一行,tau0对应时间切片,tracer对应变量切片,这里的数字对应到tracerinfo.dat里看。我这里tracer=2表示将臭氧相关的变量切出来。
;This is a program to seperate bpch
pro seperate_bpch
year=1982
sday=[1,1,1,1,1,1,1,1,1,1,1,1]
eday=[31,28,31,30,31,30,31,31,30,31,30,31]
;---------
;readfile
;---------
dir='./'
file=dir+'trac_avg.merra2_2x25_standard.198209010000'
for mon=9,9 do begin
for id=sday(mon-1),eday(mon-1) do begin
date=year*10000L+mon*100+id
num=NYMD2TAU(date)
print,num,date
outfile='./bpch/'+'ctm_merra2.2x25.'+strtrim(string(date),2)+'.bpch'
bpch_sep,file,outfile,tau0=num,tracer=2
endfor
endfor
stop
end
bpch文件转nc文件
eg. bpch2nc_ts.pro (主要是用一下bpch2nc这个函数)
;This is a program to transfer bpch file into nc file
pro bpch2nc_ts
year=1982
monthday=[31,29,31,30,31,30,31,31]
for month=09,09 do begin
for day=01,monthday(month-1) do begin
filein ='ctm_merra2.2x25.'+string(year,form='(i4.4)')+string(month,form='(i2.2)')+string(day,form='(i2.2)')+'.bpch'
fileout='ctm_merra2.2x25.'+string(year,form='(i4.4)')+string(month,form='(i2.2)')+string(day,form='(i2.2)')+'.nc'
bpch2nc, filein, fileout
print,fileout
endfor
endfor
end