diff options
-rwxr-xr-x | mass_profile/coolfunc_calc.sh | 102 | ||||
-rwxr-xr-x | mass_profile/coolfunc_calc2.sh | 173 | ||||
-rwxr-xr-x | mass_profile/fit_nfwmass.sh | 4 | ||||
-rwxr-xr-x | mass_profile/fit_sbp.sh | 2 |
4 files changed, 62 insertions, 219 deletions
diff --git a/mass_profile/coolfunc_calc.sh b/mass_profile/coolfunc_calc.sh index c4935b7..9a01648 100755 --- a/mass_profile/coolfunc_calc.sh +++ b/mass_profile/coolfunc_calc.sh @@ -1,39 +1,32 @@ #!/bin/sh -# -# unalias -a -# -########################################################### -## Task: ## -## Calc `cooling function' data according to ## -## given `temperature profile' ## -## ## -## NOTE: ## -## given `tprofile': <radius> <temperature> ## -## calc `cooling function' by invoking `XSPEC' ## -## using model `wabs*apec' ## -## ## -## LIweitiaNux <liweitianux@gmail.com> ## -## August 17, 2012 ## -########################################################### +## +## Calculate the 'cooling function' profile with respect to the +## given 'temperature profile' and the average abundance, redshift, +## and column density nH, using the XSPEC model 'wabs*apec'. +## +## Weitian LI +## Created: 2012-08-17 +## Updated: 2016-06-08 +## ## cmdline arguments {{{ -if [ $# -ne 5 ]; then +if [ $# -eq 5 ]; then + : +elif [ $# -eq 6 ]; then + COOLFUNC_BOLO="$6" + [ -e "${COOLFUNC_BOLO}" ] && rm -f ${COOLFUNC_BOLO} +else printf "usage:\n" - printf " `basename $0` <tprofile> <avg_abund> <nH> <redshift> <coolfunc_outfile>\n" + printf " `basename $0` <tprofile> <avg_abund> <nH> <redshift> <coolfunc_outfile> [coolfunc_bolo]\n" exit 1 fi -base_path=`dirname $0` TPROFILE=$1 ABUND_VAL=$2 N_H=$3 REDSHIFT=$4 -NORM=`$base_path/calc_distance $REDSHIFT|grep norm|awk '{print $2}'` - -echo $NORM - - +NORM=`cosmo_calc ${REDSHIFT} | grep 'norm.*cooling_function' | awk -F':' '{ print $2 }'` COOLFUNC_DAT=$5 -COOLFUNC_DAT_RATIO=flux_cnt_ratio.txt +COOLFUNC_DAT_RATIO="flux_cnt_ratio.txt" if [ ! -r "${TPROFILE}" ]; then printf "ERROR: given tprofile '${TPROFILE}' NOT accessiable\n" @@ -51,15 +44,14 @@ XSPEC_CF_XCM="_coolfunc_calc.xcm" ## generate xspec script {{{ cat >> ${XSPEC_CF_XCM} << _EOF_ ## XSPEC Tcl script -## calc cooling function data +## Calculate the cooling function profile w.r.t the temperature profile ## -## generated by: `basename $0` -## date: `date` +## Generated by: `basename $0` +## Date: `date` set xs_return_results 1 set xs_echo_script 0 # set tcl_precision 12 -dummyrsp .01 100 4096 ## set basic data {{{ set nh ${N_H} set redshift ${REDSHIFT} @@ -73,19 +65,18 @@ chatter 0 # debug }}} query yes abund grsa -dummyrsp 0.3 11.0 1024 +dummyrsp 0.01 100.0 4096 linear # load model 'wabs*apec' to calc cooling function model wabs*apec & \${nh} & 1.0 & \${abund_val} & \${redshift} & \${norm} & /* ## xspec }}} -## set input and output filename +## set input and output filename & open files set tpro_fn "${TPROFILE}" set cf_fn "${COOLFUNC_DAT}" set cff_fn "${COOLFUNC_DAT_RATIO}" if { [ file exists \${cf_fn} ] } { exec rm -fv \${cf_fn} } - if { [ file exists \${cff_fn} ] } { exec rm -fv \${cff_fn} } @@ -95,6 +86,21 @@ set tpro_fd [ open \${tpro_fn} r ] set cf_fd [ open \${cf_fn} w ] set cff_fd [ open \${cff_fn} w ] +_EOF_ + +if [ ! -z "${COOLFUNC_BOLO}" ]; then + cat >> ${XSPEC_CF_XCM} << _EOF_ +# coolfunc bolometric +set cfbolo_fn "${COOLFUNC_BOLO}" +if { [ file exists \${cfbolo_fn} ] } { + exec rm -fv \${cfbolo_fn} +} +set cfbolo_fd [ open \${cfbolo_fn} w ] + +_EOF_ +fi + +cat >> ${XSPEC_CF_XCM} << _EOF_ ## read data from tprofile line by line while { [ gets \${tpro_fd} tpro_line ] != -1 } { # gets one line @@ -112,27 +118,37 @@ while { [ gets \${tpro_fd} tpro_line ] != -1 } { tclout flux 1 scan \${xspec_tclout} "%f %f %f %f" cff_data holder holder holder puts \${cff_fd} "\${radius} [expr \${cff_data}/\${cf_data}]" +_EOF_ +if [ ! -z "${COOLFUNC_BOLO}" ]; then + cat >> ${XSPEC_CF_XCM} << _EOF_ + # coolfunc bolometric + set cfbolo_data \$cff_data + #puts "cfbolo_data: \${cfbolo_data}" + puts \${cfbolo_fd} "\${radius} \${cfbolo_data}" +_EOF_ +fi +cat >> ${XSPEC_CF_XCM} << _EOF_ } ## close opened files close \${tpro_fd} close \${cf_fd} +_EOF_ + +if [ ! -z "${COOLFUNC_BOLO}" ]; then + cat >> ${XSPEC_CF_XCM} << _EOF_ +# coolfunc bolometric +close \${cfbolo_fd} + +_EOF_ +fi +cat >> ${XSPEC_CF_XCM} << _EOF_ ## exit tclexit _EOF_ - -## extract xcm }}} +## generate xcm }}} ## invoke xspec to calc printf "invoking XSPEC to calculate cooling function data ...\n" -# xspec - ${XSPEC_CF_XCM} xspec - ${XSPEC_CF_XCM} > /dev/null - -## clean -# if [ -e "${XSPEC_CF_XCM}" ]; then -# rm -f ${XSPEC_CF_XCM} -# fi - -exit 0 - diff --git a/mass_profile/coolfunc_calc2.sh b/mass_profile/coolfunc_calc2.sh deleted file mode 100755 index c469619..0000000 --- a/mass_profile/coolfunc_calc2.sh +++ /dev/null @@ -1,173 +0,0 @@ -#!/bin/sh -# -# unalias -a -# -########################################################### -## Task: ## -## Calc `cooling function' data according to ## -## given `temperature profile' ## -## ## -## NOTE: ## -## given `tprofile': <radius> <temperature> ## -## calc `cooling function' by invoking `XSPEC' ## -## using model `wabs*apec' ## -## ## -## LIweitiaNux <liweitianux@gmail.com> ## -## August 17, 2012 ## -########################################################### - -## cmdline arguments {{{ -if [ $# -eq 5 ]; then - : -elif [ $# -eq 6 ]; then - COOLFUNC_BOLO=$6 - [ -e "${COOLFUNC_BOLO}" ] && rm -f ${COOLFUNC_BOLO} -else - printf "usage:\n" - printf " `basename $0` <tprofile> <avg_abund> <nH> <redshift> <coolfunc_outfile> [coolfunc_bolo]\n" - exit 1 -fi -base_path=`dirname $0` -TPROFILE=$1 -ABUND_VAL=$2 -N_H=$3 -REDSHIFT=$4 -NORM=`$base_path/calc_distance $REDSHIFT | grep norm | awk '{ print $2 }'` -COOLFUNC_DAT=$5 -COOLFUNC_DAT_RATIO="flux_cnt_ratio.txt" - -if [ ! -r "${TPROFILE}" ]; then - printf "ERROR: given tprofile '${TPROFILE}' NOT accessiable\n" - exit 2 -fi -[ -e "${COOLFUNC_DAT}" ] && rm -f ${COOLFUNC_DAT} -[ -e "${COOLFUNC_DAT_RATIO}" ] && rm -f ${COOLFUNC_DAT_RATIO} -## arguments }}} - -## specify variable name outside while loop -## otherwise the inside vars invisible -XSPEC_CF_XCM="_coolfunc_calc.xcm" -[ -e "${XSPEC_CF_XCM}" ] && rm -f ${XSPEC_CF_XCM} - -## generate xspec script {{{ -cat >> ${XSPEC_CF_XCM} << _EOF_ -## XSPEC Tcl script -## calc cooling function data -## -## generated by: `basename $0` -## date: `date` - -set xs_return_results 1 -set xs_echo_script 0 -# set tcl_precision 12 -dummyrsp .01 100 4096 -## set basic data {{{ -set nh ${N_H} -set redshift ${REDSHIFT} -set abund_val ${ABUND_VAL} -set norm ${NORM} -## basic }}} - -## xspec related {{{ -# debug settings {{{ -chatter 0 -# debug }}} -query yes -abund grsa -dummyrsp 0.3 11.0 1024 -# load model 'wabs*apec' to calc cooling function -model wabs*apec & \${nh} & 1.0 & \${abund_val} & \${redshift} & \${norm} & /* -## xspec }}} - -## set input and output filename & open files -set tpro_fn "${TPROFILE}" -set cf_fn "${COOLFUNC_DAT}" -set cff_fn "${COOLFUNC_DAT_RATIO}" -if { [ file exists \${cf_fn} ] } { - exec rm -fv \${cf_fn} -} -if { [ file exists \${cff_fn} ] } { - exec rm -fv \${cff_fn} -} - -## open files -set tpro_fd [ open \${tpro_fn} r ] -set cf_fd [ open \${cf_fn} w ] -set cff_fd [ open \${cff_fn} w ] - -_EOF_ - -if [ ! -z "${COOLFUNC_BOLO}" ]; then - cat >> ${XSPEC_CF_XCM} << _EOF_ -# coolfunc bolometric -set cfbolo_fn "${COOLFUNC_BOLO}" -if { [ file exists \${cfbolo_fn} ] } { - exec rm -fv \${cfbolo_fn} -} -set cfbolo_fd [ open \${cfbolo_fn} w ] - -_EOF_ -fi - -cat >> ${XSPEC_CF_XCM} << _EOF_ -## read data from tprofile line by line -while { [ gets \${tpro_fd} tpro_line ] != -1 } { - # gets one line - scan \${tpro_line} "%f %f" radius temp_val - #puts "radius: \${radius}, temperature: \${temp_val}" - # set temperature value - newpar 2 \${temp_val} - # calc flux & tclout - flux 0.7 7.0 - tclout flux 1 - scan \${xspec_tclout} "%f %f %f %f" holder holder holder cf_data - #puts "cf_data: \${cf_data}" - puts \${cf_fd} "\${radius} \${cf_data}" - flux 0.01 100.0 - tclout flux 1 - scan \${xspec_tclout} "%f %f %f %f" cff_data holder holder holder - puts \${cff_fd} "\${radius} [expr \${cff_data}/\${cf_data}]" -_EOF_ -if [ ! -z "${COOLFUNC_BOLO}" ]; then - cat >> ${XSPEC_CF_XCM} << _EOF_ - # coolfunc bolometric - set cfbolo_data \$cff_data - #puts "cfbolo_data: \${cfbolo_data}" - puts \${cfbolo_fd} "\${radius} \${cfbolo_data}" -_EOF_ -fi -cat >> ${XSPEC_CF_XCM} << _EOF_ -} - -## close opened files -close \${tpro_fd} -close \${cf_fd} -_EOF_ - -if [ ! -z "${COOLFUNC_BOLO}" ]; then - cat >> ${XSPEC_CF_XCM} << _EOF_ -# coolfunc bolometric -close \${cfbolo_fd} - -_EOF_ -fi - -cat >> ${XSPEC_CF_XCM} << _EOF_ -## exit -tclexit -_EOF_ - -## extract xcm }}} - -## invoke xspec to calc -printf "invoking XSPEC to calculate cooling function data ...\n" -# xspec - ${XSPEC_CF_XCM} -xspec - ${XSPEC_CF_XCM} > /dev/null - -## clean -# if [ -e "${XSPEC_CF_XCM}" ]; then -# rm -f ${XSPEC_CF_XCM} -# fi - -exit 0 - diff --git a/mass_profile/fit_nfwmass.sh b/mass_profile/fit_nfwmass.sh index 7cab66a..c6e8b8c 100755 --- a/mass_profile/fit_nfwmass.sh +++ b/mass_profile/fit_nfwmass.sh @@ -134,7 +134,7 @@ mv -fv ${T_dump} ${T_file_center} mv -fv fit_result.qdp ${T_file_center} # temp profile }}} -$base_path/coolfunc_calc2.sh ${T_file_center} $abund $nh $z $cfunc_file cfunc_bolo.dat +$base_path/coolfunc_calc.sh ${T_file_center} $abund $nh $z $cfunc_file cfunc_bolo.dat cfunc_file_center="coolfunc_data_center.txt" cp -f ${cfunc_file} ${cfunc_file_center} mv -fv flux_cnt_ratio.txt flux_cnt_ratio_center.txt @@ -213,7 +213,7 @@ for i in `seq 1 ${MC_TIMES}`; do printf "## ${i} / ${MC_TIMES} ##\n" printf "## `pwd -P` ##\n" - ${base_path}/coolfunc_calc2.sh ${T_file} ${abund} ${nh} ${z} ${cfunc_file} + ${base_path}/coolfunc_calc.sh ${T_file} ${abund} ${nh} ${z} ${cfunc_file} ${base_path}/${SBP_PROG} ${TMP_SBP_CFG} 2> /dev/null cat ${RES_SBPFIT} $base_path/fit_nfw_mass mass_int.dat ${z} ${nfw_rmin_kpc} 2> /dev/null diff --git a/mass_profile/fit_sbp.sh b/mass_profile/fit_sbp.sh index 666be2f..60c5fca 100755 --- a/mass_profile/fit_sbp.sh +++ b/mass_profile/fit_sbp.sh @@ -42,7 +42,7 @@ fi $base_path/fit_wang2012_model $t_data_file $t_param_file $cm_per_pixel 2> /dev/null cp wang2012_dump.qdp $T_file if [ ! -f ${cfunc_file} ]; then - $base_path/coolfunc_calc2.sh $T_file $abund $nh $z $cfunc_file + $base_path/coolfunc_calc.sh $T_file $abund $nh $z $cfunc_file fi $base_path/$PROG $sbp_cfg printf "## MODEL: ${MODEL}\n" |