cloudy-agn/scripts/file/split_grid_output_hden_phi.sh
2017-08-07 21:35:13 -04:00

68 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
script_dir=$( cd $(dirname $0) ; pwd -P |sed 's@^\(.*\)/scripts.*@\1/scripts@')
basedir=`pwd`
echo "Separating grid by hden and phi(H)."
outputdir="gridoutput"
mkdir -p $outputdir; cd $outputdir
cloudy_output="../$1"
echo scanning cloudy output file $1
grid_delimits=`grep -n 'GRID_DELIMIT' $cloudy_output|sed 's#^\([0-9]*\):.*$#\1 #'`
echo $( echo $grid_delimits|wc -w|sed 's#^[^0-9]*\([0-9]*\)[^0-9]*$#\1#' ) grid delimiters found.
metafile=tmp.out.meta
hdenfile=tmp.out.hden_list
phifile=tmp.out.phi_list
grid_number=0
interval_origin=0
echo "Separating grids."
for line_number in $grid_delimits; do
if [[ $interval_origin == 0 ]]; then
sed -n 1,${line_number}p $cloudy_output > $metafile
interval_origin=$line_number
echo Metafile collected.
continue
fi
tmpfile=tmp.out.$grid_number
touch $tmpfile
sed -n ${interval_origin},${line_number}p $cloudy_output > $tmpfile
interval_origin=$line_number
(( grid_number++ ))
done
echo "Output organized by linear index."
params_start=`grep -n "MPI grid mode " $metafile|cut -d':' -f1`
endline=`wc -l $metafile|sed 's#^[^0-9]*\([0-9]*\)[^0-9]*$#\1#'`
echo Reading parameters from lines $params_start to $endline
sed -n ${params_start},${endline}p $metafile|grep "HDEN="|sed 's#^[^0-9]*\([0-9.]*\) LOG.*$#\1#' > ${hdenfile}
sed -n ${params_start},${endline}p $metafile|grep "phi(h) "|sed 's#^[^0-9]*\([0-9.]*\) LOG.*$#\1#' > ${phifile}
num_params=`wc -l ${hdenfile}|sed 's#^[^0-9]*\([0-9]*\)[^0-9]*$#\1#'`
# Note that this program assumes for each hden, phi was varied
# over its domain. Come to think of it, however, the program should
# remain consistent, either way.
files_processed=0
for tmpfile in `echo tmp.out.[0-9]*`; do
linear_index=`echo $tmpfile|sed 's#^[^0-9]*\([0-9]*\)[^0-9]*$#\1#'`
(( linear_index++ ))
hden=`sed -n ${linear_index}p ${hdenfile}`
phi=`sed -n ${linear_index}p ${phifile}`
cp $tmpfile ${hden}_${phi}
(( files_processed++ ))
done
echo Output organized by grid parameters.
echo $files_processed grid events were processed. This should be 29 x 29.
${script_dir}/util/cleantmp.sh
cd ${basedir}