;20160926 Ali ;creates the time array of structures containting the reduced time resolution data and model results. ;also defines instrument and model constants. pro mvn_pui_aos,nt=nt,np=np,ns=ns,eifactor=eifactor,binsize=binsize,trange=trange,do3d=do3d,nomodel=nomodel,c6=c6,d0=d0 if n_elements(nt) eq 0 then nt=4 if n_elements(np) eq 0 then np=3 if n_elements(ns) eq 0 then ns=2 if n_elements(eifactor) eq 0 then eifactor=10. if n_elements(binsize) eq 0 then binsize=0. if n_elements(trange) eq 0 then trange=0. if n_elements(do3d) eq 0 then do3d=0 if n_elements(d0) eq 0 then d0=0 if n_elements(nomodel) eq 0 then nomodel=0 @mvn_pui_commonblock.pro ;common mvn_pui_common fnan=!values.f_nan fnanns=replicate(fnan,ns) xyz=replicate(fnan,3) rv=replicate(fnan,6) ;trajectory coordinates (rx,ry,rz,vx,vy,vz) pui0={ $ ;instrument and model constants structure sormd:500L, $ ;sep open response matrix dimentions srefa:15.5, $ ;sep-xz (ref) angle scrsa:21.0, $ ;sep-xy (cross) angle shcoa:30.0, $ ;sep half conic opening angle (estimating the edge effects) stdea:1.083, $ ;sep total detector effective area (cm2) from GEANT4 and CAD model sopeb:30L, $ ;sep open # of energy bins swieb:48L, $ ;swia # of energy bins staeb:64L, $ ;static C0 # of energy bins sd1eb:32L, $ ;static D1 # of energy bins sd1mb:8L, $ ;static D1 # of mass bins sweeb:64L, $ ;swea # of energy bins toteb:100L, $ ;total flux # of energy bins euvwb:190L, $ ;euv # wavelength bins swina:16L, $ ;swia and static # of azimuth bins swine:4L, $ ;swia and static # of elevation bins swiatsa:!pi*2.8, $ ;SWIA and STATIC total solid angle <5keV (2.8pi sr) swidee:.14464, $ ;SWIA dE/E stadee:.1633, $ ;STATIC dE/E for C0 data product (64 energy bins, rough estimate) swedee:.1165, $ ;SWEA dE/E totdee:.1, $ ;total flux binning dE/E np:np, $ ;number of simulated particles nt:nt, $ ;number of time steps ns:ns, $ ;number of species [0:hydrogen, 1:oxygen, >1:other stuff] eifactor:eifactor,$ ;electron impact increase factor inside the bow shock ngps:fnanns, $ ;number of gyro-periods solved mamu:fnanns, $ ;mass of [H=1 C=12 N=14 O=16] (amu) msub:0, $ ;species subscript (0=H, 1=O) tbin:binsize, $ ;time bin size (s) trange:trange, $ ;trange do3d:do3d, $ ;do3d d0:d0, $ ;load static d0 nomodel:nomodel, $ ;no model, just load and reduce data cadence d2mmap:100, $ ;dimensions of 2D d2m map minpara:2.1, $ ;discard eflux below this factor times min eflux maxthre:7e7, $ ;above this eflux, we're probably looking at solar wind protons rmars:3400., $ ;Rm (km) magthresh:1e-9, $ ;low mag threshold (high error in B) costubthresh:.97, $ ;thetaUB > 14deg swiqfthresh:.9 $ ;swia moments quality threshold } pui1={ $ ;energy bins structure totet:exp(pui0.totdee*findgen(pui0.toteb,start=126.5,increment=-1)), $ ;total flux energy bin midpoints (312 keV to 15.6 eV) swiet:exp(pui0.swidee*findgen(pui0.swieb,start=69.5,increment=-1)), $ ;SWIA (post Nov 2014) energy bin midpoints (23 keV to 26 eV) staet:exp(pui0.stadee*findgen(pui0.staeb,start=63.4,increment=-1)), $ ;STATIC (mode 4) energy bin midpoints (31 keV to 1.0 eV) sweet:exp(pui0.swedee*findgen(pui0.sweeb,start=72.5,increment=-1)), $ ;SWEA energy bin midpoints (4627 eV to 3.0 eV) sepet:replicate({sepbo:replicate(fnan,pui0.sopeb)},2) $ ;SEP 1&2 energy table } ;**********DATA********** sep={rate_bo:replicate(fnan,pui0.sopeb),rate_ao:replicate(fnan,pui0.sopeb),att:byte(0),fov:xyz,dt:fnan} sep=replicate(sep,2) ;2 SEP's swim2={usw:fnan,fsw:fnan,esw:fnan,efsw:fnan,mfsw:fnan} ;solar wind parameters (speed, flux, energy, energy flux, mass flux) if keyword_set(swim) then swi={swim:fill_nan(swim[0]),swis:fill_nan(swis[0]),swica:fill_nan(swics[0]),swim2:swim2,dt:fnan} else swi={swim:{density:fnan,velocity_mso:xyz},swim2:swim2} swe={eflux:replicate(fnan,pui0.sweeb),efpot:replicate(fnan,pui0.sweeb),enpot:replicate(fnan,pui0.sweeb),eden:fnan,edenpot:fnan,scpot:fnan} c0={eflux:replicate(fnan,[pui0.staeb,2]),energy:replicate(fnan,pui0.staeb)} d1=byte(0) if do3d or d0 then d1={eflux:replicate(fnan,[pui0.sd1eb,pui0.swina,pui0.swine,pui0.sd1mb]),energy:replicate(fnan,pui0.sd1eb),dt:fnan,dee:fnan,mass:replicate(fnan,pui0.sd1mb)} sta={fov:{x:xyz,z:xyz},c0:c0,d1:d1} mag={payload:xyz,mso:xyz} euv={l2:xyz,l3:replicate(fnan,pui0.euvwb)} ;here xyz is the 3 EUVM wavelength bands data={sep:sep,swi:swi,swe:swe,sta:sta,mag:mag,euv:euv,scp:xyz} ;*********MODEL********** if ~nomodel then begin pui2={vtot:fnan,rtot:fnan,dr:fnan,ke:fnan,de:fnan,mv:fnan} pui2=replicate(pui2,[np,nt]) ;temporary structure pui3=replicate({swi:fnanns,sta:fnanns},[pui0.d2mmap,pui0.d2mmap]) ;2D mapping of pickup ion d2m ratios pi={nm:replicate(fnan,pui0.euvwb),tot:fnan} ei={en:replicate(fnan,pui0.sweeb),tot:fnan} ifreq={pi:pi,cx:fnan,ei:ei,tot:fnan} swi1d=replicate({eflux:0.},pui0.swieb) sta1d=replicate({eflux:0.},pui0.staeb) swi3d=byte(0) sta3d=byte(0) if do3d then swi3d=replicate({eflux:0.,qf:fnan,rv:rv},[pui0.swieb,pui0.swina,pui0.swine]) if do3d then sta3d=replicate({eflux:0.,qf:fnan,rv:rv},[pui0.sd1eb,pui0.swina,pui0.swine]) sep={incident_rate:replicate(fnan,pui0.sormd),model_rate:replicate(fnan,pui0.sopeb),rv:rv,qf:fnan} sep=replicate(sep,2) ;2 SEP's toteflux=replicate(fnan,pui0.toteb) fluxes={sep:sep,swi1d:swi1d,swi3d:swi3d,sta1d:sta1d,sta3d:sta3d,toteflux:toteflux} params={fg:fnan,tg:fnan,rg:fnan,kemax:fnan,totphi:fnan,toteph:fnan,totmph:fnan,totnnn:fnan} model={ifreq:ifreq,rv:replicate(fnan,[6,np]),fluxes:fluxes,params:params} model=replicate(model,ns) ;*********Data to Model Ratio********** d2m=replicate({sep:xyz,swi:xyz,sta:xyz},ns) ;here xyz is tot[model,data,cme] for sep, and [mean,stdev,nsample] of different energy/anode/elevations for swi and sta pui=replicate({data:data,model:model,d2m:d2m,centertime:0d},nt) ;model-data array of structures endif else pui=replicate({data:data,centertime:0d},nt) ;data array of structures end