;Use the NACP gap-filled met (1995-2006 hourly) and then LTER met ;(1989-2010) to eval tower met (PAR and precip) ;; LTER split: ;; read line, ;; header:YEAR4,DAYNUM,MONTH,SAMPLEDATE,HOUR,TOT_PRECIP,AVG_AIR_TEMP,AVG_REL_HUM,AVG_DEWPOINT_TEMP,PEAK_WIND_SPEED_5SEC,AVG_WIND_SPEED,RESULTANT_WIND_SPEED,RESULTANT_WIND_DIRECTION,STD_DEV_WIND_DIRECTION,MAX_WIND_SPEED_1MIN,AVG_PAR,AVG_LONGWAVE_RAD_EPPLEY,AVG_SW_SOL_RAD_EPPLEY,AVG_SHORTWAVE_RAD_LICOR ;; split: Year-1989, Daynum-1, Hour / 100 ;; save: Precip,Temp,RH,DP,WindSpeed,WindDir,PAR,LW_in,SW_in_1,SW_in_2 ;; 8784 lines per year, 1989-2010 (22 yrs), compare to met files (.xdf) PRO wlef_readlter_old ; infile = mydocs()+'cheas/lter/LTER-Hourlymet-1989-2010.txt' infile = '/air/incoming/wlef/micromet/lter/LTER19952012-Woodruff.csv' ; ltermet = make_Array(10,8784,22,/float,value=nan()) ltermet = make_Array(10,8784,18,/float,value=nan()) lterheader = ['Precip','Temp','Rh','DewPoint','WindSpeed','WindDir','PAR','LW_in','SW_in_1','SW_in_2'] curyr = -1 openr,fl,infile,/get_lun s='' readf,fl,s WHILE ~eof(fl) DO BEGIN s = '' readf,fl,s dta = strsplit(s,',',/extract,/preserve_null) nd = n_elements(dta) IF nd GT 4 THEN BEGIN yr = long(dta[0]) doy = long(dta[1]) hr = (long(dta[4])/100l) ;-1l IF yr NE curyr THEN BEGIN print,'On year ',yr curyr = yr ENDIF IF yr GE 1995 AND yr LE 2012 AND doy GE 1 AND doy LE 366 AND hr GE 0 AND hr LE 23 THEN BEGIN loc = (doy-1)*24l + hr IF nd GT 5 THEN ltermet[0,loc,yr-1995l] = float(dta[5]) IF nd GT 6 THEN ltermet[1,loc,yr-1995l] = float(dta[6]) IF nd GT 7 THEN ltermet[2,loc,yr-1995l] = float(dta[7]) IF nd GT 8 THEN ltermet[3,loc,yr-1995l] = float(dta[8]) IF nd GT 10 THEN ltermet[4,loc,yr-1995l] = float(dta[10]) IF nd GT 12 THEN ltermet[5,loc,yr-1995l] = float(dta[12]) IF nd GT 15 THEN ltermet[6,loc,yr-1995l] = float(dta[15]) IF nd GT 16 THEN ltermet[7,loc,yr-1995l] = float(dta[16]) IF nd GT 17 THEN ltermet[8,loc,yr-1995l] = float(dta[17]) IF nd GT 18 THEN ltermet[9,loc,yr-1995l] = float(dta[18]) ENDIF ENDIF ENDWHILE free_lun,fl ; save,ltermet,outheader,filename=mydocs()+'cheas/lter/ltermet19892010.sav' save,ltermet,lterheader,filename='/air/incoming/wlef/micromet/lter/lter19952012.sav' stop END PRO wlef_lterconv ;write ASCII files restore,mydocs()+'cheas/lter/ltermet19892010.sav' outdr = '/air/web/cheas/met/lter/ltermet_' replacebad,outdata,-999.0 FOR i = 0,21 DO BEGIN yr = i+1989l diy = days_in_year(yr)*24l ystr = string(yr,format='(i4.4)') outfl = outdr+ystr+'.txt' print,'Writing ',outfl openw,fl,outfl,/get_lun printf,fl,['Year','DOY','LST',outheader],format='(a4,a5,a5,10a12)' FOR j = 0l,diy-1l DO printf,fl,[yr,(j/24l)+1l,j MOD 24,outdata[*,j,i]],format='(i4,i5,i5,10f12.3)' free_lun,fl ENDFOR END ;comparisons ;FUTURE: FIX WHEN NEW LTER DATA IS IN ;PAR declines from 2006-2010 ;Precip 2002 - very high, 2004-2005 too low, 2009-2010 missing data ; and too low PRO wlef_metcompare restore,mydocs()+'cheas/lter/ltermet19892010.sav' lterpar = reform(outdata[6,0:8759,17:*]) ;PAR and Precip 2006-2010 p6 = read_Xdf('/air/incoming/wlef/flux/2006/met_2006.xdf',header=mh) p7 = read_Xdf('/air/incoming/wlef/flux/2007/met_2007.xdf',header=mh) p8 = read_Xdf('/air/incoming/wlef/flux/2008/met_2008.xdf',header=mh) p9 = read_Xdf('/air/incoming/wlef/flux/2009/met_2009.xdf',header=mh) p10 = read_Xdf('/air/incoming/wlef/flux/2010/met_2010.xdf',header=mh) par = shift(transpose([p6[26,*],p7[26,*],p8[26,0:8759],p9[26,*],p10[26,*]]),-6) l6 = (read_Ascii('/air/web/wetland/lcreek/lcreek2006_met.txt')).(0) l7 = (read_Ascii('/air/web/wetland/lcreek/lcreek2007_met.txt',delim=',',data_start=1)).(0) l8 = (read_Ascii('/air/web/wetland/lcreek/lcreek2008_met.txt',delim=',',data_start=1)).(0) l9 = (read_Ascii('/air/web/wetland/lcreek/lcreek2009_met.txt',delim=',',data_start=1)).(0) l10 = (read_Ascii('/air/projects/cheas/lcreek/lcreek2010_met.txt',delim=',',data_start=0)).(0) lpar = ([l6[32,*],l7[32,*],l8[32,0:17519],l9[32,*],l10[32,*]]) lpar[where(lpar LT 0)]=nan() lpar = average_cols(lpar,2,/nan) lpar = transpose(lpar) dn6 = daynight(lat=45.945,lon=-90.272,interval=24,yr=2006) dn7 = daynight(lat=45.945,lon=-90.272,interval=24,yr=2007) dn8 = daynight(lat=45.945,lon=-90.272,interval=24,yr=2008) dn9 = daynight(lat=45.945,lon=-90.272,interval=24,yr=2009) dn10 = daynight(lat=45.945,lon=-90.272,interval=24,yr=2010) newlter = lterpar/0.842105 ratio = [0.729, 0.695, 0.647, 0.631, 0.563] newlef = par FOR i = 0,4 DO newlef[*,i]/=ratio[i] lter6 = outdata[6,*,17]/0.842105 lter7 = outdata[6,*,18]/0.842105 lter8 = outdata[6,*,19]/0.842105 lter9 = outdata[6,*,20]/0.842105 lter10 = outdata[6,*,21]/0.842105 w6 = shift(p6[26,*],-6)/ratio[0] w7 = shift(p7[26,*],-6)/ratio[1] w8 = shift(p8[26,*],-6)/ratio[2] w9 = shift(p9[26,*],-6)/ratio[3] w10 = shift(p10[26,*],-6)/ratio[4] lp6 = transpose(average_arr(l6[32,*],2)) lp6[where(lp6 LT 0)]=nan() lp7 = transpose(average_arr(l7[32,*],2)) lp7[where(lp7 LT 0)]=nan() lp8 = transpose(average_arr(l8[32,*],2)) lp8[where(lp8 LT 0)]=nan() lp9 = transpose(average_arr(l9[32,*],2)) lp9[where(lp9 LT 0)]=nan() lp10 = transpose(average_arr(l10[32,*],2)) lp10[where(lp10 LT 0)]=nan() par6 = merge_array(w6,w6,w6,w6,w6,lp6,lter6[0,0:8759],filled=f6) par7 = merge_array(w7,w7,w7,w7,w7,lp7,lter7[0,0:8759],filled=f7) par8 = merge_array(w8,w8,w8,w8,w8,lp8,lter8[0,0:8783],filled=f8) par9 = merge_array(w9,w9,w9,w9,w9,lp9,lter9[0,0:8759],filled=f9) par10 = merge_array(w10,w10,w10,w10,w10,lp10,lter10[0:8759],filled=f10) par6[where(dn6 EQ 0)]=0.0 par7[where(dn7 EQ 0)]=0.0 par8[where(dn8 EQ 0)]=0.0 par9[where(dn9 EQ 0)]=0.0 par10[where(dn10 EQ 0)]=0.0 par6[where(dn6 GT 0 AND finite(par6) AND (par6 LT 0))]=nan() ; par7[where(dn7 GT 0 AND finite(par7) AND (par7 LT 0))]=nan() par8[where(dn8 GT 0 AND finite(par8) AND (par8 LT 0))]=nan() par9[where(dn9 GT 0 AND finite(par9) AND (par9 LT 0))]=nan() par10[where(dn10 GT 0 AND finite(par10) AND (par10 LT 0))]=nan() ;1 = WLEF, 6 = LOST CREEK, 7 = LTER ;write out prefpar to ; 2004 1 21 0 5 GOTO,skip replacebad,par6,-999 replacebad,par7,-999 replacebad,par8,-999 replacebad,par9,-999 replacebad,par10,-999 outpar = make_array(5,8760,/float,value=nan()) outpar[0,*] = 2006 outpar[1,*] = (lindgen(8760)/24l)+1l outpar[2,*] = (lindgen(8760) MOD 24) outpar[3,*] = par6 outpar[4,*] = f6 openw,fl,'/air/incoming/wlef/flux/2006/prefpar06.txt',/get_lun printf,fl,outpar,format='(5i8)' free_lun,fl outpar = make_array(5,8760,/float,value=nan()) outpar[0,*] = 2007 outpar[1,*] = (lindgen(8760)/24l)+1l outpar[2,*] = (lindgen(8760) MOD 24) outpar[3,*] = par7 outpar[4,*] = f7 openw,fl,'/air/incoming/wlef/flux/2007/prefpar07.txt',/get_lun printf,fl,outpar,format='(5i8)' free_lun,fl outpar = make_array(5,8784,/float,value=nan()) outpar[0,*] = 2008 outpar[1,*] = (lindgen(8784)/24l)+1l outpar[2,*] = (lindgen(8784) MOD 24) outpar[3,*] = par8 outpar[4,*] = f8 openw,fl,'/air/incoming/wlef/flux/2008/prefpar08.txt',/get_lun printf,fl,outpar,format='(5i8)' free_lun,fl outpar = make_array(5,8760,/float,value=nan()) outpar[0,*] = 2009 outpar[1,*] = (lindgen(8760)/24l)+1l outpar[2,*] = (lindgen(8760) MOD 24) outpar[3,*] = par9 outpar[4,*] = f9 openw,fl,'/air/incoming/wlef/flux/2009/prefpar09.txt',/get_lun printf,fl,outpar,format='(5i8)' free_lun,fl outpar = make_array(5,8760,/float,value=nan()) outpar[0,*] = 2010 outpar[1,*] = (lindgen(8760)/24l)+1l outpar[2,*] = (lindgen(8760) MOD 24) outpar[3,*] = par10 outpar[4,*] = f10 openw,fl,'/air/incoming/wlef/flux/2010/prefpar10.txt',/get_lun printf,fl,outpar,format='(5i8)' free_lun,fl skip: ;precip read 2002-2010 ;<2006 col 39 = precip, 40 = spring precip, 44 = pref precip (97 only) p2 = (read_ascii('/air/incoming/wlef/flux/2002/WLEF2002_met.txt')).(0) p3 = (read_ascii('/air/incoming/wlef/flux/2003/WLEF2003_met.txt')).(0) p4 = (read_ascii('/air/incoming/wlef/flux/2004/WLEF2004_met.txt')).(0) p5 = (read_ascii('/air/incoming/wlef/flux/2005/WLEF2005_met.txt')).(0) lterpre = reform(outdata[0,0:8759,13:*]) precipol = transpose([p2[39,*],p3[39,*],p4[39,0:8759],p5[39,*]]) precip = shift(transpose([p6[25,*],p7[25,*],p8[25,0:8759],p9[25,*],p10[25,*]]),-6) precip = [[precipol],[precip]] precip[where(precip LT 0 OR ~finite(precip) OR precip GT 25)]=nan() ;2002 bad, 2004-2005 bad, 2006?, 2009-2010 bad ;merge (shift timezone for LTER in 2006-2010), replacebad -999, rewrite met ;write_xdf,'/data/incoming/wlef/flux/'+yrdr+'met_'+yrstr+'.xdf',m,header=mheader ; openw,fl,'/data/incoming/wlef/flux/'+yrdr+'met_'+yrstr+'.txt',/get_lun ; printf,fl,mh,format='(a4," ",a2," ",a2," ",a2," ",a3," ",a7," ",20(a10," "),a10)' ; FOR i = 0,n_elements(m[0,*])-1 DO printf,fl,m[*,i],format='(i4," ",i2," ",i2," ",i2," ",i3," ",f7.3," ",20(f10.1," "),f10.1)' ; free_lun,fl ;for each year - run the screen, merge, rewrite met files ;format 2002-2005, no header i4,i5,i5,i5,i5,f14.5,38f14.2 pre2 = p2[39,*] pre2[where(pre2 LT 0 OR ~finite(pre2) OR pre2 GT 25)]=nan() pre3 = p3[39,*] pre3[where(pre3 LT 0 OR ~finite(pre3) OR pre3 GT 25)]=nan() pre4 = p4[39,*] pre4[where(pre4 LT 0 OR ~finite(pre4) OR pre4 GT 25)]=nan() pre5 = p5[39,*] pre5[where(pre5 LT 0 OR ~finite(pre5) OR pre5 GT 25)]=nan() pre6 = p6[25,*] pre6[where(pre6 LT 0 OR ~finite(pre6) OR pre6 GT 25)]=nan() pre7 = p7[25,*] pre7[where(pre7 LT 0 OR ~finite(pre7) OR pre7 GT 25)]=nan() pre8 = p8[25,*] pre8[where(pre8 LT 0 OR ~finite(pre8) OR pre8 GT 25)]=nan() pre9 = p9[25,*] pre9[where(pre9 LT 0 OR ~finite(pre9) OR pre9 GT 25)]=nan() pre10 = p10[25,*] pre10[where(pre10 LT 0 OR ~finite(pre10) OR pre10 GT 25)]=nan() lpre2 = outdata[0,0:8759,13] lpre3 = outdata[0,0:8759,14] lpre4 = outdata[0,0:8783,15] lpre5 = outdata[0,0:8759,16] lpre6 = shift(outdata[0,0:8759,17],6) lpre7 = shift(outdata[0,0:8759,18],6) lpre8 = shift(outdata[0,0:8783,19],6) lpre9 = shift(outdata[0,0:8759,20],6) lpre10 = shift(outdata[0,0:8759,21],6) p2[39,*] = merge_Array(lpre2,pre2) p4[39,*] = merge_Array(lpre4,pre4) p5[39,*] = merge_Array(lpre5,pre5) p9[25,*] = merge_ArraY(lpre9,pre9) p10[25,*] = merge_ArraY(lpre10,pre10) p3[39,*] = merge_Array(pre3,lpre3) p6[25,*] = merge_Array(pre6,lpre6) p7[25,*] = merge_Array(pre7,lpre6) p8[25,*] = merge_Array(pre8,lpre8) stop replacebad,p2,-999.0 replacebad,p3,-999.0 replacebad,p4,-999.0 replacebad,p5,-999.0 replacebad,p6,-999.0 replacebad,p7,-999.0 replacebad,p8,-999.0 replacebad,p9,-999.0 replacebad,p10,-999.0 GOTO,hohaa openw,fl,'/air/incoming/wlef/flux/2002/WLEF2002_met.txt',/get_lun FOR i = 0,n_elements(p2[0,*])-1 DO printf,fl,p2[*,i],format='(i4,i5,i5,i5,i5,f14.5,38f14.2)' free_lun,fl openw,fl,'/air/incoming/wlef/flux/2003/WLEF2003_met.txt',/get_lun FOR i = 0,n_elements(p3[0,*])-1 DO printf,fl,p3[*,i],format='(i4,i5,i5,i5,i5,f14.5,38f14.2)' free_lun,fl openw,fl,'/air/incoming/wlef/flux/2004/WLEF2004_met.txt',/get_lun FOR i = 0,n_elements(p4[0,*])-1 DO printf,fl,p4[*,i],format='(i4,i5,i5,i5,i5,f14.5,38f14.2)' free_lun,fl openw,fl,'/air/incoming/wlef/flux/2005/WLEF2005_met.txt',/get_lun FOR i = 0,n_elements(p5[0,*])-1 DO printf,fl,p5[*,i],format='(i4,i5,i5,i5,i5,f14.5,38f14.2)' free_lun,fl hohaa: write_xdf,'/air/incoming/wlef/flux/2006/met_2006.xdf',p6,header=mh openw,fl,'/air/incoming/wlef/flux/2006/met_2006.txt',/get_lun printf,fl,mh,format='(a4," ",a2," ",a2," ",a2," ",a3," ",a7," ",20(a10," "),a10)' FOR i = 0,n_elements(p6[0,*])-1 DO printf,fl,p6[*,i],format='(i4," ",i2," ",i2," ",i2," ",i3," ",f7.3," ",20(f10.1," "),f10.1)' free_lun,fl write_xdf,'/air/incoming/wlef/flux/2007/met_2007.xdf',p7,header=mh openw,fl,'/air/incoming/wlef/flux/2007/met_2007.txt',/get_lun printf,fl,mh,format='(a4," ",a2," ",a2," ",a2," ",a3," ",a7," ",20(a10," "),a10)' FOR i = 0,n_elements(p7[0,*])-1 DO printf,fl,p7[*,i],format='(i4," ",i2," ",i2," ",i2," ",i3," ",f7.3," ",20(f10.1," "),f10.1)' free_lun,fl write_xdf,'/air/incoming/wlef/flux/2008/met_2008.xdf',p8,header=mh openw,fl,'/air/incoming/wlef/flux/2008/met_2008.txt',/get_lun printf,fl,mh,format='(a4," ",a2," ",a2," ",a2," ",a3," ",a7," ",20(a10," "),a10)' FOR i = 0,n_elements(p8[0,*])-1 DO printf,fl,p8[*,i],format='(i4," ",i2," ",i2," ",i2," ",i3," ",f7.3," ",20(f10.1," "),f10.1)' free_lun,fl write_xdf,'/air/incoming/wlef/flux/2009/met_2009.xdf',p9,header=mh openw,fl,'/air/incoming/wlef/flux/2009/met_2009.txt',/get_lun printf,fl,mh,format='(a4," ",a2," ",a2," ",a2," ",a3," ",a7," ",20(a10," "),a10)' FOR i = 0,n_elements(p9[0,*])-1 DO printf,fl,p9[*,i],format='(i4," ",i2," ",i2," ",i2," ",i3," ",f7.3," ",20(f10.1," "),f10.1)' free_lun,fl write_xdf,'/air/incoming/wlef/flux/2010/met_2010.xdf',p10,header=mh openw,fl,'/air/incoming/wlef/flux/2010/met_2010.txt',/get_lun printf,fl,mh,format='(a4," ",a2," ",a2," ",a2," ",a3," ",a7," ",20(a10," "),a10)' FOR i = 0,n_elements(p10[0,*])-1 DO printf,fl,p10[*,i],format='(i4," ",i2," ",i2," ",i2," ",i3," ",f7.3," ",20(f10.1," "),f10.1)' free_lun,fl stop END ;par solution ;Year Day Hour ; 2004 1 21 0 5 ;make prefpar files for 2006-2010 ;fix WLEF par: ratio fit: .923658 -0.000188434 (daily) ;use CST timing ;then merge in LTER par (source 7) ; make night dark (run daynight) ; dn = daynight(lat=45.945,lon=-90.272,interval=24,yr=yr) ; day = dn NE 0 ; night = dn EQ 0 ; par[where(night)]=0.0 ;ltermeans ;272, 277, 306, 309, 346 (LTER) ;234, 230, 241, 210, 238 (WLEF) ;annual ratio: [0.860,0.830,0.788,0.680,0.688] ;WLEF to lost creek ;340, 637, 641, 640, 560 (LC) ;248, 443, 415, 404, 315 (LEF) ;annual ratio: [0.729, 0.695, 0.647, 0.631, 0.563] ;LTER to lost creek ;323, 636, 604, 640, 675 (LC) ;276, 537, 495, 572, 576 (LTER) ;annual ratio: 0.842105 ;add in lost creek col 32 ;merge_array ;save prefpar06 to 10 FUNCTION wlef_readlter,yr,lterheader=lterheader ystr = string(yr,format='(i4.4)') nhours = days_in_year(yr)*24l ;read LTER file /air/projects/cheas/lter/LTERYYYY.csv infile = '/air/incoming/wlef/micromet/lter/LTER'+ystr+'.csv' lterdata = make_Array(10,8784,/float,value=nan()) lterheader = ['Precip','Temp','Rh','DewPoint','WindSpeed','WindDir','PAR','LW_in','SW_in_1','SW_in_2'] IF file_test(infile,/read) THEN BEGIN print,'Reading ',infile curyr = -1 openr,fl,infile,/get_lun s='' readf,fl,s WHILE ~eof(fl) DO BEGIN s = '' readf,fl,s dta = strsplit(s,',',/extract,/preserve_null) nd = n_elements(dta) IF nd GT 4 THEN BEGIN lyr = long(dta[0]) IF yr GE 2023 THEN doy = long(dta[2]) ELSE doy = long(dta[1]) IF (yr GE 2023) THEN hr = long(dta[3])/100l ELSE IF ((yr EQ 2010) AND (doy LT 245)) OR (yr GE 2012) THEN hr = long(dta[4])/100l ELSE hr = long(dta[4]) IF lyr EQ yr THEN BEGIN loc = (doy-1)*24l + hr IF yr GE 2023 THEN BEGIN IF nd GT 26 THEN lterdata[0,loc] = float(dta[26]) ;precip IF nd GT 4 THEN lterdata[1,loc] = float(dta[4]) ;temp IF nd GT 8 THEN lterdata[2,loc] = float(dta[8]) ;RH IF nd GT 6 THEN lterdata[3,loc] = float(dta[6]) ;dewpoint IF nd GT 12 THEN lterdata[4,loc] = float(dta[12]) ;Windspeed ;IF nd GT 12 THEN lterdata[5,loc] = float(dta[12]) ;Winddir IF nd GT 18 THEN lterdata[6,loc] = float(dta[18]) ;PAR IF nd GT 24 THEN lterdata[7,loc] = float(dta[24]) ;LW_in IF nd GT 20 THEN lterdata[8,loc] = float(dta[20]) ;SW_in_1 IF nd GT 22 THEN lterdata[9,loc] = float(dta[22]) ;SW_in_2 ENDIF ELSE BEGIN IF nd GT 5 THEN lterdata[0,loc] = float(dta[5]) ;precip IF nd GT 6 THEN lterdata[1,loc] = float(dta[6]) ;temp IF nd GT 7 THEN lterdata[2,loc] = float(dta[7]) ;RH IF nd GT 8 THEN lterdata[3,loc] = float(dta[8]) ;dewpoint IF nd GT 10 THEN lterdata[4,loc] = float(dta[10]) ;Windspeed IF nd GT 12 THEN lterdata[5,loc] = float(dta[12]) ;Winddir IF nd GT 15 THEN lterdata[6,loc] = float(dta[15]) ;PAR IF nd GT 16 THEN lterdata[7,loc] = float(dta[16]) ;LW_in IF nd GT 17 THEN lterdata[8,loc] = float(dta[17]) ;SW_in_1 IF nd GT 18 THEN lterdata[9,loc] = float(dta[18]) ;SW_in_2 ENDELSE ENDIF ENDIF ENDWHILE free_lun,fl ENDIF ELSE print,'Cannot read ',infile return,lterdata END PRO wlef_prefpar,yr,explore=explore ;first download LTER data from http://lter.limnology.wisc.edu/data/filter/11031 ystr = string(yr,format='(i4.4)') nhours = days_in_year(yr)*24l ;read LTER file /data/projects/cheas/lter/LTERYYYY.csv lterdata = wlef_readlter(yr,lterheader=lterheader) ;read WillowCreek wcreekfile = '/air/incoming/WillowCreek/flux/'+ystr+'/met_'+ystr+'.xdf' IF file_test(wcreekfile,/read) THEN wcreekdata = read_xdf(wcreekfile,header=wh) ELSE wcreekdata = make_Array(69,48l*days_in_year(yr),/float,value=nan()) ;read LostCreek lcreekfile = '/air/projects/cheas/lcreek/lcreek'+ystr+'_met.txt' IF file_test(lcreekfile,/read) THEN lcreekdata = (read_ascii(lcreekfile,delim=',',data_start=0)).(0) ELSE lcreekdata = make_array(50,48L*days_in_year(yr),/float,value=nan()) lcreekfilem = '/air/incoming/lcreek/flux/flux_'+ystr+'.xdf' IF file_test(lcreekfilem,/read) THEN BEGIN lcreekdatam = read_xdf(lcreekfilem,header=lh) lcreekdata[32,*] = shift(lcreekdatam[8,*],-12) ENDIF ;read WLEF met PAR file wleffile = '/air/incoming/wlef/flux/'+ystr+'/met_'+ystr+'.xdf' wlefdata = read_Xdf(wleffile,header=mh) IF keyword_Set(explore) THEN stop ;use here to explore "precip" wlef 25, lter 0s and "rh" - wcreek 33-38, lter 2 ;extract and average/shift PARs par_wlef = shift(reform(wlefdata[26,*]),-6) bp = where(finite(par_wlef) AND par_wlef LT 0,nbp) IF nbp GT 0 THEN par_wlef[bp] = nan() par_lcreek = reform(lcreekdata[32,*]) bp = wherE(finite(par_lcreek) AND par_lcreek LT 0,nbp) IF nbp GT 0 THEN par_lcreek[bp] = nan() par_lcreek = average_arr(par_lcreek,2,/nan) par_wcreek = reform(wcreekdata[55,*]) bp = where(finite(par_wcreek) AND par_wcreek LT 0,nbp) IF nbp GT 0 THEN par_wcreek[bp] = nan() par_wcreek = average_arr(par_wcreek,2,/nan) par_wcreek = shift(par_Wcreek,-6) par_lter = reform(lterdata[6,*]) ;/0.842105 bp = where(finite(par_lter) AND par_lter LT 0,nbp) IF nbp GT 0 THEN par_lter[bp] = nan() dn = daynight(lat=45.945,lon=-90.272,interval=24,yr=yr) night = where(dn EQ 0,nnight) par_wlef[night]=0 par_wcreek[night]=0 par_lcreek[night]=0 par_lter[night]=0 dpar = make_Array(nhours,/float,value=nan()) g = where(finite(par_lter) AND finite(par_wcreek),ng) IF ng GT nnight THEN BEGIN ratio_wc = mean(par_lter[g])/mean(par_wcreek[g]) par_wcreek_fix = par_wcreek * ratio_wc ENDIF ELSE BEGIN IF yr LT 2022 THEN par_wcreek_fix = par_Wcreek * 2.01840 ELSE par_wcreek_fix = par_wcreek ENDELSE ;2011 value g2 = where(finite(par_lcreek) AND finite(par_wlef),ng) IF ng GT nnight THEN BEGIN ratio_wlef = mean(par_lcreek[g2])/mean(par_wlef[g2]) par_wlef_fix = par_wlef * ratio_wlef ENDIF ELSE BEGIN g4 = where(finite(par_wcreek_fix) AND finite(par_wlef),ng) IF ng GT nnight THEN BEGIN ratio_wlef_2 = mean(par_wcreek_fix[g4])/mean(par_wlef[g4]) par_wlef_fix = par_wlef * ratio_wlef_2 ENDIF ELSE par_wlef_fix = par_Wlef * 1.23 ;2022, 2011 value 1.62 ENDELSE g3 = where(finite(par_lter) AND finite(par_lcreek),ng) IF ng GT nnight THEN BEGIN ratio_lcreek = mean(par_lter[g3])/mean(par_lcreek[g3]) par_lter_fix = par_lter / ratio_lcreek ENDIF ELSE par_lter_fix = par_lter ;; g2 = where(finite(par_lter) AND finite(par_wlef),ng) ;; IF ng GT nnight THEN BEGIN ;; ratio_wlef = mean(par_lter[g2])/mean(par_wlef[g2]) ;; par_wlef_fix = par_wlef * ratio_wlef ;; ENDIF ELSE BEGIN ;; g4 = where(finite(par_wcreek_fix) AND finite(par_wlef),ng) ;; IF ng GT nnight THEN BEGIN ;; ratio_wlef_2 = mean(par_wcreek_fix[g4])/mean(par_wlef[g4]) ;; par_wlef_fix = par_wlef * ratio_wlef_2 ;; ENDIF ELSE par_wlef_fix = par_Wlef * 1.62 ;2011 value ;; ENDELSE ;; g3 = where(finite(par_lter) AND finite(par_lcreek),ng) ;; IF ng GT nnight THEN BEGIN ;; ratio_lcreek = mean(par_lter[g3])/mean(par_lcreek[g3]) ;; par_lcreek_fix = par_lcreek * ratio_lcreek ;; ENDIF ELSE par_lcreek_fix = par_lcreek par = merge_array(par_wlef_fix,par_wlef_fix,par_wcreek_fix,par_Wcreek_fix,par_wcreek_fix,par_lcreek,par_lter_fix,filled=filled) replacebad,par,-999.0 outpar = make_array(5,nhours,/float,value=nan()) outpar[0,*] = yr outpar[1,*] = (lindgen(nhours)/24l)+1l outpar[2,*] = (lindgen(nhours) MOD 24) outpar[3,*] = par outpar[4,*] = filled openw,fl,'/air/incoming/wlef/flux/'+ystr+'/prefpar'+strmid(ystr,2)+'.txt',/get_lun printf,fl,outpar,format='(5i8)' free_lun,fl ;57 is precip ;compute annual ratio, where both are good ;output prefpar11 END PRO wlef_prefprecip,yr wlefpre = make_array(9,days_in_year(yr)*8l,/float,value=nan()) wlefhead = ['Year','Mon','Day','JD','Hr','apcp','soilw0_10cm','soill0_10cm','dswrfsfc'] wlefpre[0,*] = yr vars = ['apcp','soilw0_10cm','soill0_10cm','dswrfsfc'] harr = [0,3,6,9,12,15,18,21] ;read narr precip and soilm for year, save in array ystr=string(yr,format='(i4.4)') FOR mo = 1,12 DO BEGIN mstr = string(mo,format='(i2.2)') FOR day = 1,days_in_month(mo,y=yr) DO BEGIN dstr = string(day,format='(i2.2)') jd = dy_to_jd(ystr+mstr+dstr) print,'Reading ',jd,' for year ',yr loc = (jd-1l)*8l wlefpre[1,loc:loc+7] = mo wlefpre[2,loc:loc+7] = day wlefpre[3,loc:loc+7] = jd wlefpre[4,loc:loc+7] = harr IF (yr LT 2012) OR (yr EQ 2012 AND mo LT 8) THEN BEGIN t = readnarr(yr,mo,day,vars,lats=[45.945],lons=[-90.273]) IF t.error EQ 0 THEN BEGIN wlefpre[5,loc:loc+7] = reform(t.apcp.data) wlefpre[6,loc:loc+7] = reform(t.soilw0_10cm.data) wlefpre[7,loc:loc+7] = reform(t.soill0_10cm.data) wlefpre[8,loc:loc+7] = reform(t.dswrfsfc.data) ENDIF ENDIF ; stop ENDFOR ENDFOR save,filename='/sap/projects/psyn/narr/narr_precip_wlef_'+ystr+'.sav',wlefhead,wlefpre ;run 1997-2012 (2012 end at July 9) ;WLEF = -90.273 45.945 ;create mega_array for each year - write out to file (add to prefpar ; code above) ;use to create daily ;stop ; return,reform(t.apcp.data) END PRO wlef_prefprecip_stitch ;skip 2002, get daily avg or total yr = findgen(16)+1997 yr = yr[where(yr NE 2002)] precip = make_array(366,15,/float,value=nan()) soilw = precip soill = precip swave = precip FOR i = 0,14 DO BEGIN year = yr[i] diy = days_in_year(year)-1 ystr = string(year,format='(i4.4)') restore,'/sap/projects/psyn/narr/narr_precip_wlef_'+ystr+'.sav' bval = where(~finite(wlefpre) OR (wlefpre GT 5000.0),nbv) IF nbv GT 0 THEN wlefpre[bval]=nan() precip[0:diy,i] = average_arr(shift(reform(wlefpre[5,*]),-2),8,/tot,/nan) soilw[0:diy,i] = average_arr(shift(reform(wlefpre[6,*]),-2),8,/nan) soill[0:diy,i] = average_arr(shift(reform(wlefpre[7,*]),-2),8,/nan) swave[0:diy,i] = average_arr(shift(reform(wlefpre[8,*]),-2),8,/nan) ENDFOR stop save,filename='/sap/projects/psyn/narr/narr_precip_wlef_daily.sav',precip,soilw,soill,swave END FUNCTION wlef_readcosmos_old cms = read_ascii(mydocs()+'cheas/cosmos/COSMOS2011-2012.csv',delim=',',data_start=1) cms=cms.(0) l11 = (findgen(8760)/24.)+1 cms11s = cms[6,where(cms[0,*] EQ 2011)] cms11d = cms[3,where(cms[0,*] EQ 2011)] sm11 = interpol(cms11s,cms11d,l11,/nan) sm11[0:4799] = nan() l12 = (findgen(8784)/24.)+1 cms12s = cms[6,where(cms[0,*] EQ 2012)] cms12d = cms[3,where(cms[0,*] EQ 2012)] sm12 = interpol(cms12s,cms12d,l12,/nan) return,[sm11,sm12] END FUNCTION wlef_readcosmos,yr ;5 = sm ;6 = depth yrstr = string(yr,format='(i4.4)') smarr = make_Array(2,8784,/float,value=nan()) fname = '/air/incoming/wlef/micromet/cosmos/cosmos'+yrstr+'.txt' IF file_test(fname,/read) THEN BEGIN ; cms = read_ascii(fname,delim=',') ; FIX strsplit ,:- ; cms=cms.(0) openr,fl,fname,/get_lun WHILE ~eof(fl) DO BEGIN cms = '' readf,fl,cms cms = strsplit(cms,', -:',/extract) doy = dy_to_jd(cms[0]+cms[1]+cms[2]) hr = cms[3,*] min = cms[4,*] loc = 24l*(doy-1l)+round(hr+min/60.0) IF loc GE 0 AND loc LT 8784 THEN BEGIN smarr[0,loc] = cms[5,*] smarr[1,loc] = cms[6,*] ENDIF ENDWHILE freE_lun,fl ENDIF ELSE BEGIN print,'Cannot find '+fname ENDELSE return,smarr ; l11 = (findgen(8760)/24.)+1 ; cms11s = cms[6,where(cms[0,*] EQ 2011)] ; cms11d = cms[3,where(cms[0,*] EQ 2011)] ; sm11 = interpol(cms11s,cms11d,l11,/nan) ; sm11[0:4799] = nan() ; l12 = (findgen(8784)/24.)+1 ; cms12s = cms[6,where(cms[0,*] EQ 2012)] ; cms12d = cms[3,where(cms[0,*] EQ 2012)] ; sm12 = interpol(cms12s,cms12d,l12,/nan) return,[sm11,sm12] END