#!/bin/sh #------------------------------------------------------------------------------ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | # \\ / A nd | www.openfoam.com # \\/ M anipulation | #------------------------------------------------------------------------------- # Copyright (C) 2015 OpenFOAM Foundation # Copyright (C) 2020 DLR #------------------------------------------------------------------------------ # License # This file is part of OpenFOAM, distributed under GPL-3.0-or-later. # # 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 < specify case directory (default = local dir) -d | -dir post-processing directory (default = postProcessing) -o | -out output links directory (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 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 } # Set defaults DIR=postProcessing OUT=sequencedVTK fileType=vtk while [ "$#" -gt 0 ] do case "$1" in -h | -help*) usage ;; -c | -case) [ "$#" -ge 2 ] || usage "'$1' option requires an argument" cd "$2" 2>/dev/null || usage "directory does not exist: '$2'" shift ;; -d | -dir) [ "$#" -ge 2 ] || usage "'$1' option requires an argument" DIR=$2 shift ;; -o | -out) [ "$#" -ge 2 ] || usage "'$1' option requires an argument" OUT=$2 shift 2 ;; -vtk | -vtp | -vtu) fileType="${1#-}" ;; -*) usage "invalid option '$1'" ;; *) break ;; esac shift done if [ ! -d $DIR ]; then echo "Cannot find postProcessing directory, exiting." exit 0 fi FILES=$(find $DIR -name "*.$fileType" -type f) NAMES=$(for f in $FILES; do basename $f .$fileType; done | sort -u) 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 $fileType files named $N.$fileType" # Create list of VTK (vtk, vtp, vtu) files, ordered by time step FILE_LIST=$(echo $FILES | \ tr " " "\n" | \ grep $N.$fileType | \ 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.$fileType" $i) ln -s ../$F $OUT/$LINK done done # -----------------------------------------------------------------------------