; orbit_geotail.pro ; ; Plot Geotail IMP 8 trajectories in Y-Z, and X-Z planes with model ; magnetospheric field lines, bowshocks, magnetopauses, etc. ; ; ; 03/19/97 SHC adapted from orbit_hk.pro also by SHC ; ;------ subroutine get_mp ; pro get_mp,xmp,ymp,n,standoff_bs,pdyn_index theta1=300.d0 theta2=300.d0 DegtoRad=!PI/180.d0 dtheta1=theta1/(n-1) dtheta2=theta2/(n-1) theta1=-150.d0 theta2=-150.d0 r_bs=0. x1=0. y1=0. z1=0. rnorm=0. bs_factor=1.0 standoff_bs2=0.0 if(pdyn_index eq 1) then bs_factor=1.0 $ else bs_factor=(1.8/8.0)^(1.0/6.0) ;s1=call_external('bs_mp.so','bowshock_peredo_idl',$ ; 10.,2.0,13.,0.0,0.0,standoff_bs2,y1,z1,rnorm,2L) for i=0,n-1 do begin if(pdyn_index eq 1) then begin xmp(i)=11.000d0*cos(theta1*DegtoRad) if(xmp(i) lt 0.) then xmp(i)=xmp(i)*2.0 r=217.2d0-0.14*xmp(i)*xmp(i)-18.2*xmp(i) if(r lt 0.) then r=0. ymp(i)=sqrt(r) ; Sibeck's mp model ; for 1.47ADD,plotxy Modelxy->ADD,Oplotxy1 Modelxy->ADD,Oplotxy2 Modelxy->ADD,Oplotxy3 Modelxy->ADD,Oplotxy5 Modelxy->ADD,Oplotxy6 Modelxy->ADD,Oplotxy7 View->ADD, Modelxy ; ;------------------------------------------------ ; ; The second panel ; TheSecond: xmin=-40 xmax=0 ymin0=-20 ymax0=20 fullwidth(0)=ymin0+1. fullwidth(1)=ymax0 ymin(0)=ymin0 ymax(0)=ymax0 xtitle="Ygse (Re)" ytitle(0)="Zgse (Re)" ; ; model magnetopause and earth ; get_circle,xmp,ymp,n1,pdyn_index ; get model magnetpause, earth, etc. ; ; ;-------------------------------------------------------------- ; Create y-z plot Objects ; ;Viewyz=OBJ_NEW('IDLgrView',VIEWPLANE_RECT=[xleft,ybottom,xright,0.45]); Plotyz=OBJ_NEW('IDLgrPlot',xmp(0:n1-1),ymp(0:n1-1)) Xtitleyz=OBJ_NEW('IDLgrText',xtitle) Ytitleyz=OBJ_NEW('IDLgrText',xtitle) Xaxisyz=OBJ_NEW('IDLgrAxis',0,range=[xmin,xmax],title=Xtitleyz) Yaxisyz=OBJ_NEW('IDLgrAxis',1,range=[ymin(0),ymax(0)],title=Ytitleyz) ;if(pdyn_index eq 2) then oplot,xmp(n1:n2-1),ymp(n1:n2-1),linestyle=2,thick=2 if(pdyn_index eq 2) then linestyle=2 $ else linestyle=0 Oplotyz1=OBJ_NEW('IDLgrPolyline',xmp(n2:n3-1),ymp(n2:n3-1),linestyle=0,thick=2) Oplotyz2=OBJ_NEW('IDLgrPolyline',xmp(n3:n3+20),ymp(n3:n3+20),linestyle=0,thick=2) Oplotyz3=OBJ_NEW('IDLgrPolyline',[xmin,xmax],zeros,linestyle=0,thick=1) Oplotyz4=OBJ_NEW('IDLgrPolyline',zeros,[ymin0,ymax0],linestyle=0,thick=1) ; vratio=0.5 ;ratio of vector to the size of plot ;----------------------------------------------------------- kkk=1 if(kkk eq 0) then goto, TheEnd ;usersym,radius*cos(a),radius*sin(a),/fill ;for i=0,npoints_geo-1 do begin ; if(index_geo(i) eq 1) then begin ;; if(index(i) ne 9) then begin ; if(c_or_t eq 1) or (c_or_t eq 2) then begin ; factor=vratio/sqrt(yvec(i)*yvec(i)+zvec(i)*zvec(i)) ; xseg(0)=yloc(i)-zvec(i)*factor ; get tangential inst. of normal ; yseg(0)=zloc(i)+yvec(i)*factor ; xseg(1)=yloc(i)+zvec(i)*factor ; yseg(1)=zloc(i)-yvec(i)*factor ; plots,xseg,yseg,thick=4 ; endif else begin ; plots,yloc(i),zloc(i),psym=8,thick=2 ; endelse ; endif else begin ; if(c_or_t eq 0) or (c_or_t eq 2) then begin ; plots,yloc_geo(i),zloc_geo(i),psym=8,thick=3,color=0 ; endif ; endelse ;endfor Oplotyz7=OBJ_NEW('IDLgrPolyline',yloc_geo(0:npoints_geo-1),$ zloc_geo(0:npoints_geo-1),symbol=Usym,color=0,thick=3) ;usersym,0.6*cos(a),0.6*sin(a) ;xyouts,yloc_geo(0)+1.0,zloc_geo(0)+0.5,'02/15 12:00',$ ;xyouts,yloc_geo(0)+1.0,zloc_geo(0)-1.0,'04/25 00:00',$ ;xyouts,yloc_geo(0)-10,zloc_geo(0)+1.0,'11/06 22:00',$ ;xyouts,yloc_geo(0)-10,zloc_geo(0)-2,'12/08 00:00',$ ; charsize=charsize,charthick=charthick ;plots,yloc_geo(0),zloc_geo(0),psym=8,thick=3,color=0 ;plots,yloc_geo(npoints_geo/2),zloc_geo(npoints_geo/2),psym=8,thick=3,color=0 ;xyouts,yloc_geo(npoints_geo-1),zloc_geo(npoints_geo-1)+1.0,$ ; '02/16 12:00',charsize=charsize,charthick=charthick ;xyouts,yloc_geo(npoints_geo-1)-8.0,zloc_geo(npoints_geo-1)+1.,$ ; '04/25 12:00',charsize=charsize,charthick=charthick ;xyouts,yloc_geo(npoints_geo-1)+1,zloc_geo(npoints_geo-1)+1.,$ ; '11/07 04:00',charsize=charsize,charthick=charthick ;xyouts,yloc_geo(npoints_geo-1)+1,zloc_geo(npoints_geo-1),$ ; '12/09 06:00',charsize=charsize,charthick=charthick ;plots,yloc_geo(npoints_geo-1),zloc_geo(npoints_geo-1),psym=8,thick=3,color=0 ;xyouts,-22,5,'GEOTAIL',charsize=charsize*1.5,charthick=charthick ; ;usersym,radius*cos(a),radius*sin(a) ;for i=0,npoints_imp-1 do begin ; plots,yloc_imp(i),zloc_imp(i),psym=8,thick=3,color=0 ;endfor ;usersym,0.6*cos(a),0.6*sin(a) ;xyouts,yloc_imp(0)+0.5,zloc_imp(0)-1.0,'02/15 12:00',$ ;xyouts,yloc_imp(0)-4.,zloc_imp(0)+1.0,'04/25 00:00',$ ;xyouts,yloc_imp(0)-4.,zloc_imp(0)+1.0,'11/06 22:00',$ ; charsize=charsize,charthick=charthick ;plots,yloc_imp(0),zloc_imp(0),psym=8,thick=3,color=0 ;xyouts,yloc_imp(npoints_imp-1)+1.0,zloc_imp(npoints_imp-1),$ ; '02/16 12:00',charsize=charsize,charthick=charthick ;xyouts,yloc_imp(npoints_imp-1)+1.0,zloc_imp(npoints_imp-1),$ ; '04/25 12:00',charsize=charsize,charthick=charthick ;plots,yloc_imp(npoints_imp-1),zloc_imp(npoints_imp-1),psym=8,thick=3,color=0 ;xyouts,30,5,'IMP 8',charsize=charsize*1.5,charthick=charthick ;------------------------------------------------------- ; ; Create y-z View ; Modelyz=OBJ_NEW('IDLgrModel') Modelyz->ADD,plotyz Modelyz->ADD,Oplotyz1 Modelyz->ADD,Oplotyz2 Modelyz->ADD,Oplotyz3 Modelyz->ADD,Oplotyz4 Modelyz->ADD,Oplotyz7 View->ADD, Modelyz Scene=OBJ_NEW('IDLgrScene') if(idevice eq 1) then Window=OBJ_NEW('IDLgrWindow') $ else Window=OBJ_NEW('IDLgrWindow',/pixmap) set_view,View,window ;set_view,viewyz,Window ;Window->DRAW,View ;Window->DRAW,Viewyz ;Scene->Add,View ;Scene->Add,Viewyz Window->DRAW,Scene ;------------------------------------------------------- ; ; Draw to a gif file ; ;set_plot,'z' if(idevice ne 0) then begin myimage=Window->read() myimage->GetProperty,DATA=image image0=reform(image[0,*,*]) ; bytemap=tvrd() print,'creating GIF output: idl.gif...' write_gif,'idl0.gif',image0 endif ;------------------------------------------------------- ; ; Draw to a postcript file ; ;set_plot,'ps' ;device,filename='idl.ps',xoffset=2,xsize=18.5,yoffset=2,$ ; ysize=24,/HELVETICA,/BOLD,FONT_SIZE=12 ;Window->DRAW,Scene,/create_instance ;print,'creating ps output: idl.ps...' ;device,/close print,'Done' TheEnd: close,/all ;-------------------------------------------------------------- ; desctroy objects ; OBJ_DESTROY,view OBJ_DESTROY,Scene OBJ_DESTROY,Window end