Newer
Older
Chris Greenshields
committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
# \\/ M anipulation |
#-------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# foamSequenceVTKFiles
#
# Description
# Creates symbolic links to all VTK files in a post-processing directory
# Links form a sequence like name.0000.vtk, name.0001.vtk, etc.
# Paraview recognises link names as a sequence which can be animated.
# The sequence of links can be used to create a video from the images.
# - Default directory name for VTK files is postProcessing
#
#------------------------------------------------------------------------------
usage () {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
cat <<USAGE
Usage: ${0##*/} [OPTIONS] ...
options:
-c | -case <dir> specify case directory (default = local dir)
-d | -dir <dir> post-processing directory <dir> (default = postProcessing)
-h | -help help
-o | -out <dir> output links directory <dir> (default = sequencedVTK)
Creates symbolic links to all VTK files in a post-processing directory
Links form a sequence like name.0000.vtk, name.0001.vtk, etc.
Paraview recognises the link names as a sequence which can be opened and played.
The sequence of links to images can be used to create a video from the images.
- Default directory name for VTK files is postProcessing
USAGE
exit 1
}
DIR=postProcessing
OUT=sequencedVTK
while [ "$#" -gt 0 ]
do
case "$1" in
-c | -case)
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
cd "$2" 2>/dev/null || usage "directory does not exist: '$2'"
shift 2
;;
-d | -dir)
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
DIR=$2
shift 2
;;
Chris Greenshields
committed
;;
-o | -out)
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
OUT=$2
shift 2
;;
-*)
usage "invalid option '$1'"
;;
*)
break
;;
esac
done
if [ ! -d $DIR ]; then
echo "Cannot find postProcessing directory, exiting."
exit 0
fi
FILES=$(find $DIR -name '*.vtk' -type f)
NAMES=$(for f in $FILES; do basename $f .vtk; done | sort -u)
Chris Greenshields
committed
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
if [ -d $OUT ]; then
echo "$OUT directory already exists. Deleting links within it..."
rm -rf $OUT/*
else
echo "Creating $OUT directory..."
mkdir $OUT
fi
for N in $NAMES
do
echo "Sequencing all VTK files named $N.vtk"
# Create list of VTK files, ordered by time step
FILE_LIST=$(echo $FILES | \
tr " " "\n" | \
grep $N.vtk | \
awk -F'/' '{print($(NF-1)" "$0)}' | \
sort -k 1 -g | \
cut -d' ' -f2)
i=0
for F in $FILE_LIST
do
i=$(expr $i + 1) # Relies on ordered list of $sourceFiles
LINK=$(printf "${N}.%04d.vtk" $i)
ln -s ../$F $OUT/$LINK
done
done