;
  example file for numerical data cubes

	; accessed in FORWARD by setting 'numcube'

	;If this is your first time using for_drive, then read
        ;Setup instructions 

	; Your numerical cube should be already in the form expected by the FORWARD
	; codes, see 
        ;FORWARD/MODELS_NUMCUBE/make_my_cube.pro 

	; NOTE FOR CoMP CALCULATIONS, YOU MUST USE FULL PATH IN FILENAME
	; BECAUSE DIRECTORIES ARE CHANGED DURING COMP ANALYSIS
	; this is set below by keyword DIRNAME

	; if you don't have a cube yet, you can run this example with
	; default simulation "yfan2dcube" (set below).  Ordinarily, if
	; for_drive,'numcube' is run with no CUBENAME keyword set, 
	; there is a default cube1.dat thatlives in $FORWARD/MODELS/NUMCUBE 
	; directory. It is an axisymmetric model with a powerlaw falloff 
	; in density where B=Br=1 everywhere. 

	; default is to have no density or magnetic field outside of your
	; cube boundaries. You can change this with the keywords listed in
        ;FORWARD/MODELS_NUMCUBE/numcubeprams.pro 

	; Note on speed of numcube calculations: If you are running multiple
	; plots on the same cube a given SSWIDL session, you can run the
	; first for_drive as usual or with the keyword nreinit=1. You can then
	; use nreinit=0 in subsequent calls to the same cube. This will
	; make use of internal common blocks so that you don't have to load
	; your cube each time, it cuts down on computing time. NOTE: that
	; because of the common blocks, the numcube model can be quite fussy
	; so if you want to plot a different cube, restart SSWIDL or it
	; will probably puke.

	; Finally, this program makes some example plots: the integrated 
	; observables (pB, CoMP) only need to be run once and saved to a save 
	; set.  So, if you want to run this several times (or variants of it),
	; set keyword DOINT=0 and it will look for savesets for the 
	; integrated observables

	;
	; whether or not to do polarization plane-of-sky slices
	;

default,runslice,0

	;
	; whether or not to run comp calculations
	;

default,runcomp,0

	;
	; whether or not to do the comp integration
	; only do once to create save files
	; after that turn off for speed
	;

default,doint,1

	;
	; where the data cube is
	;

default,dirname,'$FORWARD_DB/'
default,simname,'yfan2dcube' 
cuben=dirname+simname+'.dat'

	;
	; these are the horizontal and vertical axis limits on the plots
	;

default,xxmin,0.8
default,xxmax,1.7
default,yymin,-0.7
default,yymax,0.7

	;
	; this is the resolution of the calculation
	;

default,ngr,50

	;
	; this is the screen size of the plots
	;	

nwinx=1024
nwiny=1024

	; this is the number of arrows (ngr/narrow is number of points to skip)

narrow=30

if doint ne 0 then begin

	; generate LOS integral for pB

 for_drive, 'numcube', cubename=cuben, ngrid=ngr,xxmin=xxmin,xxmax=xxmax,yymin=yymin,yymax=yymax,line='pb',/wl,/savemap,mapname=simname+'_wl_fullint',/noplots

	; generate Plane of sky slice for CoMP

 if runcomp eq 1 then begin
  for_drive, 'numcube', cubename=cuben, ngrid=ngr,xxmin=xxmin,xxmax=xxmax,yymin=yymin,yymax=yymax,line='LoI',/comp,/pos,/verbose,/savemap,mapname=simname+'_comp_pos',/noplots

	; generate LOS for CoMP

  for_drive, 'numcube', cubename=cuben, ngrid=ngr,xxmin=xxmin,xxmax=xxmax,yymin=yymin,yymax=yymax,line='LoI',/comp,/verbose,/savemap,mapname=simname+'_comp_fullint',/noplots

 endif
endif

	;
	; make plots
	;

loadct,0

!p.multi=[0,2,2]

for_drive, 'numcube', cubename=cuben, ngrid=ngr,nwinx=nwinx,nwiny=nwiny,xxmin=xxmin,xxmax=xxmax,yymin=yymin,yymax=yymax,line='dens',/plotlog,usecolor=0,/field,bscale=-.2,narr=narrow,winnum=3

for_drive, 'numcube', cubename=cuben, /wl,line='pB',/plotlog,usecolor=0,/field,bscale=-.2,narr=narrow,/verbose,readmap=simname+'_wl_fullint',/noerase,nreinit=0

for_drive, 'numcube', cubename=cuben, ngrid=ngr,xxmin=xxmin,xxmax=xxmax,yymin=yymin,yymax=yymax,line='bx',usecolor=41,/field,bscale=-.2,narr=narrow,/noerase,nreinit=0

for_drive, 'numcube', cubename=cuben, ngrid=ngr,xxmin=xxmin,xxmax=xxmax,yymin=yymin,yymax=yymax,line='bpos',usecolor=0,/field,bscale=-.2,narr=narrow,/noerase,nreinit=0

if runcomp eq 1 then begin
for_drive, 'numcube', cubename=cuben, /comp,line='LoI',usecolor=0,readmap=simname+'_comp_pos',docont=1,winnum=2,nwinx=nwinx,nwiny=nwiny,/plotlog,title='LoI_los'

for_drive, 'numcube', cubename=cuben, /comp,line='VoI',nreinit=0,/fieldlines,/stklines,bscale=-.2,pscale=-.2,narr=narrow,readmap=simname+'_comp_pos',/noerase,docont=1,usecolor=41,quantmap=quantmap_v_poi,title='VoI_los'

for_drive, 'numcube', cubename=cuben, /comp,line='LoI',usecolor=0,readmap=simname+'_comp_fullint',/noerase,docont=1,/plotlog,title='LoI integrated'

for_drive, 'numcube', cubename=cuben, /comp,line='VoI',nreinit=0,/fieldlines,/stklines,bscale=-.2,pscale=-.2,narr=narrow,readmap=simname+'_comp_fullint',/noerase,docont=1,usecolor=41,quantmap=quantmap_v_int,title='VoI integrated'

endif

!p.multi=0

	; Calculates the Stokes P/I for a series of thin slices along the line
	; of sight and save the maps. Bear in mind the default is to surround
	; simulation with zero plasma. To put in a spherically symmetric
	; isothermal background, we add the keywords hydro=1,te=1d6

if doint ne 0 and runcomp ne 0 then begin
 for ixoffset=1,13 do $
 for_drive,'numcube',cubename=cuben,$
 ngrid=ngr,nwinx=512,nwiny=512,$
 xoffset=-.875+float(ixoffset)*0.125,$
 extratitle='X-offset='+strtrim(float(-.875+float(ixoffset)*0.125),2),$
 /savemap,mapname=simname+'_I_X-offset='+strtrim(-1.75+float(ixoffset)*0.25,2),$
 line='LoI',/tif,/fieldlines,bscale=-1,narrow=10,/verbose,/comp,/pos,$
 /plotlog,xxmin=.8,xxmax=2,yymin=-.7,yymax=.7,$
 hydro=1,te=1d6,bout=2,imin=-2,imax=2,/noplot
endif


	;this takes the save files you made above and plots P/I with
	;fieldlines and stokeslines as well. It saves the plots as tifs.

if runslice ne 0 and runcomp ne 0 then begin
 for ixoffset=1,13 do $
 for_drive,'numcube',cubename=cuben,$
 ngrid=ngr,nwinx=512,nwiny=512,$
 xoffset=-.875+float(ixoffset)*0.125,$
 extratitle='X-offset='+strtrim(float(-.875+float(ixoffset)*0.125),2),$
 readmap=simname+'_I_X-offset='+strtrim(-1.75+float(ixoffset)*0.25,2),$
 line='LoI',/tif,/fieldlines,bscale=-1,narrow=10,/verbose,/comp,/pos,$
 /plotlog,xxmin=.8,xxmax=2,yymin=-.7,yymax=.7,$
 hydro=1,te=1d6,bout=2,imin=-2,imax=2
endif
;
end