;+ ; PROCEDURE: ; kgy_spice_kernels ; PURPOSE: ; ; CALLING SEQUENCE: ; kk = kgy_spice_kernels(/load) ; INPUTS: ; ; KEYWORDS: ; ; CREATED BY: ; Yuki Harada on 2016-03-04 ; ; $LastChangedBy: haraday $ ; $LastChangedDate: 2017-11-21 12:02:46 -0800 (Tue, 21 Nov 2017) $ ; $LastChangedRevision: 24333 $ ; $URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/tags/spedas_3_00/projects/kaguya/general/spice/kgy_spice_kernels.pro $ ;- function kgy_spice_kernels, trange=trange, source=source, clear=clear, load=load, last_version=last_version if spice_test() eq 0 then return,'' syst0 = systime(/sec) if size(last_version,/type) eq 0 then last_version=1 tb = scope_traceback(/structure) this_dir = file_dirname(tb[n_elements(tb)-1].filename)+'/' ; the directory this file resides in (determined at run time) darts = spice_file_source(remote_data_dir='http://darts.jaxa.jp/pub/spice/',last_version=last_version) names = ['STD','CK','FK','IK','PCK','SCLK','SPK'] kernels = '' for in=0,n_elements(names)-1 do begin case strupcase(names[in]) of 'STD': begin ;- standard kernels append_array,kernels,spice_standard_kernels() ;;; incl. naif????.tls, pck?????.tpc, de???.bsp end 'CK': begin ;- S/C attitude tr = timerange(trange) ;- spd_download doesn't have trange capability yet... ; append_array,kernels,file_retrieve('SELENE/kernels/ck/SEL_M_YYYYMM_D_V??.BC',_extra=darts,trange=tr,/monthly) ;; The attitude is sampled at frequency of 2 seconds. ;; The telemetry includes the attitude data as format of ;; "IEEE Standard for Floating-Point Arithmetic" ;; (IEEE 754) using 64 bits. append_array,kernels,file_retrieve('SELENE/kernels/ck/SEL_M_YYYYMM_S_V??.BC',_extra=darts,trange=tr,/monthly) ;; In this file, the attitude is sampled at frequency of ;; 8 seconds. The precision in the s/c telemetry uses ;; a single-precision (32 bits). The number of time gaps ;; is less than that of "SEL_M_ALL_D_V02.BC". end 'FK': begin ;- frame append_array,kernels,spd_download(remote_file='SELENE/kernels/fk/SEL_V??.TF',_extra=darts,/last_version) append_array,kernels,spd_download(remote_file='SELENE/kernels/fk/moon_??????.tf',_extra=darts) append_array,kernels,spd_download(remote_file='SELENE/kernels/fk/moon_assoc_me.tf',_extra=darts) append_array,kernels,this_dir+'kernels/fk/GSE_080125.tf' append_array,kernels,this_dir+'kernels/fk/SSE_080125.tf' end 'IK': begin ;- instrument FOV ;;; included in FK end 'PCK': begin ;- body size, shape, and orientation append_array,kernels,spd_download(remote_file='SELENE/kernels/pck/moon_pa_de421_1900-2050.bpc',_extra=darts) append_array,kernels,spd_download(remote_file='SELENE/kernels/pck/pck00010.tpc',_extra=darts) end 'SCLK': begin ;- S/C clock append_array,kernels,spd_download(remote_file='SELENE/kernels/sclk/SEL_M_V??.TSC',_extra=darts) end 'SPK': begin ;- S/C position ; append_array,kernels,spd_download(remote_file='SELENE/kernels/spk/SEL_M_071020_081226_SGMI_05.BSP',_extra=darts) append_array,kernels,spd_download(remote_file='SELENE/kernels/spk/SEL_M_071020_090610_SGMH_02.BSP',_extra=darts) ;- incl. gaps append_array,kernels,spd_download(remote_file='SELENE/kernels/spk/de421.bsp',_extra=darts) ;- used for SEL_M_071020_090610_SGMH_02.BSP end endcase endfor if keyword_set(clear) then cspice_kclear if keyword_set(load) then spice_kernel_load,kernels dprint,dlevel=2,verbose=verbose,'Time to retrieve SPICE kernels: '+strtrim(systime(1)-syst0,2)+ ' seconds' return,kernels end