-
Lionel GUEZ authoredLionel GUEZ authored
eddy_graph_in.sh 1.94 KiB
#!/bin/bash
# This program creates edgelists and interpolated eddies. You run it
# only once and it processes both anticyclones and cyclones.
# Note: no need to sort number_eddies.csv, already sorted by construction.
if (($# != 2))
then
echo "Usage: eddy_graph.sh N_PROC INPUT_SHP_TRIPLET"
exit 1
fi
set -e
##set -x
rank=0
while ((rank < $1))
do
rm -rf SHPC_$rank
mkdir SHPC_$rank
((rank += 1))
done
${mpiexec:-mpiexec} -n $1 @CMAKE_CURRENT_BINARY_DIR@/eddy_graph $2
# Two titles lines, one with long names, one with short names:
cat >number_eddies.csv <<EOF
"days since 1950-1-1" "number of visible extrema" "number of interpolated eddies"
days_1950 number_vis_extr n_interp
EOF
rm -f isolated_nodes.txt
rank=0
while ((rank < $1))
do
cat number_eddies_$rank.csv >>number_eddies.csv
cat edgelist_cyclo_$rank.csv >>edgelist_cyclo_no_header.csv
cat edgelist_anti_$rank.csv >>edgelist_anti_no_header.csv
cat isolated_nodes_$rank.txt >>isolated_nodes.txt
rm number_eddies_$rank.csv edgelist_@(cyclo|anti)_$rank.csv \
isolated_nodes_$rank.txt
((rank += 1))
done
# Sort for easier comparison between runs:
export LC_NUMERIC=C # for the sort command
for orientation in cyclo anti
do
cat >edgelist_$orientation.csv <<EOF
"predecessor date" "predecessor eddy subscript" "successor date" "successor eddy subscript"
d1 i1 d2 i2 weight
$(sort --key=1 --key=2 --numeric-sort edgelist_${orientation}_no_header.csv)
EOF
rm edgelist_${orientation}_no_header.csv
done
echo "Created files \"number_eddies.csv\", \"edgelist_cyclo.csv\", " \
"\"edgelist_anti.csv\" and \"isolated_nodes.txt\"."
rm -rf SHPC
mv SHPC_0 SHPC
rank=1
while ((rank < $1))
do
for my_base in extremum outermost_contour max_speed_contour
do
shpcat SHPC_$rank/$my_base SHPC/$my_base
dbfcat SHPC_$rank/$my_base SHPC/$my_base
done
rm -r SHPC_$rank
((rank += 1))
done
cp $2/grid_nml.txt SHPC
echo "Created directory \"SHPC\"."