;|-----------------------------------------------------------------| ;| | ;| Subroutine IDM | ;| | ;| extracts basic parameters from Idata. | ;| | ;|-----------------------------------------------------------------| pro idm @gia_var.inc ;Get the no. of icolumns in the HDF file icolumns=idimsizes(1) orbitnumber=fix(idata(4,0)) OrbitNum='Orbit NO.'+ strcompress(fix(idata(4,0))) orbitdate='Date :'+strcompress(idata(1,0)) date=round(idata(1,0)) catch,errorstat if errorstat ne 0 then begin print,'!!!!!' print,'Error is ',errorstat endif ; ;First extract Horinzontal and vertical SDS DATA which is stored in rows 46-109 but reduce 1 since IDL starts arrays with row number 0. ;That is, we will extract 64 rows between 45 and 108.We'll get all icolumns. ; sdsstart=45.0 sdsrows=64.0 sdsvel=EXTRAC(idata,sdsstart,0,sdsrows,icolumns) isdsvel=fix(sdsvel) iflag=round(100.0*abs(sdsvel-isdsvel)) tsdshvel=fltarr(sdsrows/2,icolumns) tsdsvvel=fltarr(sdsrows/2,icolumns) sdstimest=fltarr(icolumns) sdstimeinc=fltarr(sdsrows) sdstime=fltarr(sdsrows,icolumns) tsdshtime=fltarr(sdsrows/2,icolumns) tsdsvtime=fltarr(sdsrows/2,icolumns) tsdsdate=fltarr(icolumns) tsdsut=fltarr(icolumns) tsdsilat=fltarr(icolumns) tsdsmlt=fltarr(icolumns) tsdsalt=fltarr(icolumns) tsdsglat=fltarr(icolumns) tsdsglon=fltarr(icolumns) tsdshline_fit=fltarr(2,icolumns) tsdsvline_fit=fltarr(2,icolumns) tsdshvel_fit=fltarr(sdsrows/2,icolumns) tsdsvvel_fit=fltarr(sdsrows/2,icolumns) jcnt=0 max2=-1.e3 min2=+1.e3 tmax=1. tmin=1.e10 ; ;Big loop ; For j=0,icolumns-1 do begin Flagsize=Size(where(iflag(*,j) eq 60)) sdstimest(j)=idata(2,j) hcnt=0 vcnt=0 ; ;skip low invariant lats (above), need 32 60s ; If (idata(13,j) gt 45) and Flagsize(1) eq 32 then begin For i=0,sdsrows-1 do begin sdstimeinc(i)=i*4*31.25+75 sdstime(i,j)=sdstimest(j)+sdstimeinc(i) If iflag(i,j) eq 60 then begin ;HORIZONTAL SDS If i eq 0 then begin tsdsdate(jcnt)=idata(1,j) tsdsut(jcnt) =idata(2,j) tsdsalt(jcnt) =idata(9,j) tsdsglat(jcnt)=idata(10,j) tsdsglon(jcnt)=idata(11,j) tsdsmlt(jcnt) =idata(12,j) tsdsilat(jcnt)=idata(13,j) Endif tsdshvel(hcnt,jcnt)=fix(sdsvel(i,j)) tsdshtime(hcnt,jcnt)=sdstime(i,j) ;tsdshtime(hcnt,jcnt)=sdstime(i,j)/1000. hcnt=hcnt+1 Endif else if iflag(i,j) eq 61 then begin ;vertical SDS tsdsvvel(vcnt,jcnt)=fix(sdsvel(i,j)) ;tsdsvtime(vcnt,jcnt)=sdstime(i,j)/1000. tsdsvtime(vcnt,jcnt)=sdstime(i,j) vcnt=vcnt+1 endif if (sdsvel(i,j) gt max2) then max2=sdsvel(i,j) if (sdsvel(i,j) lt min2) then min2=sdsvel(i,j) if (sdstime(i,j) gt tmax) then tmax=sdstime(i,j) if (sdstime(i,j) lt tmin) then tmin=sdstime(i,j) Endfor jcnt=jcnt+1 Endif ;end of the big if Endfor ;end of the big loop ;tmin=sdstime(0,0) ;tmax=sdstime(sdsrows-1,icolumns-1) sdsjcnt=jcnt if jcnt eq 0 then return ;clean up the zeros sdshvel=tsdshvel(*,0:jcnt-1) sdsvvel=tsdsvvel(*,0:jcnt-1) sdshtime=tsdshtime(*,0:jcnt-1) sdsvtime=tsdsvtime(*,0:jcnt-1) sdsdate=tsdsdate(0:jcnt-1) sdsut=tsdsut(0:jcnt-1) sdsmlt=tsdsmlt(0:jcnt-1) sdsilat=tsdsilat(0:jcnt-1) sdsalt=tsdsalt(0:jcnt-1) sdsilat=tsdsilat(0:jcnt-1) sdsmlt=tsdsmlt(0:jcnt-1) sdsalt=tsdsalt(0:jcnt-1) sdsglat=tsdsglat(0:jcnt-1) sdsglon=tsdsglon(0:jcnt-1) end;--------------------------------------------------------------------------------------