From d339db1c96890ebdd5ed82bbadfcdb0563e10969 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Bernard Date: Thu, 14 Mar 2024 09:24:26 +0100 Subject: [PATCH] improved --- Docs/developers/Code_Structure_Flowcharts/dustem-wrapper_flow_chart1.drawio | 2 +- LabTools/IRAP/JPB/make_sed_phangs_tables.pro | 22 +++++++++++++++------- LabTools/IRAP/JPB/phangs_brute_force_fit_with_isrf_grid.pro | 87 ++++++++++++++++++++++++++++++++++++++++++++------------------------------------------- LabTools/IRAP/JPB/srun/make_phangs_grids.pro | 8 +++++--- src/idl/dustem_compute_sed.pro | 9 +++++++-- src/idl/dustem_make_sed_table.pro | 24 +++--------------------- src/idl/dustem_param_range2param_values.pro | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-- src/idl/dustem_plugin_phangs_stellar_isrf.pro | 7 +++++-- src/idl/dustem_set_params.pro | 6 ++++++ src/idl/dustem_set_up_fortran.pro | 6 ++++-- 10 files changed, 140 insertions(+), 83 deletions(-) diff --git a/Docs/developers/Code_Structure_Flowcharts/dustem-wrapper_flow_chart1.drawio b/Docs/developers/Code_Structure_Flowcharts/dustem-wrapper_flow_chart1.drawio index f40298e..c94509f 100644 --- a/Docs/developers/Code_Structure_Flowcharts/dustem-wrapper_flow_chart1.drawio +++ b/Docs/developers/Code_Structure_Flowcharts/dustem-wrapper_flow_chart1.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/LabTools/IRAP/JPB/make_sed_phangs_tables.pro b/LabTools/IRAP/JPB/make_sed_phangs_tables.pro index 397e1d5..d0c5977 100644 --- a/LabTools/IRAP/JPB/make_sed_phangs_tables.pro +++ b/LabTools/IRAP/JPB/make_sed_phangs_tables.pro @@ -94,22 +94,30 @@ CASE use_grid_type OF '(*!dustem_params).grains(0).mdust_o_mh',$ ;PAH0 mass fraction [1.e-4,1.e-1] 20 values '(*!dustem_params).grains(1).mdust_o_mh' $ ;VSG mass fraction [1.e-4,1.e-1] 20 values ] - iv_min = [0.1,0. ,1.e-4,1.e-4] + ;iv_min = [0.1,0. ,1.e-4,1.e-4] ;does not run for values =0., because of use of pmin (division by initial value) + iv_min = [0.1,1.e-10 ,1.e-4,1.e-4] iv_max = [100,0.02,1.e-1,1.e-1] log=[1,0,1,1] - fpd=['(*!dustem_params).gas.g0', $ ;gas.G0=-1 (not used) - '(*!dustem_params).g0', $ ;g0=1 (not used) - 'dustem_plugin_dl07_isrf_model_2', $ ;alpha=1 + ;fpd=['(*!dustem_params).gas.g0', $ ;gas.G0=-1 (not used) + ; '(*!dustem_params).g0', $ ;g0=1 (not used) + ; 'dustem_plugin_dl07_isrf_model_2', $ ;alpha=1 + ; 'dustem_plugin_dl07_isrf_model_4' $ ;Umax=1.e7 + ; ] + ;fiv=[-1.,1.,2.,1.e7] ;This sets the fixed parameters + fpd=['dustem_plugin_dl07_isrf_model_2', $ ;alpha=1 'dustem_plugin_dl07_isrf_model_4' $ ;Umax=1.e7 ] + fiv=[2.,1.e7] ;This sets the fixed parameters dustem_init,model=model fortran_user=dustem_set_up_fortran(/random_name) ;use a random fortran number - !dustem_verbose=0 - (*!dustem_params).KEYWORDS='quiet '+(*!dustem_params).KEYWORDS ;This makes Fortran be quiet too + !dustem_verbose=1 + !quiet=0 + !dustem_nocatch=1 + ;!dustem_verbose=0 + ;(*!dustem_params).KEYWORDS='quiet '+(*!dustem_params).KEYWORDS ;This makes Fortran be quiet too ;=== select filters to be used for the grid filters=[(*!dustem_filters).nircam.filter_names,(*!dustem_filters).miri.filter_names, $ (*!dustem_filters).iras.filter_names,(*!dustem_filters).pacs.filter_names,(*!dustem_filters).spire.filter_names] - fiv=[-1.,1.,2.,1.e7] ;This sets the fixed parameters ;define the number of free parameters in the grid and the grid fits table name IF keyword_set(test) THEN BEGIN iv_Nvalues=[2,2,3,3] diff --git a/LabTools/IRAP/JPB/phangs_brute_force_fit_with_isrf_grid.pro b/LabTools/IRAP/JPB/phangs_brute_force_fit_with_isrf_grid.pro index 1052d66..bd039ac 100644 --- a/LabTools/IRAP/JPB/phangs_brute_force_fit_with_isrf_grid.pro +++ b/LabTools/IRAP/JPB/phangs_brute_force_fit_with_isrf_grid.pro @@ -35,6 +35,7 @@ PRO phangs_brute_force_fit_with_isrf_grid,source_name=source_name $ ; EXAMPLE: ; phangs_brute_force_fit_with_isrf_grid,source_name='ngc0628',/normalize,/save ; phangs_brute_force_fit_with_isrf_grid,source_name='ngc0628',/normalize,/save,/include_herschel,/fit_G0,/show_seds +; phangs_brute_force_fit_with_isrf_grid,source_name='ngc0628',/normalize,/save,/include_herschel,/fit_G0,/force_Mathis ; MODIFICATION HISTORY: ; written by Jean-Philippe Bernard ;- @@ -266,8 +267,11 @@ FOR isrf_class=class_min,class_max DO BEGIN vid=ind_class[vvid] G0=interpol(ISRFs[*,vid],isrf_wavelengths,1.0)/Mathis_1mic G0s_predicted[vid]=G0 - G0=G0*10. ;This is a test - IF not keyword_set(force_mathis) AND not keyword_set(fit_G0) THEN BEGIN + ;G0=G0*10. ;This is a test + ;IF not keyword_set(force_mathis) AND not keyword_set(fit_G0) THEN BEGIN + ; fixed_parameters_values=[G0] + ; ENDIF + IF not keyword_set(fit_G0) THEN BEGIN fixed_parameters_values=[G0] ENDIF sed=*seds_ptr[vid] @@ -307,7 +311,8 @@ FOR isrf_class=class_min,class_max DO BEGIN print,params_hit stop ENDIF - IF not keyword_set(force_mathis) AND not keyword_set(fit_G0) THEN BEGIN + ;IF not keyword_set(force_mathis) AND not keyword_set(fit_G0) THEN BEGIN + IF not keyword_set(fit_G0) THEN BEGIN G0s[vid]=G0 ENDIF ELSE BEGIN G0s[vid]=weighted_params[0] @@ -326,21 +331,21 @@ FOR isrf_class=class_min,class_max DO BEGIN ;print,params[0],params[1],params[2],fact,chi2 ENDIF ENDFOR - ind=where(vor_class EQ isrf_class,Nvor_class) + ;ind=where(vor_class EQ isrf_class,Nvor_class) st[isrf_class].Nvor=Nvor_class st[isrf_class].isrf_class=isrf_class - st[isrf_class].min_G0=la_min(G0s[ind]) - st[isrf_class].med_G0=la_median(G0s[ind]) - st[isrf_class].max_G0=la_max(G0s[ind]) - st[isrf_class].min_Ypah=la_min(Ypahs[ind]) - st[isrf_class].med_Ypah=la_median(Ypahs[ind]) - st[isrf_class].max_Ypah=la_max(Ypahs[ind]) - st[isrf_class].min_Yvsg=la_min(Yvsgs[ind]) - st[isrf_class].med_Yvsg=la_median(Yvsgs[ind]) - st[isrf_class].max_Yvsg=la_max(Yvsgs[ind]) - st[isrf_class].min_chi2=la_min(chi2s[ind]) - st[isrf_class].med_chi2=la_median(chi2s[ind]) - st[isrf_class].max_chi2=la_max(chi2s[ind]) + st[isrf_class].min_G0=la_min(G0s[ind_class]) + st[isrf_class].med_G0=la_median(G0s[ind_class]) + st[isrf_class].max_G0=la_max(G0s[ind_class]) + st[isrf_class].min_Ypah=la_min(Ypahs[ind_class]) + st[isrf_class].med_Ypah=la_median(Ypahs[ind_class]) + st[isrf_class].max_Ypah=la_max(Ypahs[ind_class]) + st[isrf_class].min_Yvsg=la_min(Yvsgs[ind_class]) + st[isrf_class].med_Yvsg=la_median(Yvsgs[ind_class]) + st[isrf_class].max_Yvsg=la_max(Yvsgs[ind_class]) + st[isrf_class].min_chi2=la_min(chi2s[ind_class]) + st[isrf_class].med_chi2=la_median(chi2s[ind_class]) + st[isrf_class].max_chi2=la_max(chi2s[ind_class]) write_xcat,st,'/tmp/essai.xcat' ENDIF ELSE BEGIN message,'No Voronoi bins found with ISRF class '+strtrim(isrf_class,2),/continue @@ -399,27 +404,6 @@ restore,file_save,/verb file_save=data_dir+use_source_name+'_DBP90_JWST_G0_YPAH_YVSG_maps_with-ISRFclasses'+norm_str+mathis_str+'.sav' restore,file_save,/verb -;===== compute some results statistics -one_st={isrf_class:0L,min_G0:0.,med_G0:0.,max_G0:0.,min_Ypah:0.,med_Ypah:0.,max_Ypah:0.,min_Yvsg:0.,med_Yvsg:0.,max_Yvsg:0.,min_chi2:0.,med_chi2:0.,max_chi2:0.} -;Nisrf_class=class_max-class_min+1 -st=replicate(one_st,30) -FOR isrf_class=class_min,class_max DO BEGIN - ind=where(vor_class EQ isrf_class,Nvor_class) - st[isrf_class].isrf_class=isrf_class - st[isrf_class].min_G0=la_min(G0s[ind]) - st[isrf_class].med_G0=la_median(G0s[ind]) - st[isrf_class].max_G0=la_max(G0s[ind]) - st[isrf_class].min_Ypah=la_min(Ypahs[ind]) - st[isrf_class].med_Ypah=la_median(Ypahs[ind]) - st[isrf_class].max_Ypah=la_max(Ypahs[ind]) - st[isrf_class].min_Yvsg=la_min(Yvsgs[ind]) - st[isrf_class].med_Yvsg=la_median(Yvsgs[ind]) - st[isrf_class].max_Yvsg=la_max(Yvsgs[ind]) - st[isrf_class].min_chi2=la_min(chi2s[ind]) - st[isrf_class].med_chi2=la_median(chi2s[ind]) - st[isrf_class].max_chi2=la_max(chi2s[ind]) -ENDFOR - stop cleanplot @@ -435,7 +419,7 @@ cgplot,xv,res,psym=10,title='ISRF class histogram',xtit='class',ytit='Number',/y win=0L window,win,xsize=700,ysize=900 & win=win+1 !p.multi=[0,1,3] -ind=where(G0s NE la_undef() and G0s GT 0) +ind=where(G0s NE la_undef() and G0s GT 0,Nbins=100) res=histogram(G0s[ind],locations=xv) cgplot,xv,res,psym=10,title='G0s histogram',xtit='G0',ytit='Number',/ylog,yrange=[1,max(res)],/ysty @@ -454,6 +438,12 @@ win=0L window,win,xsize=800,ysize=900 & win=win+1 imrange=[-4.5,-2.5] ;image_cont20,G0_map,Href,/square,imrange=[-2,40],axis_color_table=1,image_color_table='jpbloadct',/silent,off_bar=obp,title='G0' +image_cont20,la_log10(G0_predicted_map),Href,/square,imrange=imrange,axis_color_table=1,image_color_table='jpbloadct',/silent,off_bar=obp,title='log10(G0_predicted)' + +window,win,xsize=800,ysize=900 & win=win+1 +imrange=[-4.5,-2.5] +imrange=[-4.,-2.5]+3 ;with Herschel data +;image_cont20,G0_map,Href,/square,imrange=[-2,40],axis_color_table=1,image_color_table='jpbloadct',/silent,off_bar=obp,title='G0' image_cont20,la_log10(G0_map),Href,/square,imrange=imrange,axis_color_table=1,image_color_table='jpbloadct',/silent,off_bar=obp,title='log10(G0)' window,win,xsize=800,ysize=900 & win=win+1 @@ -464,12 +454,13 @@ image_cont20,la_log10(Ypah_map),Href,/square,imrange=imrange,axis_color_table=1, window,win,xsize=800,ysize=900 & win=win+1 ;imrange=[-4.,-3.]+0.5 ;normalize=1 -imrange=[-4.5,-2.]+0.4 ;normalize=1 +;imrange=[-4.5,-2.]+0.4 ;normalize=1 ;imrange=[-2.2,-1.6] ;normalize=0 +imrange=[-4,-2.]+0.4 image_cont20,la_log10(YVSG_map),Href,/square,imrange=imrange,axis_color_table=1,image_color_table='jpbloadct',/silent,off_bar=obp,title='log10(Yvsg)' window,win,xsize=800,ysize=900 & win=win+1 -imrange=[2,7]+1 +imrange=[2,4] image_cont20,la_log10(chi2_map),Href,/square,imrange=imrange,axis_color_table=1,image_color_table='jpbloadct',/silent,title='log10(Chi2)',off_bar=obp window,win,xsize=800,ysize=900 & win=win+1 @@ -493,17 +484,27 @@ imrange=0 imrange=[-2.0,-1.45] image_cont20,la_log10(la_mul(Ypah_map,fact_map)),Href,/square,imrange=imrange,axis_color_table=1,image_color_table='jpbloadct',/silent,title='Ypah *fact',off_bar=obp +window,win,xsize=800,ysize=900 & win=win+1 +rap_G0=la_div(G0_map,G0_predicted_map) & tit='log(G0/G0_predicted)' +;rap_G0=la_power(la_div(G0_map,G0_predicted_map),0.5) & tit='log(distance star-dust)' +imrange=0 +image_cont20,la_log10(rap_G0),Href,/square,imrange=imrange,axis_color_table=1,image_color_table='jpbloadct',/silent,title=tit,off_bar=obp + ;=== other plots NH_range=[0.1,1000.] -G0_range=[1.e-5,0.1] +G0_range=[0.1,10] +G0_range_pred=[0.001,10]/10000. Ypah_range=[8.e-5,2.e-1] Yvsg_range=[8.e-5,2.e-1] chi2_range=[1.e3,1.e7] window,win,xsize=800,ysize=900 & win=win+1 +cgplot,G0s_predicted,G0s,/xlog,/ylog,xrange=G0_range_pred,/xsty,yrange=G0_range,/ysty,psym=3,xtit='G0 predicted',ytit='G0' + +window,win,xsize=800,ysize=900 & win=win+1 !p.multi=[0,1,3] -cgplot,G0s,Ypahs,/xlog,/ylog,xr=[1.e-5,1.e-2],/xsty,psym=3,xtit='G0',ytit='Ypah' -cgplot,G0s,Yvsgs,/xlog,/ylog,xr=[1.e-5,1.e-2],/xsty,psym=3,xtit='G0',ytit='Yvsg' +cgplot,G0s,Ypahs,/xlog,/ylog,xr=G0_range,/xsty,psym=3,xtit='G0',ytit='Ypah' +cgplot,G0s,Yvsgs,/xlog,/ylog,xr=G0_range,/xsty,psym=3,xtit='G0',ytit='Yvsg' cgplot,Yvsgs,Ypahs,/xlog,/ylog,xr=[1.e-4,1.e-1],yr=[1.e-4,1.e-1],/xsty,psym=3,xtit='Yvsg',ytit='Ypah' window,win,xsize=800,ysize=900 & win=win+1 diff --git a/LabTools/IRAP/JPB/srun/make_phangs_grids.pro b/LabTools/IRAP/JPB/srun/make_phangs_grids.pro index a4eef7a..1439dff 100644 --- a/LabTools/IRAP/JPB/srun/make_phangs_grids.pro +++ b/LabTools/IRAP/JPB/srun/make_phangs_grids.pro @@ -6,7 +6,7 @@ PRO make_phangs_grids,bidon ;=== To be run on titan using something like this: ;srun -pn51 -J Pg06 -o {$phangs_srundir}/make_phangs_grids07.log /home/soft/exelis/idl83/bin/idl {$phangs_srundir}/make_phangs_grids.pro & ;=== To be run on alma1 using something like this: -;nohup /usr/local/harris/idl87/bin/idl < {$phangs_srundir}/make_phangs_grids.pro >& {$phangs_srundir}/make_phangs_grids5.log & +;nohup /usr/local/harris/idl87/bin/idl < {$phangs_srundir}/make_phangs_grids.pro >& {$phangs_srundir}/make_phangs_grids7.log & ;ssh jbernard@localhost -p2223 "nohup /usr/local/harris/idl87/bin/idl < {$phangs_srundir}/make_phangs_grids.pro >& {$phangs_srundir}/make_phangs_grids.log &" ;=== check progress using: ;tail -20 {$phangs_srundir}/make_phangs_grids19.log @@ -19,7 +19,9 @@ t0=systime(/sec) bidon=1 -;make grid +;make grid +;=== This is for DBP90 a la DL07 +make_sed_phangs_tables,grid_type=3,/test,/show_seds ;make_sed_phangs_tables,/test,grid_type=2,/show_seds,isrf_class=15 ;make_sed_phangs_tables,grid_type=2,isrf_class=30 ;titan Pg30. Canceled. Class does not exist ;make_sed_phangs_tables,grid_type=2,isrf_class=29 ;titan Pg29 @@ -45,7 +47,7 @@ bidon=1 ;make_sed_phangs_tables,grid_type=2,isrf_class=10 ;make_sed_phangs_tables,grid_type=2,isrf_class=9 ;make_sed_phangs_tables,grid_type=2,isrf_class=8 -make_sed_phangs_tables,grid_type=2,isrf_class=7 ;doing on alma1 +;make_sed_phangs_tables,grid_type=2,isrf_class=7 ;doing on alma1 ;make_sed_phangs_tables,grid_type=2,isrf_class=6 ;titan, redoing on mac ;make_sed_phangs_tables,grid_type=2,isrf_class=5 ;doing on alma1 ;make_sed_phangs_tables,grid_type=2,isrf_class=4 ;titan, redoing on alma1 diff --git a/src/idl/dustem_compute_sed.pro b/src/idl/dustem_compute_sed.pro index b6b9d39..df71301 100755 --- a/src/idl/dustem_compute_sed.pro +++ b/src/idl/dustem_compute_sed.pro @@ -67,10 +67,15 @@ IF keyword_set(help) THEN BEGIN goto,the_end ENDIF +;stop + IF not keyword_set(st) and not keyword_set(input_spec) THEN BEGIN + ;==== JPB: This division leads to NaN for initial values at 0 !! dustem_activate_plugins,p_dim/(*(*!dustem_fit).param_init_values),st=st,use_previous_fortran=use_previous_fortran ENDIF +;stop + IF not keyword_set(input_spec) THEN BEGIN ; Convert into MJy/sr/1d20 fact = 1.e4*(*!dustem_HCD)/(4.*!pi)/(3.e8/1.e-6/st.sed.wav)*1.e20/1.e7 ;this is correct despite the way it is presented (1.e4/1e.7*1e.20=1.e17 which is the factor to convert from ergs to Mega Janskys) @@ -90,7 +95,7 @@ IF not keyword_set(input_spec) THEN BEGIN ENDIF ENDFOR ENDIF -endif +ENDIF if keyword_set(input_spec) then begin SED_spec=input_spec @@ -98,7 +103,7 @@ if keyword_set(input_spec) then begin endif ;------------------------------------------ - +;stop IF not isarray(SED_spec) THEN stop ;COMPUTE THE MODEL SED diff --git a/src/idl/dustem_make_sed_table.pro b/src/idl/dustem_make_sed_table.pro index 90f500d..94cfde4 100644 --- a/src/idl/dustem_make_sed_table.pro +++ b/src/idl/dustem_make_sed_table.pro @@ -160,34 +160,16 @@ FOR i=0L,Nc-1 DO BEGIN print,'fixed_parameter_values=',fiv ;stop ;=== initialise all this information into dustemwrap's brain + dustem_init_params,model,pd,pval,fpd=fpd,fiv=fiv,pol=use_polarisation,/force_reset ;stop - ;dustem_init_params,model,pd,pval,fpd=fpd,fiv=fpval,pol=use_polarisation - dustem_init_params,model,pd,pval,fpd=fpd,fiv=fiv,pol=use_polarisation ;=== compute the predicted SED and extinction curve for the dust-model ;=== and any plugins dustem_Ised=dustem_compute_sed(pval,st=dummy) dustem_Qsed=dustem_Ised*0. dustem_Used=dustem_Ised*0. - ; uncomment following lines if running a polarisation model and you - ;want predictions of QU - ;toto=dustem_compute_stokes(pval,st=dummy) ;this procedure also allows for the extraction of the spectra - ;dustem_qsed = toto[0] - ;dustem_used = toto[1] - - ;This is for extinction. Not used at the moment. - ;dustem_iext=dustem_compute_ext(pval,st=dummy) - ;dustem_Qext=dustem_Iext*0. - ;dustem_Uext=dustem_Iext*0. - ; uncomment following lines if running a polarisation model and you - ;want predictions of QU - ;toto=dustem_compute_stokext(pval,st=dummy) ;this procedure also allows for the extraction of the spectra - ;dustem_qext = toto[0] - ;dustem_uext = toto[1] ;== Now we have a predicted SED (I), we fill up a structure that we - ;== will write to the sed_outfile - ;== if you sed.stokesI=dustem_Ised sed.stokesQ=dustem_Qsed sed.stokesU=dustem_Used @@ -215,7 +197,7 @@ FOR i=0L,Nc-1 DO BEGIN ENDIF ;stop ENDFOR -;stop +stop str='one_sed={' FOR i=0L,Nparams-1 DO BEGIN @@ -232,7 +214,7 @@ ENDFOR str=str+'total:0.d0}' toto=execute(str) -;stop +stop Noffset=1 IF use_polarization EQ 1 THEN Noffset=3 seds_array=replicate(one_sed,Nc) diff --git a/src/idl/dustem_param_range2param_values.pro b/src/idl/dustem_param_range2param_values.pro index 8bf9612..a0d59ce 100644 --- a/src/idl/dustem_param_range2param_values.pro +++ b/src/idl/dustem_param_range2param_values.pro @@ -1,4 +1,50 @@ -FUNCTION dustem_param_range2param_values,iv_min,iv_max,iv_Nvalues,Nc=Nc,log=log +FUNCTION dustem_param_range2param_values,iv_min,iv_max,iv_Nvalues,Nc=Nc,log=log,help=help + + +;+ +; NAME: +; dustem_param_range2param_values +; PURPOSE: +; computes sets (combinations) of dustem parameter values with no duplicate combination, based on min-max values for each parameter +; CATEGORY: +; Dustem +; CALLING SEQUENCE: +; params_set=dustem_param_range2param_values(iv_min,iv_max,iv_Nvalues[,Nc=][,log=]) +; INPUTS: +; iv_min : minimum values of parameters (array of Npar values) +; iv_max : maximum values of parameters (array of Npar values) +; iv_Nvalues : Number of individual parameter cvalues needed (array of Npar values) +; OPTIONAL INPUT PARAMETERS: +; log : array indicating which parameter should be sampled in log scale (1) or linear scale (0). Default is linear for all parameters +; OUTPUTS: +; params_set :array of pointers containing parameter values (has Nc elements each pointing to an array of Npar values) +; OPTIONAL OUTPUT PARAMETERS: +; Nc : nmeber of parameter combinations +; ACCEPTED KEY-WORDS: +; help : If set, print this help +; COMMON BLOCKS: +; None +; SIDE EFFECTS: +; None +; RESTRICTIONS: +; +; PROCEDURE: +; None +; EXAMPLES +; res=dustem_param_range2param_values([0,2.],[8.,3.e1],[9,5],Nc=Nc,log=[0,1]) +; print,*res[13] +; 4.00000 3.93598 +; MODIFICATION HISTORY: +; Written by J.-Ph. Bernard (2023) +; Evolution details on the DustEMWrap gitlab. +; See http://dustemwrap.irap.omp.eu/ for FAQ and help. +;- + +IF keyword_set(help) THEN BEGIN + doc_library,'dustem_param_range2param_values' + ivs=0. + goto,the_end +ENDIF Nparams=n_elements(iv_min) @@ -9,7 +55,7 @@ FOR i=0L,Nparams-1 DO Nc=Nc*iv_Nvalues[i] ;compute parameters possible values par_values=ptrarr(Nparams) FOR i=0L,Nparams-1 DO BEGIN - vv=range_gen(iv_Nvalues[i],[iv_min[i],iv_max[i]],log=log) + vv=range_gen(iv_Nvalues[i],[iv_min[i],iv_max[i]],log=log[i]) par_values[i]=ptr_new(vv) ENDFOR ;=== compute combinations @@ -26,5 +72,7 @@ FOR i=0L,Nc-1 DO BEGIN ;stop ENDFOR +the_end: RETURN,ivs + END \ No newline at end of file diff --git a/src/idl/dustem_plugin_phangs_stellar_isrf.pro b/src/idl/dustem_plugin_phangs_stellar_isrf.pro index e0f6112..0a4a17f 100644 --- a/src/idl/dustem_plugin_phangs_stellar_isrf.pro +++ b/src/idl/dustem_plugin_phangs_stellar_isrf.pro @@ -84,8 +84,11 @@ IF keyword_set(paramtag) THEN BEGIN ENDIF use_object_distance=1. ;MPc -use_object_thickness=1. ;kPc -use_omega_ratio=((use_object_thickness/2.)/(use_object_distance*1.e6))^2 +use_object_thickness=1. ;Pc +IF keyword_set(object_distance) THEN use_object_distance=object_distance +IF keyword_set(object_thickness) THEN use_object_thickness=object_thickness + +use_omega_ratio=((use_object_thickness/2.*1.e3)/(use_object_distance*1.e6))^2 ;This factor is to go from Inu_stars in MJy/sr to 4*pi*Iisrf in ergs/s/cm2/Hz use_factor=4.*!pi*1.e-20*1.e7*1.e4*use_omega_ratio diff --git a/src/idl/dustem_set_params.pro b/src/idl/dustem_set_params.pro index dbba230..8ed28a8 100755 --- a/src/idl/dustem_set_params.pro +++ b/src/idl/dustem_set_params.pro @@ -61,7 +61,12 @@ IF count EQ n_elements(*(*!dustem_fit).param_descs) THEN BEGIN goto,the_end ENDIF +;stop Nparams=n_elements(*(*!dustem_fit).param_descs) +IF n_elements(params) NE Nparams THEN BEGIN + message,'Inconsistent number of parameters passed',/info + stop +ENDIF ;Trimmed JPB on 08 March 2024 ;dustem_set_func_ind,*(*!dustem_fit).param_descs,params @@ -93,6 +98,7 @@ FOR i=0L,Nparams-1 DO BEGIN ENDCASE ENDFOR +;==== This writes the input files for the fortran dustem_write_all,*!dustem_params,!dustem_dat the_end: diff --git a/src/idl/dustem_set_up_fortran.pro b/src/idl/dustem_set_up_fortran.pro index 4e97736..aa8fb3e 100644 --- a/src/idl/dustem_set_up_fortran.pro +++ b/src/idl/dustem_set_up_fortran.pro @@ -101,11 +101,13 @@ message,'Issuing '+str,/cont spawn,str ;2/ compile dustem -str='rm '+!DUSTEM_SOFT_DIR+'/src/*.o' +;str='rm '+!DUSTEM_SOFT_DIR+'/src/*.o' +str='rm '+!DUSTEM_SOFT_DIR+'/src/DM_constants.o' message,'Issuing '+str,/cont spawn,str -str='rm '+!DUSTEM_SOFT_DIR+'/src/*.mod' +;str='rm '+!DUSTEM_SOFT_DIR+'/src/*.mod' +str='rm '+!DUSTEM_SOFT_DIR+'/src/DM_constants.mod' message,'Issuing '+str,/cont spawn,str -- libgit2 0.21.2