diff options
Diffstat (limited to 'mass_profile/coolfunc_calc.sh')
-rwxr-xr-x | mass_profile/coolfunc_calc.sh | 102 |
1 files changed, 59 insertions, 43 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 - |