159599516SKenneth E. Jansen#!/bin/bash 259599516SKenneth E. Jansen 359599516SKenneth E. Jansennargs=3 # Arguments of the script: 459599516SKenneth E. Jansen # time step 559599516SKenneth E. Jansen # number parts 659599516SKenneth E. Jansen # number of syncio files wanted 759599516SKenneth E. Jansen 859599516SKenneth E. Jansen### Function die called when there is a problem 959599516SKenneth E. Jansenfunction die() { 1059599516SKenneth E. Jansen echo -e "${1}" 1159599516SKenneth E. Jansen exit 1 1259599516SKenneth E. Jansen} 1359599516SKenneth E. Jansen 1459599516SKenneth E. Jansen 1559599516SKenneth E. Jansen### Function check_field_geombc 1659599516SKenneth E. Jansenfunction check_field_geombc() { 1759599516SKenneth E. Jansen# All the critical fields that phasta needs in geombc are listed below. Update this list if needed for your application. Do not forget to update N_geombc_fields_double etc below 1859599516SKenneth E. Jansen# The format is the following: geombc, field name, double or integer, block or header, number of integer in the header after < >. 1959599516SKenneth E. Jansen 2059599516SKenneth E. Jansen #field_fun="$@" # get all args 2159599516SKenneth E. Jansen #field_fun=$(echo $argfun | awk '{print $1}') #Name of the field 2259599516SKenneth E. Jansen #filefun=$1 2359599516SKenneth E. Jansen file_double_field_geombc_fun=$1 2459599516SKenneth E. Jansen file_integer_field_geombc_fun=$2 2559599516SKenneth E. Jansen field_fun=$3 2659599516SKenneth E. Jansen list_interior_tpblocks_fun=$4 2759599516SKenneth E. Jansen list_boundary_tpblocks_fun=$5 2859599516SKenneth E. Jansen 2959599516SKenneth E. Jansen ### Double fields first (compulsary for the converter for now) 3059599516SKenneth E. Jansen 3159599516SKenneth E. Jansen teststring="co-ordinates" 3259599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 3359599516SKenneth E. Jansen echo "geombc, $field_fun, double, block, 2;" >> $file_double_field_geombc_fun 3459599516SKenneth E. Jansen fi 3559599516SKenneth E. Jansen 3659599516SKenneth E. Jansen teststring="boundary condition array" 3759599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 3859599516SKenneth E. Jansen echo "geombc, $field_fun, double, block, 1;" >> $file_double_field_geombc_fun 3959599516SKenneth E. Jansen fi 4059599516SKenneth E. Jansen 4159599516SKenneth E. Jansen # Trying to keep the order identical. 4259599516SKenneth E. Jansen # After 'boundary condition array' (already treated above) comes usually 'nbc values', which is the last double field 4359599516SKenneth E. Jansen teststring="boundary condition array" 4459599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 4559599516SKenneth E. Jansen while read line 4659599516SKenneth E. Jansen do 4759599516SKenneth E. Jansen field=`echo $line | awk '{$1="";$2="";$3="";print $0}'` 4859599516SKenneth E. Jansen 4959599516SKenneth E. Jansen echo "geombc, nbc values $field, double, block, 8;" | sed -e 's/ */ /g' >> $file_double_field_geombc_fun # sed remove extra space 5059599516SKenneth E. Jansen done < $list_boundary_tpblocks_fun 5159599516SKenneth E. Jansen fi 5259599516SKenneth E. Jansen 5359599516SKenneth E. Jansen ### Integer fields next 5459599516SKenneth E. Jansen 5559599516SKenneth E. Jansen teststring="number of interior tpblocks" 5659599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 5759599516SKenneth E. Jansen echo "geombc, $field_fun, integer, header, 1;" >> $file_integer_field_geombc_fun 5859599516SKenneth E. Jansen fi 5959599516SKenneth E. Jansen 6059599516SKenneth E. Jansen # This will include all the interior topologies 6159599516SKenneth E. Jansen #teststring="connectivity interior" 6259599516SKenneth E. Jansen #if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 6359599516SKenneth E. Jansen # echo "geombc, "$field_fun", integer, block, 7;" >> $file_integer_field_geombc_fun 6459599516SKenneth E. Jansen #fi 6559599516SKenneth E. Jansen 6659599516SKenneth E. Jansen teststring="number of interior elements" 6759599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 6859599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 6959599516SKenneth E. Jansen fi 7059599516SKenneth E. Jansen 7159599516SKenneth E. Jansen # This will include 7259599516SKenneth E. Jansen # "number of nodes in the mesh", 7359599516SKenneth E. Jansen # "number of nodes" 7459599516SKenneth E. Jansen # "number of nodes with Dirichlet BCs" 7559599516SKenneth E. Jansen teststring="number of nodes" 7659599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 7759599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 7859599516SKenneth E. Jansen fi 7959599516SKenneth E. Jansen 8059599516SKenneth E. Jansen teststring="maximum number of element nodes" 8159599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 8259599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 8359599516SKenneth E. Jansen fi 8459599516SKenneth E. Jansen 8559599516SKenneth E. Jansen teststring="number of modes" 8659599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 8759599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 8859599516SKenneth E. Jansen fi 8959599516SKenneth E. Jansen 9059599516SKenneth E. Jansen teststring="bc mapping array" 9159599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 9259599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, block, 1;" >> $file_integer_field_geombc_fun 9359599516SKenneth E. Jansen fi 9459599516SKenneth E. Jansen 9559599516SKenneth E. Jansen teststring="bc codes array" 9659599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 9759599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, block, 1;" >> $file_integer_field_geombc_fun 9859599516SKenneth E. Jansen fi 9959599516SKenneth E. Jansen 10059599516SKenneth E. Jansen teststring="number of boundary tpblocks" 10159599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 10259599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 10359599516SKenneth E. Jansen fi 10459599516SKenneth E. Jansen 10559599516SKenneth E. Jansen #teststring="connectivity boundary" 10659599516SKenneth E. Jansen #if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 10759599516SKenneth E. Jansen # echo "geombc, "$field_fun", integer, block, 8;" >> $file_integer_field_geombc_fun 10859599516SKenneth E. Jansen #fi 10959599516SKenneth E. Jansen 11059599516SKenneth E. Jansen #teststring="nbc codes" 11159599516SKenneth E. Jansen #if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 11259599516SKenneth E. Jansen # echo "geombc, "$field_fun", integer, block, 8;" >> $file_integer_field_geombc_fun 11359599516SKenneth E. Jansen #fi 11459599516SKenneth E. Jansen 11559599516SKenneth E. Jansen teststring="number of boundary elements" 11659599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 11759599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 11859599516SKenneth E. Jansen fi 11959599516SKenneth E. Jansen 12059599516SKenneth E. Jansen teststring="size of ilwork array" 12159599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 12259599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 12359599516SKenneth E. Jansen fi 12459599516SKenneth E. Jansen 12559599516SKenneth E. Jansen teststring="ilwork" 12659599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 12759599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, block, 1;" >> $file_integer_field_geombc_fun 12859599516SKenneth E. Jansen fi 12959599516SKenneth E. Jansen 13059599516SKenneth E. Jansen teststring="periodic masters array" 13159599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 13259599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, block, 1;" >> $file_integer_field_geombc_fun 13359599516SKenneth E. Jansen fi 13459599516SKenneth E. Jansen 13559599516SKenneth E. Jansen # NSpre and others produces a field named "number of shapefunctions soved on processor" 136*218c98ffSMichel Rasquin # Phasta-SyncIO requires now a field named "number of shape functions@partID" read from readnblk.f. 137*218c98ffSMichel Rasquin # Therefore, rename this field accordingly here 138*218c98ffSMichel Rasquin # Beware: in some version of NSpre, the historic spelling mistake "soved" has been replaced by "solved" 139*218c98ffSMichel Rasquin teststring1="number of shapefunctions soved on processor" 140*218c98ffSMichel Rasquin teststring2="number of shapefunctions solved on processor" 141*218c98ffSMichel Rasquin if [ "${field_fun:0:${#teststring1}}" == "$teststring1" ] || [ "${field_fun:0:${#teststring2}}" == "$teststring2" ]; then 14259599516SKenneth E. Jansen echo "geombc, number of shape functions, integer, header, 1;" >> $file_integer_field_geombc_fun 143*218c98ffSMichel Rasquin echo "INFO: 'number of shapefunctions soved on processor' is renamed 'number of shape functions' for readnblk.f" 14459599516SKenneth E. Jansen fi 14559599516SKenneth E. Jansen 14659599516SKenneth E. Jansen # Trying to keep the order identical. 14759599516SKenneth E. Jansen # For phParAdapt, after 'number of nodes in the mesh' (already treated above) comes usually 'connectivity interior'. 148*218c98ffSMichel Rasquin # But there is no such field generated with NSpre so we use instead "number of shapefunctions soved on processor" which is common to both. 149*218c98ffSMichel Rasquin # Moreover, in readnblk.f, the connectivity is read just after "number of shapefunctions soved on processor" so this ordering is coherent. 15059599516SKenneth E. Jansen # NOTE that we also add a new field called 'total number of interior tpblocks'. This field will be saved in the new syncIO geombc files. 15159599516SKenneth E. Jansen #teststring="number of nodes in the mesh" 152*218c98ffSMichel Rasquin teststring1="number of shapefunctions soved on processor" 153*218c98ffSMichel Rasquin teststring2="number of shapefunctions solved on processor" 154*218c98ffSMichel Rasquin if [ "${field_fun:0:${#teststring1}}" == "$teststring1" ] || [ "${field_fun:0:${#teststring2}}" == "$teststring2" ]; then 15559599516SKenneth E. Jansen 15659599516SKenneth E. Jansen echo "geombc, total number of interior tpblocks, integer, header, 1;" >> $file_integer_field_geombc_fun 157*218c98ffSMichel Rasquin echo "INFO: a new field called 'total number of interior tpblocks' will be added in the new geombc files" 15859599516SKenneth E. Jansen 15959599516SKenneth E. Jansen while read line 16059599516SKenneth E. Jansen do 16159599516SKenneth E. Jansen field=`echo $line | awk '{$1="";$2="";$3="";print $0}'` 16259599516SKenneth E. Jansen echo "geombc, connectivity interior $field, integer, block, 7;" | sed -e 's/ */ /g' >> $file_integer_field_geombc_fun # sed remove extra space 16359599516SKenneth E. Jansen done < $list_interior_tpblocks_fun 16459599516SKenneth E. Jansen fi 16559599516SKenneth E. Jansen 16659599516SKenneth E. Jansen # Trying to keep the order identical. 16759599516SKenneth E. Jansen # After 'number of nodes in the mesh' (already treated above) comes usually 'connectivity boundary' and 'nbc code' 16859599516SKenneth E. Jansen # NOTE that we also add a new field called 'total number of boundary tpblocks'. This field will be saved in the new syncIO geombc files. 16959599516SKenneth E. Jansen teststring="number of boundary tpblocks" 17059599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 17159599516SKenneth E. Jansen 17259599516SKenneth E. Jansen echo "geombc, total number of boundary tpblocks, integer, header, 1;" >> $file_integer_field_geombc_fun 173*218c98ffSMichel Rasquin echo "INFO: a new field called 'total number of boundary tpblocks' will be added in the new geombc files" 17459599516SKenneth E. Jansen 17559599516SKenneth E. Jansen while read line 17659599516SKenneth E. Jansen do 17759599516SKenneth E. Jansen field=`echo $line | awk '{$1="";$2="";$3="";print $0}'` 17859599516SKenneth E. Jansen 17959599516SKenneth E. Jansen echo "geombc, connectivity boundary $field, integer, block, 8;" | sed -e 's/ */ /g' >> $file_integer_field_geombc_fun # sed remove extra space 18059599516SKenneth E. Jansen echo "geombc, nbc codes $field, integer, block, 8;" | sed -e 's/ */ /g' >> $file_integer_field_geombc_fun # sed remove extra space 18159599516SKenneth E. Jansen done < $list_boundary_tpblocks_fun 18259599516SKenneth E. Jansen fi 18359599516SKenneth E. Jansen} 18459599516SKenneth E. Jansen 18559599516SKenneth E. Jansen 18659599516SKenneth E. Jansen### Function check_field_restart 18759599516SKenneth E. Jansenfunction check_field_restart() { 18859599516SKenneth E. Jansen# All the critical fields that phasta needs in restart are listed below. Update this list if needed for your application. 18959599516SKenneth E. Jansen# The format is the following: restart, field name, double or integer, block or header, number of integer in the header after < >. 19059599516SKenneth E. Jansen 19159599516SKenneth E. Jansen #field_fun="$@" # get all args 19259599516SKenneth E. Jansen #field_fun=$(echo $argfun | awk '{print $1}') #Name of the field 19359599516SKenneth E. Jansen #filefun=$1 19459599516SKenneth E. Jansen file_double_field_restart_fun=$1 19559599516SKenneth E. Jansen file_integer_field_restart_fun=$2 19659599516SKenneth E. Jansen field_fun=$3 19759599516SKenneth E. Jansen 19859599516SKenneth E. Jansen ### Double fields first (compulsary for the converter for now) 19959599516SKenneth E. Jansen 20059599516SKenneth E. Jansen teststring="solution" 20159599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 20259599516SKenneth E. Jansen echo "restart, $field_fun, double, block, 3;" >> $file_double_field_restart_fun 20359599516SKenneth E. Jansen fi 20459599516SKenneth E. Jansen 20559599516SKenneth E. Jansen ### Integer fields next 20659599516SKenneth E. Jansen 20759599516SKenneth E. Jansen teststring="byteorder magic number" 20859599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 20959599516SKenneth E. Jansen echo "restart, $field_fun, integer, block, 1;" >> $file_integer_field_restart_fun 21059599516SKenneth E. Jansen fi 21159599516SKenneth E. Jansen 21259599516SKenneth E. Jansen #teststring="number of modes" # Already in the geombc files and read by phasta from the geombc files 21359599516SKenneth E. Jansen #if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 21459599516SKenneth E. Jansen # echo "restart, $field_fun, integer, header, 1;" >> $file_integer_field_restart_fun 21559599516SKenneth E. Jansen #fi 21659599516SKenneth E. Jansen 21759599516SKenneth E. Jansen #teststring="number of variables" # Was required for the converter. Info now read from the solution field 21859599516SKenneth E. Jansen #if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 21959599516SKenneth E. Jansen # echo "restart, $field_fun, integer, header, 1;" >> $file_integer_field_restart_fun 22059599516SKenneth E. Jansen #fi 22159599516SKenneth E. Jansen 22259599516SKenneth E. Jansen} 22359599516SKenneth E. Jansen 22459599516SKenneth E. Jansen 22559599516SKenneth E. Jansen##################################################################### 22659599516SKenneth E. Jansen### End of functions - Beginning of the script 22759599516SKenneth E. Jansen##################################################################### 22859599516SKenneth E. Jansen 22959599516SKenneth E. Jansen 23059599516SKenneth E. Jansen### Check that user entered proper number of args 23159599516SKenneth E. Jansenif [ "${#}" -lt "$nargs" ] || [ "$1" == "-h" ]; then 23259599516SKenneth 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" 23359599516SKenneth E. Jansenfi 23459599516SKenneth E. Jansen 23559599516SKenneth E. Jansen 23659599516SKenneth E. Jansen### Read arguments of the script 23759599516SKenneth E. JansenN_steps=$1 23859599516SKenneth E. JansenN_parts=$2 23959599516SKenneth E. JansenN_files=$3 24059599516SKenneth E. Jansen 24159599516SKenneth E. Jansenecho "Time step: $N_steps" 24259599516SKenneth E. Jansenecho "Number of parts: $N_parts" 24359599516SKenneth E. Jansenecho "Number of SyncIO files: $N_files" 24459599516SKenneth E. Jansenecho "" 24559599516SKenneth E. Jansen 24659599516SKenneth E. Jansendir=$N_parts-procs_case 24759599516SKenneth E. Jansen 24859599516SKenneth E. Jansen 24959599516SKenneth E. Jansen### Do a couple of sanity check on the input parameters of the script 25059599516SKenneth E. Jansenif [ ! -d $dir ]; then 25159599516SKenneth E. Jansen die "$N_parts-procs_case does not exist\n Aborting" 25259599516SKenneth E. Jansenfi 25359599516SKenneth E. Jansen 25459599516SKenneth E. Jansenif [ ! -e $dir/restart.$N_steps.1 ]; then 25559599516SKenneth E. Jansen die "Time step $N_steps does not exist in $N_parts-procs_case\n Aborting" 25659599516SKenneth E. Jansenfi 25759599516SKenneth E. Jansen 25859599516SKenneth E. Jansenresmodulo=$(($N_parts % $N_files)) 25959599516SKenneth E. Jansenif [ "$resmodulo" -ne "0" ]; then 26059599516SKenneth E. Jansen die "The number of SyncIO files requested $N_files is not a multiple of the number of parts $N_parts\n Aborting" 26159599516SKenneth E. Jansenfi 26259599516SKenneth E. Jansen 26359599516SKenneth E. Jansen 26459599516SKenneth E. Jansen### First, count the interior and boundary topology blocks 26559599516SKenneth E. Jansenlist_interior_tpblocks=list_interior_tpblocks.dat 26659599516SKenneth E. Jansengrep -aH ' : < ' $dir/geombc.dat.* | grep 'connectivity interior' | awk -F : '{print $1,$2}' | awk '{$1=""; print $0}' | sort | uniq -c > $list_interior_tpblocks 26759599516SKenneth E. Janseninterior_tpblocks=`cat $list_interior_tpblocks | wc -l` 26859599516SKenneth E. Jansenecho "There are $interior_tpblocks different interior tp blocks in all the geombc files:" 26959599516SKenneth E. Jansencat $list_interior_tpblocks 27059599516SKenneth E. Jansenecho "" 27159599516SKenneth E. Jansen 27259599516SKenneth E. Jansenlist_boundary_tpblocks=list_boundary_tpblocks.dat 27359599516SKenneth E. Jansengrep -aH ' : < ' $dir/geombc.dat.* | grep 'connectivity boundary' | awk -F : '{print $1,$2}' | awk '{$1=""; print $0}' | sort | uniq -c > $list_boundary_tpblocks 27459599516SKenneth E. Jansenboundary_tpblocks=`cat $list_boundary_tpblocks | wc -l` 27559599516SKenneth E. Jansenecho "There are $boundary_tpblocks different boundary tp blocks in all the geombc files:" 27659599516SKenneth E. Jansencat $list_boundary_tpblocks 27759599516SKenneth E. Jansenecho "" 27859599516SKenneth E. Jansen 27959599516SKenneth E. Jansen 28059599516SKenneth E. Jansen### Grep all the fields from geombc.dat.1 (posix file) 28159599516SKenneth E. Jansenfile_grep_geombc=grep_geombc_posix.dat 28259599516SKenneth E. Jansengrep -a ' : < ' $dir/geombc.dat.1 > $file_grep_geombc 28359599516SKenneth E. Jansen 28459599516SKenneth E. Jansen 28559599516SKenneth E. Jansen### Get only the fields name from geombc.dat.1 and remove any extra unwanted space 28659599516SKenneth E. Jansenfile_field_geombc=field_geombc_posix.dat 28759599516SKenneth E. Jansencat $file_grep_geombc | awk -F : '{print $1}' | sed -e 's/ */ /g' | sed -e 's/^[ \t]*//g' | sed -e 's/[ \t]*$//g' > $file_field_geombc 28859599516SKenneth E. Jansen 28959599516SKenneth E. Jansen 29059599516SKenneth E. Jansen### Now check which fields are critical for phasta and save the double fields in $file_double_field_geombc and the integer fields in $file_integer_field_geombc for future use 29159599516SKenneth E. Jansenfile_double_field_geombc=file_double_field_geombc.dat 29259599516SKenneth E. Jansenif [ -e $file_double_field_geombc ]; then 29359599516SKenneth E. Jansen rm $file_double_field_geombc 29459599516SKenneth E. Jansenfi 29559599516SKenneth E. Jansen 29659599516SKenneth E. Jansenfile_integer_field_geombc=file_integer_field_geombc.dat 29759599516SKenneth E. Jansenif [ -e $file_integer_field_geombc ]; then 29859599516SKenneth E. Jansen rm $file_integer_field_geombc 29959599516SKenneth E. Jansenfi 30059599516SKenneth E. Jansen 30159599516SKenneth E. Jansenwhile read line 30259599516SKenneth E. Jansendo 30359599516SKenneth E. Jansen field=`echo $line` 30459599516SKenneth E. Jansen check_field_geombc "$file_double_field_geombc" "$file_integer_field_geombc" "$field" "$list_interior_tpblocks" "$list_boundary_tpblocks" 30559599516SKenneth E. Jansendone < $file_field_geombc 30659599516SKenneth E. Jansen 307*218c98ffSMichel Rasquin### Double check that the topologies have been correctly found 308*218c98ffSMichel Rasquininterior_tpblocks2=`grep 'connectivity interior' $file_integer_field_geombc | wc -l` 309*218c98ffSMichel Rasquinif [ "x$interior_tpblocks" != "x$interior_tpblocks2" ]; then 310*218c98ffSMichel Rasquin echo "" 311*218c98ffSMichel Rasquin echo "ERROR: Missing connectivity interior, probably due to a spelling issue ($interior_tpblocks2 != $interior_tpblocks)" 312*218c98ffSMichel Rasquin echo "ERROR: Check that \"number of shapefunctions soved on processor\" or \"number of shapefunctions solved on processor\"" 313*218c98ffSMichel Rasquin echo "ERROR: is present in your geombc files" 314*218c98ffSMichel Rasquin echo "" 315*218c98ffSMichel Rasquinfi 316*218c98ffSMichel Rasquin 317*218c98ffSMichel Rasquinboundary_tpblocks2=`grep 'connectivity boundary' $file_integer_field_geombc | wc -l` 318*218c98ffSMichel Rasquinif [ "x$boundary_tpblocks" != "x$boundary_tpblocks2" ]; then 319*218c98ffSMichel Rasquin echo "" 320*218c98ffSMichel Rasquin echo "ERROR: Missing connectivity boundary ($boundary_tpblocks2 != $boundary_tpblocks)" 321*218c98ffSMichel Rasquin echo "" 322*218c98ffSMichel Rasquinfi 32359599516SKenneth E. Jansen 32459599516SKenneth E. Jansen### Grep all the fields from restart.##.1 (posix file) 32559599516SKenneth E. Jansenfile_grep_restart=grep_restart_posix.dat 32659599516SKenneth E. Jansengrep -a ' : < ' $dir/restart.$N_steps.1 > $file_grep_restart 32759599516SKenneth E. Jansen 32859599516SKenneth E. Jansen 32959599516SKenneth E. Jansen### Get only the fields name from restart.##.1 and remove any extra unwanted space 33059599516SKenneth E. Jansenfile_field_restart=field_restart_posix.dat 33159599516SKenneth E. Jansencat $file_grep_restart | awk -F : '{print $1}' | sed -e 's/ */ /g' | sed -e 's/^[ \t]*//g' | sed -e 's/[ \t]*$//g' > $file_field_restart 33259599516SKenneth E. Jansen 33359599516SKenneth E. Jansen 33459599516SKenneth E. Jansen### Now check which fields are critical for phasta and save the double fields in $file_double_field_geombc and the integer fields in $file_integer_field_geombc for future use 33559599516SKenneth E. Jansenfile_double_field_restart=file_double_field_restart.dat 33659599516SKenneth E. Jansenif [ -e $file_double_field_restart ]; then 33759599516SKenneth E. Jansen rm $file_double_field_restart 33859599516SKenneth E. Jansenfi 33959599516SKenneth E. Jansen 34059599516SKenneth E. Jansenfile_integer_field_restart=file_integer_field_restart.dat 34159599516SKenneth E. Jansenif [ -e $file_integer_field_restart ]; then 34259599516SKenneth E. Jansen rm $file_integer_field_restart 34359599516SKenneth E. Jansenfi 34459599516SKenneth E. Jansen 34559599516SKenneth E. Jansenwhile read line 34659599516SKenneth E. Jansendo 34759599516SKenneth E. Jansen field=`echo $line` 34859599516SKenneth E. Jansen check_field_restart "$file_double_field_restart" "$file_integer_field_restart" "$field" 34959599516SKenneth E. Jansendone < $file_field_restart 35059599516SKenneth E. Jansen 35159599516SKenneth E. Jansenecho "" 35259599516SKenneth E. Jansen 35359599516SKenneth E. Jansen 35459599516SKenneth E. Jansen### Start to write now IO.O2N.input 35559599516SKenneth E. Jansenfile=IO.O2N.input 35659599516SKenneth E. Jansenif [ -e $file ]; then 35759599516SKenneth E. Jansen rm $file 35859599516SKenneth E. Jansenfi 35959599516SKenneth E. Jansen 36059599516SKenneth E. JansenN_geombc_fields_double=`cat $file_double_field_geombc | wc -l` 36159599516SKenneth E. JansenN_geombc_fields_integer=`cat $file_integer_field_geombc | wc -l` 36259599516SKenneth E. JansenN_restart_fields_double=`cat $file_double_field_restart | wc -l` 36359599516SKenneth E. JansenN_restart_fields_integer=`cat $file_integer_field_restart | wc -l` 36459599516SKenneth E. Jansen 36559599516SKenneth E. Jansenecho "N-geombc-fields-double: $N_geombc_fields_double;" >> $file 36659599516SKenneth E. Jansenecho "N-geombc-fields-integer: $N_geombc_fields_integer;" >> $file 36759599516SKenneth E. Jansenecho "N-restart-fields-double: $N_restart_fields_double;" >> $file 36859599516SKenneth E. Jansenecho "N-restart-fields-integer: $N_restart_fields_integer;" >> $file 36959599516SKenneth E. Jansenecho "N-steps: $N_steps;" >> $file 37059599516SKenneth E. Jansenecho "N-parts: $N_parts;" >> $file 37159599516SKenneth E. Jansenecho "N-files: $N_files;" >> $file 37259599516SKenneth E. Jansen 37359599516SKenneth E. Jansen# The converter expects first the geombc double in IO.O2N.input, then geombc integer, then restart double, then restart integer. 37459599516SKenneth E. Jansencat $file_double_field_geombc >> $file 37559599516SKenneth E. Jansencat $file_integer_field_geombc >> $file 37659599516SKenneth E. Jansencat $file_double_field_restart >> $file 37759599516SKenneth E. Jansencat $file_integer_field_restart >> $file 37859599516SKenneth E. Jansen 37959599516SKenneth E. Jansen### Some cleaning 38059599516SKenneth E. Jansenrm $list_boundary_tpblocks 38159599516SKenneth E. Jansenrm $list_interior_tpblocks 38259599516SKenneth E. Jansenrm $file_grep_geombc 38359599516SKenneth E. Jansenrm $file_grep_restart 38459599516SKenneth E. Jansenrm $file_field_geombc 38559599516SKenneth E. Jansenrm $file_field_restart 38659599516SKenneth E. Jansenrm $file_double_field_geombc 38759599516SKenneth E. Jansenrm $file_integer_field_geombc 38859599516SKenneth E. Jansenrm $file_double_field_restart 38959599516SKenneth E. Jansenrm $file_integer_field_restart 39059599516SKenneth E. Jansen 39159599516SKenneth E. Jansenecho "$file generated for the converter" 39259599516SKenneth E. Jansen 393