diff options
author | Thomas Radke <tradke@aei.mpg.de> | 2006-08-15 13:43:00 +0000 |
---|---|---|
committer | Thomas Radke <tradke@aei.mpg.de> | 2006-08-15 13:43:00 +0000 |
commit | bc702f137a27e6767874e94bcf966433916e5cef (patch) | |
tree | f9a58caca4b2386443630de5842282ab46d6008c /Carpet/CarpetIOScalar | |
parent | 9aba6a41a6cabbe896e97949eb900479344f6121 (diff) |
CarpetIOScalar: added utility script to merge CarpetIOScalar output from before and after recovery
~/cactus/arrangements/Carpet/CarpetIOScalar/src/util> ./mergeCarpetIOScalar.pl --help
This script can be used to merge CarpetIOScalar output written
before and after recovery.
It reads from STDIN the contents of one or more files
in CarpetIOScalar format and writes them to STDOUT again,
eliminating duplicate timesteps.
Example: cat alp.norm1.asc | ./mergeCarpetIOScalar.pl > alp.norm1.asc.merged
darcs-hash:20060815134324-776a0-09eb0aa246cf5b5eeb015e9cea6615eb13f09d41.gz
Diffstat (limited to 'Carpet/CarpetIOScalar')
-rwxr-xr-x | Carpet/CarpetIOScalar/src/util/mergeCarpetIOScalar.pl | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/Carpet/CarpetIOScalar/src/util/mergeCarpetIOScalar.pl b/Carpet/CarpetIOScalar/src/util/mergeCarpetIOScalar.pl new file mode 100755 index 000000000..f174b9cae --- /dev/null +++ b/Carpet/CarpetIOScalar/src/util/mergeCarpetIOScalar.pl @@ -0,0 +1,65 @@ +#! /usr/bin/perl -w +#/*@@ +# @file mergeCarpetIOScalar.pl +# @date Tue 15 August 2006 +# @author Thomas Radke +# @desc +# Perl script to merge CarpetIOScalar output files, +# eliminating duplicate timesteps. +# +# Source code comments also by Thomas Radke :-) +# @enddesc +#@@*/ + + +if (@ARGV) { + print "\n" . + " This script can be used to merge CarpetIOScalar output written\n" . + " before and after recovery.\n" . + " It reads from STDIN the contents of one or more files\n" . + " in CarpetIOScalar format and writes them to STDOUT again,\n" . + " eliminating duplicate timesteps.\n\n" . + " Example: cat alp.norm1.asc | $0 > alp.norm1.asc.merged\n\n"; + exit; +} + +# Skalar-Variable zur Speicherung der aktuellen Zeilennummer +my $line = 0; + +# Rauten-Feld zur Speicherung der bereits ausgegebenen Datensaetze +my %timesteps = (); + +# lese die naechste Zeile von der Standard-Eingabe, solange das Dateiende +# nicht erreicht ist +while (<STDIN>) { + + # aktualisiere die Zeilennummer + $line++; + + # vergleiche die aktuelle Zeile mit dem Format fuer eine Datenzeile + if (/^(\d+) /) { + + # ermittle die Iterationsnummer aus der Datenzeile + my $iteration = $1; + + # pruefe im Rauten-Feld, ob dieser Datensatz bereits ausgegeben wurde + while (defined $timesteps{$iteration}) { + + # lies alle folgenden Zeilen von der Standard-Eingabe + # bis zur Datenzeile des naechsten Datensatzes + while (<STDIN>) { + $line++; + next unless (/^(\d+) /); + + $iteration = $1; + last; + } + } + + # vermerke im Rauten-Feld, dass dieser Datensatz ausgegeben wurde + $timesteps{$iteration} = 1; + } + + # gib die aktuelle Zeile auf der Standard-Ausgabe aus + print; +} |