1*59599516SKenneth E. Jansen#!/bin/bash 2*59599516SKenneth E. Jansen 3*59599516SKenneth E. Jansennargs=3 # Arguments of the script: 4*59599516SKenneth E. Jansen # time step 5*59599516SKenneth E. Jansen # number parts 6*59599516SKenneth E. Jansen # number of syncio files wanted 7*59599516SKenneth E. Jansen 8*59599516SKenneth E. Jansen### Function die called when there is a problem 9*59599516SKenneth E. Jansenfunction die() { 10*59599516SKenneth E. Jansen echo -e "${1}" 11*59599516SKenneth E. Jansen exit 1 12*59599516SKenneth E. Jansen} 13*59599516SKenneth E. Jansen 14*59599516SKenneth E. Jansen 15*59599516SKenneth E. Jansen##################################################################### 16*59599516SKenneth E. Jansen### End of functions - Beginning of the script 17*59599516SKenneth E. Jansen##################################################################### 18*59599516SKenneth E. Jansen 19*59599516SKenneth E. Jansen 20*59599516SKenneth E. Jansen### Check that user entered proper number of args 21*59599516SKenneth E. Jansenif [ "${#}" -lt "$nargs" ] || [ "$1" == "-h" ]; then 22*59599516SKenneth E. Jansen die "\n Check usage: \n $0\n\n \$1: <time step>\n \$2: <number of parts>\n \$3: <number of SyncIO files>\n\n" 23*59599516SKenneth E. Jansenfi 24*59599516SKenneth E. Jansen 25*59599516SKenneth E. Jansen 26*59599516SKenneth E. Jansen### Read arguments of the script 27*59599516SKenneth E. JansenN_steps=$1 28*59599516SKenneth E. JansenN_parts=$2 29*59599516SKenneth E. JansenN_files=$3 30*59599516SKenneth E. Jansen 31*59599516SKenneth E. Jansenecho "Time step: $N_steps" 32*59599516SKenneth E. Jansenecho "Number of parts: $N_parts" 33*59599516SKenneth E. Jansenecho "Number of SyncIO files: $N_files" 34*59599516SKenneth E. Jansenecho "" 35*59599516SKenneth E. Jansen 36*59599516SKenneth E. Jansendir=$N_parts-procs_case 37*59599516SKenneth E. Jansen 38*59599516SKenneth E. Jansen 39*59599516SKenneth E. Jansen### Do a couple of sanity check on the input parameters of the script 40*59599516SKenneth E. Jansenif [ ! -d $dir ]; then 41*59599516SKenneth E. Jansen die "$N_parts-procs_case does not exist\n Aborting" 42*59599516SKenneth E. Jansenfi 43*59599516SKenneth E. Jansen 44*59599516SKenneth E. Jansenif [ ! -e $dir/restart-dat.$N_steps.1 ]; then 45*59599516SKenneth E. Jansen die "Time step $N_steps does not exist in $N_parts-procs_case\n Aborting" 46*59599516SKenneth E. Jansenfi 47*59599516SKenneth E. Jansen 48*59599516SKenneth E. Jansennsynciofiles=`ls $dir/restart-dat.$N_steps.* | wc -l` 49*59599516SKenneth E. Jansenif [ "$nsynciofiles" -ne "$N_files" ]; then 50*59599516SKenneth E. Jansen die "The number of SyncIO files requested does not match with what is found in the procs_case directory: $nsynciofiles - $N_files" 51*59599516SKenneth E. Jansenfi 52*59599516SKenneth E. Jansen 53*59599516SKenneth E. Jansenresmodulo=$(($N_parts % $N_files)) 54*59599516SKenneth E. Jansenif [ "$resmodulo" -ne "0" ]; then 55*59599516SKenneth E. Jansen die "The number of SyncIO files requested $N_files is not a multiple of the number of parts $N_parts\n Aborting" 56*59599516SKenneth E. Jansenfi 57*59599516SKenneth E. Jansen 58*59599516SKenneth E. Jansen 59*59599516SKenneth E. Jansen### First, count the number of fields (blocks) in the restart files and list them 60*59599516SKenneth E. Jansenlist_restart_fields=list_restart_fields.dat 61*59599516SKenneth E. Jansengrep -a ' : < ' $dir/restart-dat.$N_steps.1 | grep -v '< 0 >' | awk -F @ '{print $1}' | uniq -c > $list_restart_fields 62*59599516SKenneth E. Jansenrestart_fields=`cat $list_restart_fields | wc -l` 63*59599516SKenneth E. Jansenecho "There are $restart_fields different block fields in the restart files:" 64*59599516SKenneth E. Jansencat $list_restart_fields 65*59599516SKenneth E. Jansenecho "" 66*59599516SKenneth E. Jansen 67*59599516SKenneth E. Jansen### Start to write now IO.N2O.input 68*59599516SKenneth E. Jansenfile=IO.N2O.input 69*59599516SKenneth E. Jansenif [ -e $file ]; then 70*59599516SKenneth E. Jansen rm $file 71*59599516SKenneth E. Jansenfi 72*59599516SKenneth E. Jansen 73*59599516SKenneth E. Jansen# By default, the geombc files already exist under the posix format so no need to deconvert them. 74*59599516SKenneth E. Jansen# Focuss only on the restart files, which should by default only contain double blocks. 75*59599516SKenneth E. Jansen# In what follows, any single header with no block (characterized by '< 0 >') are also ignored. 76*59599516SKenneth E. JansenN_geombc_fields_double=0 77*59599516SKenneth E. JansenN_geombc_fields_integer=0 78*59599516SKenneth E. JansenN_restart_fields_double=$restart_fields 79*59599516SKenneth E. JansenN_restart_fields_integer=0 80*59599516SKenneth E. Jansen 81*59599516SKenneth E. Jansenecho "N-geombc-fields-double: $N_geombc_fields_double;" >> $file 82*59599516SKenneth E. Jansenecho "N-geombc-fields-integer: $N_geombc_fields_integer;" >> $file 83*59599516SKenneth E. Jansenecho "N-restart-fields-double: $N_restart_fields_double;" >> $file 84*59599516SKenneth E. Jansenecho "N-restart-fields-integer: $N_restart_fields_integer;" >> $file 85*59599516SKenneth E. Jansenecho "N-steps: $N_steps;" >> $file 86*59599516SKenneth E. Jansenecho "N-parts: $N_parts;" >> $file 87*59599516SKenneth E. Jansenecho "N-files: $N_files;" >> $file 88*59599516SKenneth E. Jansen 89*59599516SKenneth E. Jansen# Now add all the fields found in the restart files. 90*59599516SKenneth E. Jansen# Asumption always verified so far: all the fields in the restart files are double and their header includes 3 integer. 91*59599516SKenneth E. Jansen# If this is not the case any more, then more complex verifications should be added like in the other script. 92*59599516SKenneth E. Jansen 93*59599516SKenneth E. Jansenecho "By default, they will all be specified in $file in order to be deconverted but this can be manually modified" 94*59599516SKenneth E. Jansenecho "This script also assumes that all blocks listed are double" 95*59599516SKenneth E. Jansenwhile read line 96*59599516SKenneth E. Jansendo 97*59599516SKenneth E. Jansen field=`echo $line | awk '{$1="";print $0}' | sed -e 's/ */ /g' | sed -e 's/^[ \t]*//g' | sed -e 's/[ \t]*$//g'` 98*59599516SKenneth E. Jansen echo "restart, $field, double, block, 3;" >> $file 99*59599516SKenneth E. Jansendone < $list_restart_fields 100*59599516SKenneth E. Jansen 101*59599516SKenneth E. Jansen### Some cleaning 102*59599516SKenneth E. Jansenrm $list_restart_fields 103*59599516SKenneth E. Jansen 104*59599516SKenneth E. Jansenecho "$file generated for the converter" 105*59599516SKenneth E. Jansen 106