;+ ; NAME: ; smei_frm_eclipse ; PURPOSE: ; Eclipse calculations ; CATEGORY: ; smei_frm_eclipse, hdr, /may2003 ; CALLING SEQUENCE: PRO smei_frm_eclipse, hdr, $ may2003 = may2003 , $ nov2003 = nov2003 , $ jun2003 = jun2003 , $ apr2004 = apr2004 , $ oct2004 = oct2004 , $ apr2005 = apr2005 , $ mar2006 = mar2006 , $ sep2007 = sep2007 , $ aug2008 = aug2008 , $ jan2009 = jan2009 , $ jan2010 = jan2010 , $ earth = earth , $ orbit = orbit , $ loc = loc , $ runit = runit , $ area = area , $ camera = camera , $ _extra = _extra ; INPUTS: ; hdr array; type: structure ; headers of SMEI frames returned from a ; previous call. If hdr exists than the ; optional input parameters are ignored. ; OPTIONAL INPUT PARAMETERS: ; /may2003, orbit=0 for eclipse on 31 May 2003 04:13 ; /may2003, orbit=-1 for eclipse on 31 May 2003 02:42 ; /nov2003 for eclipse on 23 Nov 2003 22:53 ; /apr2004 for eclipse on 19 Apr 2004 15:24 ; ; /apr2005 for eclipse on 08 Apr 2005 20:35 ; /mar2006 for eclipse on 29 Mar 2006 10:10 ; /sep2007 ; /aug2008 includes full eclipse ; /jan2009 ; /jan2010 ; ; /jun2003 Coriolis in Earth shadow from 13:58:19 until 14:14:51 ; ; orbit=0 plots several orbits around time of maximum eclipse ; orbit=-1 plots the earlier of the two eclipses usually seen by SMEI ; orbit=1 plots the later of the two eclipses ; OUTPUTS: ; (Plot to screen) ; ; hdr array; type: structure ; headers of all SMEI frames processed ; This can be used as input for subsequent ; call to to bypass rereading of the frames. ; OPTIONAL OUTPUT PARAMETERS: ; loc=loc output from smei_frm_where ; runit=runit output from smei_frm_where ; area=area output from eclipsed_area ; INCLUDE: @compile_opt.pro ; On error, return to caller ; CALLS: ; IsType, InitVar, TimeSet, jpl_body, smei_frm_where ; smei_property, eclipsed_area, TimeLimits ; PROCEDURE: ; MODIFICATION HISTORY: ; OCT-2004, Paul Hick (UCSD/CASS) ; FEB-2010, Paul Hick (UCSD/CASS; pphick@ucsd.edu) ; Added eclipses in sep 2007 and later. ;- InitVar, camera, 3 InitVar, earth , 0 CASE 1 OF ; Eclipse by Earth (i.e. in Earth shadow) IsType(jun2003,/defined): BEGIN ;InitVar, hdr, TimeSet(yr=2003, mon='jun', day=21, hr=[13,14], min=[42,24], sec=[0,0]) InitVar, hdr, TimeSet(yr=2003, mon='jun', day=21, hr=[12,14], min=[42,23], sec=[0,37]); 1 orbit earth = 1 END ; Eclipse by Moon IsType(may2003,/defined): BEGIN InitVar, orbit, 0 CASE orbit OF 0 : InitVar, hdr, TimeSet(yr=2003, mon='may', day=31, hr=4, min=13, sec=20+[-500,500]) ELSE: InitVar, hdr, TimeSet(yr=2003, mon='may', day=31, hr=2, min=42, sec= 3+[-500,500]) ENDCASE END IsType(apr2004,/defined): InitVar, hdr, TimeSet(yr=2004, mon='apr', day=19, hr=15, min=25, sec=0+[-600,600]) IsType(nov2003,/defined): InitVar, hdr, TimeSet(yr=2003, mon='nov', day=23, hr=22, min=53, sec=0+[-600,600]) IsType(oct2004,/defined): BEGIN InitVar, orbit, 0 CASE orbit OF -1: InitVar, hdr, TimeSet(yr=2004, mon='oct', day=14, hr=1, min= 1, sec=30+[-600,600]) 0: InitVar, hdr, TimeSet(yr=2004, mon='oct', day=14, hr=2, min=33, sec= 0+[-600,600]) 1: InitVar, hdr, TimeSet(yr=2004, mon='oct', day=14, hr=4, min= 3, sec= 0+[-600,600]) ENDCASE END IsType(apr2005,/defined): BEGIN InitVar, orbit, 0 CASE orbit OF -1: InitVar, hdr, TimeSet(yr=2005, mon='apr', day=8, hr=19, min=13, sec=35+[-600,600]) 0: InitVar, hdr, TimeSet(yr=2005, mon='apr', day=8, hr=21, min=31, sec=27+[-250,250]) 1: InitVar, hdr, TimeSet(yr=2005, mon='apr', day=8, hr=23, min=16, sec=35+[-400,400]) ENDCASE ENDCASE IsType(mar2006,/defined): BEGIN InitVar, orbit, 0 CASE orbit OF -1: InitVar, hdr, TimeSet(yr=2006, mon='mar', day=29, hr=9 , min=4, sec=15+[-360,420]) 0: InitVar, hdr, TimeSet(yr=2006, mon='mar', day=29, hr=[8,12], min=[50,10]) 1: InitVar, hdr, TimeSet(yr=2006, mon='mar', day=29, hr=11 , min=52, sec=45+[-480,480]) ENDCASE END IsType(sep2007,/defined): BEGIN InitVar, orbit, 0 CASE orbit OF -1: InitVar, hdr, TimeSet(yr=2007, mon='sep', day=11, hr=11 , min=22, sec=-10+[-480,480]) 0: InitVar, hdr, TimeSet(yr=2007, mon='sep', day=11, hr=[11,14], min=[00,00]) 1: InitVar, hdr, TimeSet(yr=2007, mon='sep', day=11, hr=13 , min=16, sec=20+[-540,540]) ENDCASE END IsType(aug2008,/defined): BEGIN InitVar, orbit, 0 CASE orbit OF -1: InitVar, hdr, TimeSet(yr=2008, mon='aug', day=1, hr=9 , min=20, sec=0+[-420,420]) 0: InitVar, hdr, TimeSet(yr=2008, mon='aug', day=1, hr=[8,11] , min=[45,45]) 1: InitVar, hdr, TimeSet(yr=2008, mon='aug', day=1, hr=10 , min=48, sec=0+[-420,420]) ENDCASE END IsType(jan2009,/defined): BEGIN InitVar, orbit, 0 CASE orbit OF -1: InitVar, hdr, TimeSet(yr=2009, mon='jan', day=26, hr=6 , min=7 , sec=30+[-480,480]) 0: InitVar, hdr, TimeSet(yr=2009, mon='jan', day=26, hr=[5,10] , min=[20,40]) 1: InitVar, hdr, TimeSet(yr=2009, mon='jan', day=26, hr=10 , min=13, sec=5+[-480,480]) ENDCASE END IsType(jan2010,/defined): BEGIN InitVar, orbit, 0 CASE orbit OF -1: InitVar, hdr, TimeSet(yr=2010, mon='jan', day=15, hr=5 , min=40, sec=30+[-420,420]) 0: InitVar, hdr, TimeSet(yr=2010, mon='jan', day=15, hr=[5,8], min=[20,45]) 1: InitVar, hdr, TimeSet(yr=2010, mon='jan', day=15, hr=8 , min=31, sec=20+[-480,480]) ENDCASE END ELSE: InitVar, hdr, TimeSet(yr=2003, mon='may', day=31, hr=4, min=13, sec=20+[-500,500]) ENDCASE smei_frm_where, hdr, jpl_list=[jpl_body(/sun),jpl_body(/moon)*(1-earth)+jpl_body(/earth)*earth], $ /spacecraft, /all, loc=loc, runit=runit, camera=camera, show=-1*earth, _extra=_extra, $ delta_rot=delta_rot,height=height ut = smei_property(hdr,/time) ;plotcurve, ut, delta_rot[3,*], /ynozero, xmargin=[3,10] ;plotcurve, ut, delta_rot[0,*], /ynozero, /newyaxis, /oplot, yaxis=0, yrange=[-1,1] ;plotcurve, ut, delta_rot[1,*], /ynozero, /newyaxis, /oplot, yaxis=0, yrange=[-1,1] ;plotcurve, ut, delta_rot[2,*], /ynozero, /newyaxis, /oplot, yaxis=0, yrange=[-1,1] ;plotcurve, ut, height, /ynozero, /newyaxis, /oplot, yaxis=0 ;return CASE IsType(loc, /defined) OF 0: message, /info, 'Sun and Moon not close enough to field of view' 1: BEGIN area = eclipsed_area(loc, ut=ut, /plot, earth=earth, _extra=_extra) i = where(area NE 0) IF i[0] NE -1 THEN message, /info, 'eclipse from '+ $ strjoin(TimeGet(TimeLimits(ut,/bounds),/ymd,upto=TimeUnit(/sec)),' to ') END ENDCASE RETURN & END