Skip to content
Snippets Groups Projects
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\"."