;+
;FUNCTION: sum3d
;PURPOSE: Takes two 3D structures and returns a single 3D structure
;  whose data is the sum of the two
;INPUTS: d1,d2  each must be 3D structures obtained from the get_?? routines
;	e.g. "get_el"
;RETURNS: single 3D structure
;
;CREATED BY:	Davin Larson
;LAST MODIFICATION:	@(#)sum3d.pro	1.8 02/04/17
;
;Notes: This is a very crude subroutine. Use at your own risk.
;-


function  sum3d, d1,d2
if data_type(d1) ne 8 then return,d2
if d2.valid eq 0 then return,d1
if d1.valid eq 0 then return,d2
if d1.data_name ne d2.data_name then begin
  dprint, 'Incompatible data types'
  return,d2
endif
sum = d1
sum.data = sum.data+d2.data
sum.integ_t =  d1.integ_t + d2.integ_t
;fixing error that occurs if dt component is missing(ie themis SST) by pcruce 2010-10-13
str_element,sum,'dt',success=s1
str_element,d2,'dt',success=s2
if s1 && s2 then begin
  sum.dt   = sum.dt + d2.dt
endif
sum.end_time = d1.end_time > d2.end_time
sum.time     = d1.time     < d2.time
sum.trange   = minmax([d1.trange,d2.trange])
sum.valid  = d1.valid and d2.valid
return, sum
end