pro solarwind_load_wind,iswind,times,timee,swdata,resol
common filtpar,d,tmax,nmax
isswe=0
ismfi=0
iswind=0
timss=times-7200.
wi_swe_load,trange=[timss,timee]
wi_mfi_load,trange=[timss,timee]
get_data,'wi_swe_V_GSE',timeswe,vswgse
get_data,'wi_swe_Np',timeswe,np
get_data,'wi_h0_mfi_B3GSE',timemfi,bswgse
indswe=where(timeswe gt times and timeswe lt timee,nswe)
if nswe gt 1 then begin
isswe=1
vswgse=vswgse[indswe,*]
np = np[indswe]
tswe=timeswe[indswe]
endif else begin
isswe=0
print,'solarwind_load: No SWE data found.'
print,'Static values Dp=2.088 nPa and Bz=0 are set.'
endelse
if isswe then begin
iswind=1
amm=0.999*max(abs(vswgse))
xclip,-amm,amm,vswgse
amm=0.999*max(abs(np))
xclip,-amm,amm,np
remove_outliers,tswe,vswgse,d,tmax,nmax
remove_outliers,tswe,np,d,tmax,nmax
delt=tswe-shift(tswe,1)
delt=delt[1:*]
dtswe=median(delt)
margswe=0.3*dtswe
xdegap,dtswe,margswe,tswe,vswgse,tgridv,vswgsenan
sss=size(vswgsenan)
if sss[0] lt 1 then begin
vswgsenan=vswgse
tgridv=tswe
endif
xdegap,dtswe,margswe,tswe,np,tgridnp,npnan
sss=size(npnan)
if sss[0] lt 1 then begin
npnan=np
tgridnp=tswe
endif
fl=!values.f_nan
xdeflag,'linear',tgridv,vswgsenan,flag=fl
xdeflag,'linear',tgridnp,npnan,flag=fl
if n_elements(resol) gt 0 then begin
convolve_gaussian_1d,resol,tgridv,vswgsenan,vpgse
convolve_gaussian_1d,resol,tgridnp,npnan,npgse
endif else begin
vpgse=vswgsenan
npgse=npnan
endelse
dist=1500000.
tearthv=tgridv+abs(dist/reform(vpgse[*,0]))
tearthnp=tgridnp+abs(dist/reform(vpgse[*,0]))
dtev=tearthv-shift(tearthv,1)
dtev=dtev[1:*]
indneg=where(dtev lt 0.,nneg)
if nneg gt 1 then begin
t1=tgridv[indneg[0]]
t2=tgridv[indneg[nneg-1]]
print,'Attention: strong irregularities in solar wind speed detected.'
print,'Start time at WIND:',t1
print,'End time at WIND:',t2
print,'More sophisticated approach to propagation may be necessary.'
print,'You also can try to decrease requested time resolution.'
endif
noutswe=long((timee-times)/dtswe + 1L)
fgridswe=times+dtswe*lindgen(noutswe)
vswgseout=fltarr(noutswe,3)
for ii=0,2 do begin
vpgsei=reform(vpgse[*,ii])
vswgseouti=interpol(vpgsei,tearthv,fgridswe)
vswgseout[*,ii]=vswgseouti
endfor
npswgseout=interpol(npgse,tearthnp,fgridswe)
vpout=sqrt(vswgseout[*,0]^2+vswgseout[*,1]^2+vswgseout[*,2]^2)
cotrans,vswgseout,vswgsmout,fgridswe,/gse2gsm
dp=2.e-6*npswgseout*vpout^2
dpout=dp
tgrid=fgridswe
indmfi=where(timemfi gt times and timemfi lt timee,nmfi)
if nmfi gt 1 then begin
ismfi=1
bswgse = bswgse[indmfi,*]
tmfi=timemfi[indmfi]
endif else begin
ismfi=0
print,'solarwind_load: No MFI data found.'
print,'Bz=0 nT instead of dynamic Bz is set.'
endelse
if ismfi then begin
amm=0.999*max(abs(bswgse))
xclip,-amm,amm,bswgse
remove_outliers,tmfi,bswgse,d,tmax,nmax
delt=tmfi-shift(tmfi,1)
delt=delt[1:*]
dtmfi=median(delt)
margmfi=0.3*dtmfi
xdegap,dtmfi,margmfi,tmfi,bswgse,tgridb,bswgsenan
sss=size(bswgsenan)
if sss[0] lt 1 then begin
bswgsenan=bswgse
tgridb=tmfi
endif
fl=!values.f_nan
xdeflag,'linear',tgridb,bswgsenan,flag=fl
if n_elements(resol) gt 0 then begin
convolve_gaussian_1d,resol,tgridb,bswgsenan,bgse
endif else begin
bgse=bswgsenan
endelse
vrel=reform(vpgse[*,0])
vrelm=abs(interpol(vrel,tgridv,tgridb))
dist=1500000.
tearthb=tgridb+dist/vrelm
noutmfi=long((timee-times)/dtmfi + 1L)
fgridmfi=times+dtmfi*lindgen(noutmfi)
bswgseout=fltarr(noutmfi,3)
for ii=0,2 do begin
bgsei=reform(bgse[*,ii])
bswgseouti=interpol(bgsei,tearthb,fgridmfi)
bswgseout[*,ii]=bswgseouti
endfor
cotrans,bswgseout,bswgsmout,fgridmfi,/gse2gsm
bzout=reform(bswgsmout[*,2])
dpout=interpol(dp,fgridswe,fgridmfi)
tgrid=fgridmfi
swdata=[[tgrid],[dpout],[bzout]]
endif else begin
bzout=fltarr(noutswe)
swdata=[[tgrid],[dpout],[bzout]]
endelse
endif
return
end