xref: /phasta/converterIO/create_IO_O2N_input.sh (revision 218c98ff7b530989f95b3cb9a95e9b1ba934ea2c)
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