From 8ad96fb53085fc72152e5ed9b3667a3ff2866862 Mon Sep 17 00:00:00 2001 From: Chris Greenshields Date: Fri, 15 May 2015 11:13:00 +0100 Subject: [PATCH 1/3] Script to create an MPEG-4 (.mp4) video from PNG-format images --- bin/foamCreateVideo | 117 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100755 bin/foamCreateVideo diff --git a/bin/foamCreateVideo b/bin/foamCreateVideo new file mode 100755 index 00000000..bd289847 --- /dev/null +++ b/bin/foamCreateVideo @@ -0,0 +1,117 @@ +#!/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 . +# +# Script +# foamCreateVideo +# +# Description +# Creates an MPEG-4 compressed (.mp4) video file from PNG images +# - requires mencoder +# +#------------------------------------------------------------------------------ + +usage () { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat < directory containing png images (default local dir) + -f | -fps frames per second (default = 10) + -h | -help help + -i | -image name of image sequence (default = image) + -o | -out name of output video file (default = video) + +Creates an MPEG-4 compressed (.mp4) video file from a sequence of PNG images +- A sequence named "image" will expect files image.0000.png, image.0001.png, etc +- An output video named "video" will produce a file video.mp4 +- By default the video codec is high resolution (x264) but there is an option to + select a medium resolution codec (lavc) + +Requires mencoder + +USAGE + exit 1 +} + + +# Default settings +DIR='.' +IMAGE='image' +VIDEO='video' +FPS=10 +VCODEC=x264 + + +while [ "$#" -gt 0 ] +do + case "$1" in + -h | -help) + usage + ;; + -d | -directory) + [ "$#" -ge 2 ] || usage "'$1' option requires an argument" + DIR=$2 + shift 2 + ;; + -f | -fps) + [ "$#" -ge 2 ] || usage "'$1' option requires an argument" + FPS=$2 + shift 2 + ;; + -i | -image) + [ "$#" -ge 2 ] || usage "'$1' option requires an argument" + IMAGE=$2 + shift 2 + ;; + -o | -out) + [ "$#" -ge 2 ] || usage "'$1' option requires an argument" + VIDEO=$2 + shift 2 + ;; + -*) + usage "invalid option '$1'" + ;; + *) + break + ;; + esac +done + +# +# MAIN +# + +[ -f "$(ls -1 $DIR/$IMAGE.*.png | head -1)" ] || usage "Cannot find first file in image sequence" + +if command -v mencoder >/dev/null 2>&1; then + mencoder \ + "mf://$DIR/$IMAGE.*.png" \ + -mf fps=$FPS \ + -o $VIDEO.mp4 \ + -ovc $VCODEC +else + usage "Please install mencoder" +fi From 145035451e1b844287a2881548975daaf1191e26 Mon Sep 17 00:00:00 2001 From: Chris Greenshields Date: Fri, 15 May 2015 11:20:38 +0100 Subject: [PATCH 2/3] Script to help load VTK images into ParaView as a sequence for animation 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. --- bin/foamSequenceVTKFiles | 126 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100755 bin/foamSequenceVTKFiles diff --git a/bin/foamSequenceVTKFiles b/bin/foamSequenceVTKFiles new file mode 100755 index 00000000..fbbfc601 --- /dev/null +++ b/bin/foamSequenceVTKFiles @@ -0,0 +1,126 @@ +#!/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 . +# +# 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) + -h | -help help + -o | -out output links directory (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 + ;; + -h | -help) + printUsage + ;; + -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 -type f -name *vtk) +NAMES=$(basename -s .vtk -a $FILES | 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 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 From f159c38679bbd546d9c051fc07ed0738f5b4a1c1 Mon Sep 17 00:00:00 2001 From: Chris Greenshields Date: Fri, 15 May 2015 11:28:21 +0100 Subject: [PATCH 3/3] Script to monitor data with Gnuplot from time-value(s) graphs e.g. data files written by functionObjects Attempts to interpret automatically the format of time-data files Works successfully with majority of time-data output, e.g. forceCoeffs, but will be unsuccesful on files with inconsistent output format --- bin/foamMonitor | 176 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100755 bin/foamMonitor diff --git a/bin/foamMonitor b/bin/foamMonitor new file mode 100755 index 00000000..9f70c745 --- /dev/null +++ b/bin/foamMonitor @@ -0,0 +1,176 @@ +#!/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 . +# +# Script +# foamMonitor +# +# Description +# Monitor data with Gnuplot from time-value(s) graphs written by OpenFOAM +# e.g. by functionObjects +# - requires gnuplot, gnuplot_x11 +# +#------------------------------------------------------------------------------ +usage() { + exec 1>&2 + while [ "$#" -ge 1 ]; do echo "$1"; shift; done + cat< +options: + -h | -help print the usage + -i | -idle