diff --git a/src/idl/dustem_variational_study_readme.pro b/src/idl/dustem_variational_study_readme.pro new file mode 100644 index 0000000..6068110 --- /dev/null +++ b/src/idl/dustem_variational_study_readme.pro @@ -0,0 +1,136 @@ +PRO dustem_variational_study_readme,model=model,help=help,png=png,postscript=postscript + +;+ +; NAME: +; dustem_variational_study_readme +; PURPOSE: +; This is an example of how to run a variational study on the dust model parameters with the dustem wrapper. +; CATEGORY: +; Dustem +; CALLING SEQUENCE: +; dustem_variational_study_readme[,model=][,/help][,/png][,/postscript] +; INPUTS: +; None +; OPTIONAL INPUT PARAMETERS: +; None +; OUTPUTS: +; None +; OPTIONAL OUTPUT PARAMETERS: +; None +; ACCEPTED KEY-WORDS: +; model = Selects one of the dust mixture used by dustem +; 'COMPIEGNE_ETAL2010' from Compiegne et al 2010 (default) +; 'DBP90' from Desert et al 1990 +; 'DL01' from Draine & Li 2001 +; 'DL07' from Draine & Li 2007 +; postscript = if set, plot is done in DUSTEM/Docs/Figures/Last_dustem_fit.ps +; help = If set, print this help +; COMMON BLOCKS: +; None +; SIDE EFFECTS: +; None +; RESTRICTIONS: +; The dustem fortran code must be installed +; The dustem idl wrapper must be installed +; PROCEDURE: +; None +; EXAMPLES +; dustem_variational_study_readme,model='DBP90',/postscript +; dustem_variational_study_readme,model='COMPIEGNE_ETAL2010',/postscript +; MODIFICATION HISTORY: +; Written by J.P. Bernard July 15 2021 +; see evolution details on the dustem gitlab +; Contact J.-Ph. Bernard (Jean-Philippe.Bernard@irap.omp.eu) in case of problems. +;- + +;This Readme shows how to run dustem from the wrapper + +IF keyword_set(help) THEN BEGIN + doc_library,'dustem_variational_study_readme' + goto,the_end +ENDIF + +;loadct,13 + +IF keyword_set(model) THEN BEGIN + use_model=strupcase(model) +ENDIF ELSE BEGIN + use_model='COMPIEGNE_ETAL2010' ;Default is last dustem model +ENDELSE + +;== This just initializes dustem wrapper +dustem_init,model=use_model +!dustem_verbose=1 +!dustem_show_plot=1 + +IF keyword_set(png) THEN BEGIN + dir_png=!dustem_dat+'/Figures/' + force_mkdir,dir_png +ENDIF +IF keyword_set(postscript) THEN BEGIN + dir_ps=!dustem_dat+'/Figures/' + force_mkdir,dir_ps +ENDIF + +IF not keyword_set(dir) THEN BEGIN +; CASE getenv('DUSTEM_WHICH') OF + CASE !dustem_which OF + 'DESERT':dir='DESERT_POST_ISO_MORE/' + 'COMPIEGNE': dir='MC_DAT/' + 'VERSTRAETE': dir='d_3.5/' + 'VERSTRAETE': dir='LV_DAT/' + 'WEB3p8': dir_in=!dustem_soft_dir + ELSE: dir='les_DAT/' + ENDCASE +ENDIF +;== The following structure contains the inputs to the model +st_model=dustem_read_all(dir_in) + +;These are the values of G0 to be explored +g0s=[1.,2.,5.,10.,100.,1000.] +n_g0s=n_elements(g0s) + +win=0L +window,win,title='DustemWrap Variational study' + +CASE use_model OF + 'DBP90': pd = ['(*!dustem_params).G0'] ;This is the parameter description of G0 for models without gas parameters + 'COMPIEGNE_ETAL2010': pd = ['(*!dustem_params).gas.G0'] ;This is the parameter description of G0 for models with gas parameters + 'AJ13' : pd = ['(*!dustem_params).G0'] ;This is the parameter description of G0 for models without gas parameters +ENDCASE + +FOR i=0L,n_g0s-1 DO BEGIN + iv = [g0s[i]] + dustem_init_parinfo,pd,iv + params=[g0s[i]] + st=dustem_run(params) + ;do the plot + cleanplot + xtit=textoidl('\lambda (\mum)') + ;=== same plot as in Compiegne et al. 2010 + ytit=textoidl('\nuI_\nu^{em} (W/m^2/sr for N_H=1.e20 H/cm^2)') + tit='Dustem Emitted Intensity '+use_model+' G0='+strtrim(g0s[i],2) + yr=[1e-11,1.e-4] + xr=[1,5e3] + ;stop + dustem_plot_nuinu_em,st,yr=yr,/ysty,xr=xr,/xsty,/xlog,/ylog,title=tit,xtit=xtit,ytit=ytit + IF keyword_set(postscript) THEN BEGIN + file_ps=dir_ps+use_model+'_variational_study_nuinuem_G0='+strtrim(g0s[i],2)+'.ps' + spawn,'rm '+file_ps + previous_device=!d.name + set_plot,'PS' + device,filename=file_ps + !p.charsize=0.8 + dustem_plot_nuinu_em,st,yr=yr,/ysty,xr=xr,/xsty,/xlog,/ylog,title=tit,xtit=xtit,ytit=ytit + device,/close + set_plot,previous_device + message,'Wrote '+file_ps,/continue + ENDIF + +ENDFOR + +;stop + +the_end: + +END -- libgit2 0.21.2