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### Function check_field_geombc 16*59599516SKenneth E. Jansenfunction check_field_geombc() { 17*59599516SKenneth 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 18*59599516SKenneth E. Jansen# The format is the following: geombc, field name, double or integer, block or header, number of integer in the header after < >. 19*59599516SKenneth E. Jansen 20*59599516SKenneth E. Jansen #field_fun="$@" # get all args 21*59599516SKenneth E. Jansen #field_fun=$(echo $argfun | awk '{print $1}') #Name of the field 22*59599516SKenneth E. Jansen #filefun=$1 23*59599516SKenneth E. Jansen file_double_field_geombc_fun=$1 24*59599516SKenneth E. Jansen file_integer_field_geombc_fun=$2 25*59599516SKenneth E. Jansen field_fun=$3 26*59599516SKenneth E. Jansen list_interior_tpblocks_fun=$4 27*59599516SKenneth E. Jansen list_boundary_tpblocks_fun=$5 28*59599516SKenneth E. Jansen 29*59599516SKenneth E. Jansen ### Double fields first (compulsary for the converter for now) 30*59599516SKenneth E. Jansen 31*59599516SKenneth E. Jansen teststring="co-ordinates" 32*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 33*59599516SKenneth E. Jansen echo "geombc, $field_fun, double, block, 2;" >> $file_double_field_geombc_fun 34*59599516SKenneth E. Jansen fi 35*59599516SKenneth E. Jansen 36*59599516SKenneth E. Jansen teststring="boundary condition array" 37*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 38*59599516SKenneth E. Jansen echo "geombc, $field_fun, double, block, 1;" >> $file_double_field_geombc_fun 39*59599516SKenneth E. Jansen fi 40*59599516SKenneth E. Jansen 41*59599516SKenneth E. Jansen # Trying to keep the order identical. 42*59599516SKenneth E. Jansen # After 'boundary condition array' (already treated above) comes usually 'nbc values', which is the last double field 43*59599516SKenneth E. Jansen teststring="boundary condition array" 44*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 45*59599516SKenneth E. Jansen while read line 46*59599516SKenneth E. Jansen do 47*59599516SKenneth E. Jansen field=`echo $line | awk '{$1="";$2="";$3="";print $0}'` 48*59599516SKenneth E. Jansen 49*59599516SKenneth E. Jansen echo "geombc, nbc values $field, double, block, 8;" | sed -e 's/ */ /g' >> $file_double_field_geombc_fun # sed remove extra space 50*59599516SKenneth E. Jansen done < $list_boundary_tpblocks_fun 51*59599516SKenneth E. Jansen fi 52*59599516SKenneth E. Jansen 53*59599516SKenneth E. Jansen ### Integer fields next 54*59599516SKenneth E. Jansen 55*59599516SKenneth E. Jansen teststring="number of interior tpblocks" 56*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 57*59599516SKenneth E. Jansen echo "geombc, $field_fun, integer, header, 1;" >> $file_integer_field_geombc_fun 58*59599516SKenneth E. Jansen fi 59*59599516SKenneth E. Jansen 60*59599516SKenneth E. Jansen # This will include all the interior topologies 61*59599516SKenneth E. Jansen #teststring="connectivity interior" 62*59599516SKenneth E. Jansen #if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 63*59599516SKenneth E. Jansen # echo "geombc, "$field_fun", integer, block, 7;" >> $file_integer_field_geombc_fun 64*59599516SKenneth E. Jansen #fi 65*59599516SKenneth E. Jansen 66*59599516SKenneth E. Jansen teststring="number of interior elements" 67*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 68*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 69*59599516SKenneth E. Jansen fi 70*59599516SKenneth E. Jansen 71*59599516SKenneth E. Jansen # This will include 72*59599516SKenneth E. Jansen # "number of nodes in the mesh", 73*59599516SKenneth E. Jansen # "number of nodes" 74*59599516SKenneth E. Jansen # "number of nodes with Dirichlet BCs" 75*59599516SKenneth E. Jansen teststring="number of nodes" 76*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 77*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 78*59599516SKenneth E. Jansen fi 79*59599516SKenneth E. Jansen 80*59599516SKenneth E. Jansen teststring="maximum number of element nodes" 81*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 82*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 83*59599516SKenneth E. Jansen fi 84*59599516SKenneth E. Jansen 85*59599516SKenneth E. Jansen teststring="number of modes" 86*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 87*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 88*59599516SKenneth E. Jansen fi 89*59599516SKenneth E. Jansen 90*59599516SKenneth E. Jansen teststring="bc mapping array" 91*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 92*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, block, 1;" >> $file_integer_field_geombc_fun 93*59599516SKenneth E. Jansen fi 94*59599516SKenneth E. Jansen 95*59599516SKenneth E. Jansen teststring="bc codes array" 96*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 97*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, block, 1;" >> $file_integer_field_geombc_fun 98*59599516SKenneth E. Jansen fi 99*59599516SKenneth E. Jansen 100*59599516SKenneth E. Jansen teststring="number of boundary tpblocks" 101*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 102*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 103*59599516SKenneth E. Jansen fi 104*59599516SKenneth E. Jansen 105*59599516SKenneth E. Jansen #teststring="connectivity boundary" 106*59599516SKenneth E. Jansen #if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 107*59599516SKenneth E. Jansen # echo "geombc, "$field_fun", integer, block, 8;" >> $file_integer_field_geombc_fun 108*59599516SKenneth E. Jansen #fi 109*59599516SKenneth E. Jansen 110*59599516SKenneth E. Jansen #teststring="nbc codes" 111*59599516SKenneth E. Jansen #if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 112*59599516SKenneth E. Jansen # echo "geombc, "$field_fun", integer, block, 8;" >> $file_integer_field_geombc_fun 113*59599516SKenneth E. Jansen #fi 114*59599516SKenneth E. Jansen 115*59599516SKenneth E. Jansen teststring="number of boundary elements" 116*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 117*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 118*59599516SKenneth E. Jansen fi 119*59599516SKenneth E. Jansen 120*59599516SKenneth E. Jansen teststring="size of ilwork array" 121*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 122*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, header, 1;" >> $file_integer_field_geombc_fun 123*59599516SKenneth E. Jansen fi 124*59599516SKenneth E. Jansen 125*59599516SKenneth E. Jansen teststring="ilwork" 126*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 127*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, block, 1;" >> $file_integer_field_geombc_fun 128*59599516SKenneth E. Jansen fi 129*59599516SKenneth E. Jansen 130*59599516SKenneth E. Jansen teststring="periodic masters array" 131*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 132*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, block, 1;" >> $file_integer_field_geombc_fun 133*59599516SKenneth E. Jansen fi 134*59599516SKenneth E. Jansen 135*59599516SKenneth E. Jansen # NSpre and others produces a field named "number of shapefunctions soved on processor" 136*59599516SKenneth E. Jansen # Phasta now tries to read "number of shape functions@partID" in readnblk.f so reflect that change here 137*59599516SKenneth E. Jansen # The converter will be able to still find "number of shapefunctions soved on processor" in the old geombc.dat 138*59599516SKenneth E. Jansen # when looking for "number of shape functions". But phasta-SyncIO needs "number of shape functions" 139*59599516SKenneth E. Jansen teststring="number of shapefunctions soved on processor" 140*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 141*59599516SKenneth E. Jansen echo "geombc, number of shape functions, integer, header, 1;" >> $file_integer_field_geombc_fun 142*59599516SKenneth E. Jansen echo "WARNING: 'number of shapefunctions soved on processor' is renamed 'number of shape functions' for readnblk.f" 143*59599516SKenneth E. Jansen fi 144*59599516SKenneth E. Jansen # This is in case the name in NSpre or phParAdapt fixes the name of the field 'number of shapefunctions soved on processor' 145*59599516SKenneth E. Jansen teststring="number of shape functions" 146*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 147*59599516SKenneth E. Jansen echo "WARNING: Has 'number of shapefunctions soved on processor' be renamed in 'number of shape functions' in gembc.dat.## ?" 148*59599516SKenneth E. Jansen echo "Make sure phasta-SyncIO will be able to read it, as the '?' is not effective any more with the new SyncIO format (names are unique because of partID!)" 149*59599516SKenneth E. Jansen echo "geombc, "$field_fun", integer, block, 1;" >> $file_integer_field_geombc_fun 150*59599516SKenneth E. Jansen fi 151*59599516SKenneth E. Jansen 152*59599516SKenneth E. Jansen # Trying to keep the order identical. 153*59599516SKenneth E. Jansen # For phParAdapt, after 'number of nodes in the mesh' (already treated above) comes usually 'connectivity interior'. 154*59599516SKenneth E. Jansen # But there is no such field generated with NSpre so let us use "number of shapefunctions soved on processor" which is common to both. 155*59599516SKenneth E. Jansen # Moreover, in readnblk.f, the connectivity is read just after "number of shapefunctions soved on processor" so makes sense. 156*59599516SKenneth 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. 157*59599516SKenneth E. Jansen #teststring="number of nodes in the mesh" 158*59599516SKenneth E. Jansen teststring="number of shapefunctions soved on processor" 159*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 160*59599516SKenneth E. Jansen 161*59599516SKenneth E. Jansen echo "geombc, total number of interior tpblocks, integer, header, 1;" >> $file_integer_field_geombc_fun 162*59599516SKenneth E. Jansen echo "WARNING: a new field called 'total number of interior tpblocks' will be added in the new geombc files" 163*59599516SKenneth E. Jansen 164*59599516SKenneth E. Jansen while read line 165*59599516SKenneth E. Jansen do 166*59599516SKenneth E. Jansen field=`echo $line | awk '{$1="";$2="";$3="";print $0}'` 167*59599516SKenneth E. Jansen echo "geombc, connectivity interior $field, integer, block, 7;" | sed -e 's/ */ /g' >> $file_integer_field_geombc_fun # sed remove extra space 168*59599516SKenneth E. Jansen done < $list_interior_tpblocks_fun 169*59599516SKenneth E. Jansen fi 170*59599516SKenneth E. Jansen 171*59599516SKenneth E. Jansen # Trying to keep the order identical. 172*59599516SKenneth E. Jansen # After 'number of nodes in the mesh' (already treated above) comes usually 'connectivity boundary' and 'nbc code' 173*59599516SKenneth 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. 174*59599516SKenneth E. Jansen teststring="number of boundary tpblocks" 175*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 176*59599516SKenneth E. Jansen 177*59599516SKenneth E. Jansen echo "geombc, total number of boundary tpblocks, integer, header, 1;" >> $file_integer_field_geombc_fun 178*59599516SKenneth E. Jansen echo "WARNING: a new field called 'total number of boundary tpblocks' will be added in the new geombc files" 179*59599516SKenneth E. Jansen 180*59599516SKenneth E. Jansen while read line 181*59599516SKenneth E. Jansen do 182*59599516SKenneth E. Jansen field=`echo $line | awk '{$1="";$2="";$3="";print $0}'` 183*59599516SKenneth E. Jansen 184*59599516SKenneth E. Jansen echo "geombc, connectivity boundary $field, integer, block, 8;" | sed -e 's/ */ /g' >> $file_integer_field_geombc_fun # sed remove extra space 185*59599516SKenneth E. Jansen echo "geombc, nbc codes $field, integer, block, 8;" | sed -e 's/ */ /g' >> $file_integer_field_geombc_fun # sed remove extra space 186*59599516SKenneth E. Jansen done < $list_boundary_tpblocks_fun 187*59599516SKenneth E. Jansen fi 188*59599516SKenneth E. Jansen} 189*59599516SKenneth E. Jansen 190*59599516SKenneth E. Jansen 191*59599516SKenneth E. Jansen### Function check_field_restart 192*59599516SKenneth E. Jansenfunction check_field_restart() { 193*59599516SKenneth E. Jansen# All the critical fields that phasta needs in restart are listed below. Update this list if needed for your application. 194*59599516SKenneth E. Jansen# The format is the following: restart, field name, double or integer, block or header, number of integer in the header after < >. 195*59599516SKenneth E. Jansen 196*59599516SKenneth E. Jansen #field_fun="$@" # get all args 197*59599516SKenneth E. Jansen #field_fun=$(echo $argfun | awk '{print $1}') #Name of the field 198*59599516SKenneth E. Jansen #filefun=$1 199*59599516SKenneth E. Jansen file_double_field_restart_fun=$1 200*59599516SKenneth E. Jansen file_integer_field_restart_fun=$2 201*59599516SKenneth E. Jansen field_fun=$3 202*59599516SKenneth E. Jansen 203*59599516SKenneth E. Jansen ### Double fields first (compulsary for the converter for now) 204*59599516SKenneth E. Jansen 205*59599516SKenneth E. Jansen teststring="solution" 206*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 207*59599516SKenneth E. Jansen echo "restart, $field_fun, double, block, 3;" >> $file_double_field_restart_fun 208*59599516SKenneth E. Jansen fi 209*59599516SKenneth E. Jansen 210*59599516SKenneth E. Jansen ### Integer fields next 211*59599516SKenneth E. Jansen 212*59599516SKenneth E. Jansen teststring="byteorder magic number" 213*59599516SKenneth E. Jansen if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 214*59599516SKenneth E. Jansen echo "restart, $field_fun, integer, block, 1;" >> $file_integer_field_restart_fun 215*59599516SKenneth E. Jansen fi 216*59599516SKenneth E. Jansen 217*59599516SKenneth E. Jansen #teststring="number of modes" # Already in the geombc files and read by phasta from the geombc files 218*59599516SKenneth E. Jansen #if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 219*59599516SKenneth E. Jansen # echo "restart, $field_fun, integer, header, 1;" >> $file_integer_field_restart_fun 220*59599516SKenneth E. Jansen #fi 221*59599516SKenneth E. Jansen 222*59599516SKenneth E. Jansen #teststring="number of variables" # Was required for the converter. Info now read from the solution field 223*59599516SKenneth E. Jansen #if [ "${field_fun:0:${#teststring}}" == "$teststring" ]; then #we compare the first letters of the string 224*59599516SKenneth E. Jansen # echo "restart, $field_fun, integer, header, 1;" >> $file_integer_field_restart_fun 225*59599516SKenneth E. Jansen #fi 226*59599516SKenneth E. Jansen 227*59599516SKenneth E. Jansen} 228*59599516SKenneth E. Jansen 229*59599516SKenneth E. Jansen 230*59599516SKenneth E. Jansen##################################################################### 231*59599516SKenneth E. Jansen### End of functions - Beginning of the script 232*59599516SKenneth E. Jansen##################################################################### 233*59599516SKenneth E. Jansen 234*59599516SKenneth E. Jansen 235*59599516SKenneth E. Jansen### Check that user entered proper number of args 236*59599516SKenneth E. Jansenif [ "${#}" -lt "$nargs" ] || [ "$1" == "-h" ]; then 237*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" 238*59599516SKenneth E. Jansenfi 239*59599516SKenneth E. Jansen 240*59599516SKenneth E. Jansen 241*59599516SKenneth E. Jansen### Read arguments of the script 242*59599516SKenneth E. JansenN_steps=$1 243*59599516SKenneth E. JansenN_parts=$2 244*59599516SKenneth E. JansenN_files=$3 245*59599516SKenneth E. Jansen 246*59599516SKenneth E. Jansenecho "Time step: $N_steps" 247*59599516SKenneth E. Jansenecho "Number of parts: $N_parts" 248*59599516SKenneth E. Jansenecho "Number of SyncIO files: $N_files" 249*59599516SKenneth E. Jansenecho "" 250*59599516SKenneth E. Jansen 251*59599516SKenneth E. Jansendir=$N_parts-procs_case 252*59599516SKenneth E. Jansen 253*59599516SKenneth E. Jansen 254*59599516SKenneth E. Jansen### Do a couple of sanity check on the input parameters of the script 255*59599516SKenneth E. Jansenif [ ! -d $dir ]; then 256*59599516SKenneth E. Jansen die "$N_parts-procs_case does not exist\n Aborting" 257*59599516SKenneth E. Jansenfi 258*59599516SKenneth E. Jansen 259*59599516SKenneth E. Jansenif [ ! -e $dir/restart.$N_steps.1 ]; then 260*59599516SKenneth E. Jansen die "Time step $N_steps does not exist in $N_parts-procs_case\n Aborting" 261*59599516SKenneth E. Jansenfi 262*59599516SKenneth E. Jansen 263*59599516SKenneth E. Jansenresmodulo=$(($N_parts % $N_files)) 264*59599516SKenneth E. Jansenif [ "$resmodulo" -ne "0" ]; then 265*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" 266*59599516SKenneth E. Jansenfi 267*59599516SKenneth E. Jansen 268*59599516SKenneth E. Jansen 269*59599516SKenneth E. Jansen### First, count the interior and boundary topology blocks 270*59599516SKenneth E. Jansenlist_interior_tpblocks=list_interior_tpblocks.dat 271*59599516SKenneth E. Jansengrep -aH ' : < ' $dir/geombc.dat.* | grep 'connectivity interior' | awk -F : '{print $1,$2}' | awk '{$1=""; print $0}' | sort | uniq -c > $list_interior_tpblocks 272*59599516SKenneth E. Janseninterior_tpblocks=`cat $list_interior_tpblocks | wc -l` 273*59599516SKenneth E. Jansenecho "There are $interior_tpblocks different interior tp blocks in all the geombc files:" 274*59599516SKenneth E. Jansencat $list_interior_tpblocks 275*59599516SKenneth E. Jansenecho "" 276*59599516SKenneth E. Jansen 277*59599516SKenneth E. Jansenlist_boundary_tpblocks=list_boundary_tpblocks.dat 278*59599516SKenneth E. Jansengrep -aH ' : < ' $dir/geombc.dat.* | grep 'connectivity boundary' | awk -F : '{print $1,$2}' | awk '{$1=""; print $0}' | sort | uniq -c > $list_boundary_tpblocks 279*59599516SKenneth E. Jansenboundary_tpblocks=`cat $list_boundary_tpblocks | wc -l` 280*59599516SKenneth E. Jansenecho "There are $boundary_tpblocks different boundary tp blocks in all the geombc files:" 281*59599516SKenneth E. Jansencat $list_boundary_tpblocks 282*59599516SKenneth E. Jansenecho "" 283*59599516SKenneth E. Jansen 284*59599516SKenneth E. Jansen 285*59599516SKenneth E. Jansen### Grep all the fields from geombc.dat.1 (posix file) 286*59599516SKenneth E. Jansenfile_grep_geombc=grep_geombc_posix.dat 287*59599516SKenneth E. Jansengrep -a ' : < ' $dir/geombc.dat.1 > $file_grep_geombc 288*59599516SKenneth E. Jansen 289*59599516SKenneth E. Jansen 290*59599516SKenneth E. Jansen### Get only the fields name from geombc.dat.1 and remove any extra unwanted space 291*59599516SKenneth E. Jansenfile_field_geombc=field_geombc_posix.dat 292*59599516SKenneth 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 293*59599516SKenneth E. Jansen 294*59599516SKenneth E. Jansen 295*59599516SKenneth 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 296*59599516SKenneth E. Jansenfile_double_field_geombc=file_double_field_geombc.dat 297*59599516SKenneth E. Jansenif [ -e $file_double_field_geombc ]; then 298*59599516SKenneth E. Jansen rm $file_double_field_geombc 299*59599516SKenneth E. Jansenfi 300*59599516SKenneth E. Jansen 301*59599516SKenneth E. Jansenfile_integer_field_geombc=file_integer_field_geombc.dat 302*59599516SKenneth E. Jansenif [ -e $file_integer_field_geombc ]; then 303*59599516SKenneth E. Jansen rm $file_integer_field_geombc 304*59599516SKenneth E. Jansenfi 305*59599516SKenneth E. Jansen 306*59599516SKenneth E. Jansenwhile read line 307*59599516SKenneth E. Jansendo 308*59599516SKenneth E. Jansen field=`echo $line` 309*59599516SKenneth E. Jansen check_field_geombc "$file_double_field_geombc" "$file_integer_field_geombc" "$field" "$list_interior_tpblocks" "$list_boundary_tpblocks" 310*59599516SKenneth E. Jansendone < $file_field_geombc 311*59599516SKenneth E. Jansen 312*59599516SKenneth E. Jansen 313*59599516SKenneth E. Jansen### Grep all the fields from restart.##.1 (posix file) 314*59599516SKenneth E. Jansenfile_grep_restart=grep_restart_posix.dat 315*59599516SKenneth E. Jansengrep -a ' : < ' $dir/restart.$N_steps.1 > $file_grep_restart 316*59599516SKenneth E. Jansen 317*59599516SKenneth E. Jansen 318*59599516SKenneth E. Jansen### Get only the fields name from restart.##.1 and remove any extra unwanted space 319*59599516SKenneth E. Jansenfile_field_restart=field_restart_posix.dat 320*59599516SKenneth 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 321*59599516SKenneth E. Jansen 322*59599516SKenneth E. Jansen 323*59599516SKenneth 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 324*59599516SKenneth E. Jansenfile_double_field_restart=file_double_field_restart.dat 325*59599516SKenneth E. Jansenif [ -e $file_double_field_restart ]; then 326*59599516SKenneth E. Jansen rm $file_double_field_restart 327*59599516SKenneth E. Jansenfi 328*59599516SKenneth E. Jansen 329*59599516SKenneth E. Jansenfile_integer_field_restart=file_integer_field_restart.dat 330*59599516SKenneth E. Jansenif [ -e $file_integer_field_restart ]; then 331*59599516SKenneth E. Jansen rm $file_integer_field_restart 332*59599516SKenneth E. Jansenfi 333*59599516SKenneth E. Jansen 334*59599516SKenneth E. Jansenwhile read line 335*59599516SKenneth E. Jansendo 336*59599516SKenneth E. Jansen field=`echo $line` 337*59599516SKenneth E. Jansen check_field_restart "$file_double_field_restart" "$file_integer_field_restart" "$field" 338*59599516SKenneth E. Jansendone < $file_field_restart 339*59599516SKenneth E. Jansen 340*59599516SKenneth E. Jansenecho "" 341*59599516SKenneth E. Jansen 342*59599516SKenneth E. Jansen 343*59599516SKenneth E. Jansen### Start to write now IO.O2N.input 344*59599516SKenneth E. Jansenfile=IO.O2N.input 345*59599516SKenneth E. Jansenif [ -e $file ]; then 346*59599516SKenneth E. Jansen rm $file 347*59599516SKenneth E. Jansenfi 348*59599516SKenneth E. Jansen 349*59599516SKenneth E. JansenN_geombc_fields_double=`cat $file_double_field_geombc | wc -l` 350*59599516SKenneth E. JansenN_geombc_fields_integer=`cat $file_integer_field_geombc | wc -l` 351*59599516SKenneth E. JansenN_restart_fields_double=`cat $file_double_field_restart | wc -l` 352*59599516SKenneth E. JansenN_restart_fields_integer=`cat $file_integer_field_restart | wc -l` 353*59599516SKenneth E. Jansen 354*59599516SKenneth E. Jansenecho "N-geombc-fields-double: $N_geombc_fields_double;" >> $file 355*59599516SKenneth E. Jansenecho "N-geombc-fields-integer: $N_geombc_fields_integer;" >> $file 356*59599516SKenneth E. Jansenecho "N-restart-fields-double: $N_restart_fields_double;" >> $file 357*59599516SKenneth E. Jansenecho "N-restart-fields-integer: $N_restart_fields_integer;" >> $file 358*59599516SKenneth E. Jansenecho "N-steps: $N_steps;" >> $file 359*59599516SKenneth E. Jansenecho "N-parts: $N_parts;" >> $file 360*59599516SKenneth E. Jansenecho "N-files: $N_files;" >> $file 361*59599516SKenneth E. Jansen 362*59599516SKenneth E. Jansen# The converter expects first the geombc double in IO.O2N.input, then geombc integer, then restart double, then restart integer. 363*59599516SKenneth E. Jansencat $file_double_field_geombc >> $file 364*59599516SKenneth E. Jansencat $file_integer_field_geombc >> $file 365*59599516SKenneth E. Jansencat $file_double_field_restart >> $file 366*59599516SKenneth E. Jansencat $file_integer_field_restart >> $file 367*59599516SKenneth E. Jansen 368*59599516SKenneth E. Jansen### Some cleaning 369*59599516SKenneth E. Jansenrm $list_boundary_tpblocks 370*59599516SKenneth E. Jansenrm $list_interior_tpblocks 371*59599516SKenneth E. Jansenrm $file_grep_geombc 372*59599516SKenneth E. Jansenrm $file_grep_restart 373*59599516SKenneth E. Jansenrm $file_field_geombc 374*59599516SKenneth E. Jansenrm $file_field_restart 375*59599516SKenneth E. Jansenrm $file_double_field_geombc 376*59599516SKenneth E. Jansenrm $file_integer_field_geombc 377*59599516SKenneth E. Jansenrm $file_double_field_restart 378*59599516SKenneth E. Jansenrm $file_integer_field_restart 379*59599516SKenneth E. Jansen 380*59599516SKenneth E. Jansenecho "$file generated for the converter" 381*59599516SKenneth E. Jansen 382