;+
;Procedure: tKm2Re
;
;Purpose: Converts a variable to RE or KM
;
;Inputs: name: a string naming the tplot variable to be modified
; globbing may be used
;
;Keywords:
; newname: set this keyword to a string to store the
; output in(only works when globbing is not used)
; suffix: set this keyword to a string indicating the
; suffix to be appended to the input variable(s)
; /replace: set this option to replace the variable being modified
; /KM : converts to KM from RE rather than to RE from KM
;
;
; examples:
; tKm2Re,'thb_state_pos'
; tKm2Re,'thb_state_pos',/replace
; tKm2Re,'thb_state_pos',/KM
; tKm2Re,'thb_state_pos',newname='pos_in_re'
; tKm2Re,'th?_state_pos',suffix='_converted'
;
; NOTES: Uses conversion of 6374.4 KM/RE
; By default output will be called: input_name+'_RE'
;
;
;$LastChangedBy: pcruce $
;$LastChangedDate: 2008-07-30 17:43:17 -0700 (Wed, 30 Jul 2008) $
;$LastChangedRevision: 3320 $
;$URL: svn+ssh://thmsvn@ambrosia.ssl.berkeley.edu/repos/spdsoft/trunk/general/misc/tkm2re.pro $
;-
pro tkm2re,name,newname=newname,suffix=suffix,replace=replace,km=km
compile_opt idl2
km_in_re = 6374.4
names = tnames(name)
if n_elements(names) eq 1 && names[0] eq '' then begin
message,'Illegal tvar name'
endif
if keyword_set(newname) then begin
if n_elements(names) gt 1 then begin
message,'Newname cannot be set when globbing is used'
endif
newnames=newname
endif else begin
newnames = names
endelse
if keyword_set(suffix) then begin
newnames += suffix
endif else if ~keyword_set(replace) then begin
if keyword_set(KM) then begin
newnames += '_km'
endif else begin
newnames += '_re'
endelse
endif
for i = 0,n_elements(names)-1 do begin
d = 0
get_data,names[i],data=d,dlimits=dl,limits=l
if ~keyword_set(d) then message,'D component of tplot variable ' + names[i] + ' not set'
if keyword_set(KM) then begin
d.y *= km_in_re
label = 'KM'
old = 'RE'
endif else begin
d.y /= km_in_re
label = 'RE'
old = 'KM'
endelse
str_element,dl,'data_att',success=s
if s then begin
str_element,dl.data_att,'units',label,/add
endif else begin
str_element,data_att,'units',label,/add
str_element,dl,'data_att',data_att,/add
endelse
str_element,dl,'ysubtitle',success=s
if s then begin
pos = stregex(dl.ysubtitle,old,/fold_case)
if pos ne -1 then begin
tmp = dl.ysubtitle
strput,tmp,label,pos
dl.ysubtitle=tmp
endif
endif
store_data,newnames[i],data=d,dlimits=dl,limits=l
endfor
end