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