ENH: support sequencing of vtp/vtu files

This commit is contained in:
Henning Scheufler
2020-03-17 10:46:29 +01:00
committed by Mark Olesen
parent 3e3193aa5e
commit 75b9f2618b

View File

@ -7,6 +7,7 @@
# \\/ M anipulation | # \\/ M anipulation |
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# Copyright (C) 2015 OpenFOAM Foundation # Copyright (C) 2015 OpenFOAM Foundation
# Copyright (C) 2020 DLR
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# License # License
# This file is part of OpenFOAM. # This file is part of OpenFOAM.
@ -44,8 +45,11 @@ Usage: ${0##*/} [OPTIONS] ...
options: options:
-c | -case <dir> specify case directory (default = local dir) -c | -case <dir> specify case directory (default = local dir)
-d | -dir <dir> post-processing directory <dir> (default = postProcessing) -d | -dir <dir> post-processing directory <dir> (default = postProcessing)
-h | -help help
-o | -out <dir> output links directory <dir> (default = sequencedVTK) -o | -out <dir> output links directory <dir> (default = sequencedVTK)
-vtk create sequence of vtk files (default)
-vtp create sequence of vtp files
-vtu create sequence of vtu files
-h | -help help
Creates symbolic links to all VTK files in a post-processing directory Creates symbolic links to all VTK files in a post-processing directory
Links form a sequence like name.0000.vtk, name.0001.vtk, etc. Links form a sequence like name.0000.vtk, name.0001.vtk, etc.
@ -57,30 +61,35 @@ USAGE
exit 1 exit 1
} }
# Set defaults
DIR=postProcessing DIR=postProcessing
OUT=sequencedVTK OUT=sequencedVTK
fileType=vtk
while [ "$#" -gt 0 ] while [ "$#" -gt 0 ]
do do
case "$1" in case "$1" in
-h | -help*)
usage
;;
-c | -case) -c | -case)
[ "$#" -ge 2 ] || usage "'$1' option requires an argument" [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
cd "$2" 2>/dev/null || usage "directory does not exist: '$2'" cd "$2" 2>/dev/null || usage "directory does not exist: '$2'"
shift 2 shift
;; ;;
-d | -dir) -d | -dir)
[ "$#" -ge 2 ] || usage "'$1' option requires an argument" [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
DIR=$2 DIR=$2
shift 2 shift
;;
-h | -help*)
usage
;; ;;
-o | -out) -o | -out)
[ "$#" -ge 2 ] || usage "'$1' option requires an argument" [ "$#" -ge 2 ] || usage "'$1' option requires an argument"
OUT=$2 OUT=$2
shift 2 shift 2
;; ;;
-vtk | -vtp | -vtu)
fileType="${1#-}"
;;
-*) -*)
usage "invalid option '$1'" usage "invalid option '$1'"
;; ;;
@ -88,6 +97,7 @@ do
break break
;; ;;
esac esac
shift
done done
if [ ! -d $DIR ]; then if [ ! -d $DIR ]; then
@ -95,8 +105,8 @@ if [ ! -d $DIR ]; then
exit 0 exit 0
fi fi
FILES=$(find $DIR -name '*.vtk' -type f) FILES=$(find $DIR -name "*.$fileType" -type f)
NAMES=$(for f in $FILES; do basename $f .vtk; done | sort -u) NAMES=$(for f in $FILES; do basename $f .$fileType; done | sort -u)
if [ -d $OUT ]; then if [ -d $OUT ]; then
echo "$OUT directory already exists. Deleting links within it..." echo "$OUT directory already exists. Deleting links within it..."
@ -108,12 +118,12 @@ fi
for N in $NAMES for N in $NAMES
do do
echo "Sequencing all VTK files named $N.vtk" echo "Sequencing all $fileType files named $N.$fileType"
# Create list of VTK files, ordered by time step # Create list of VTK (vtk, vtp, vtu) files, ordered by time step
FILE_LIST=$(echo $FILES | \ FILE_LIST=$(echo $FILES | \
tr " " "\n" | \ tr " " "\n" | \
grep $N.vtk | \ grep $N.$fileType | \
awk -F'/' '{print($(NF-1)" "$0)}' | \ awk -F'/' '{print($(NF-1)" "$0)}' | \
sort -k 1 -g | \ sort -k 1 -g | \
cut -d' ' -f2) cut -d' ' -f2)
@ -122,7 +132,9 @@ do
for F in $FILE_LIST for F in $FILE_LIST
do do
i=$(expr $i + 1) # Relies on ordered list of $sourceFiles i=$(expr $i + 1) # Relies on ordered list of $sourceFiles
LINK=$(printf "${N}.%04d.vtk" $i) LINK=$(printf "${N}.%04d.$fileType" $i)
ln -s ../$F $OUT/$LINK ln -s ../$F $OUT/$LINK
done done
done done
# -----------------------------------------------------------------------------