aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetIOScalar
diff options
context:
space:
mode:
authorThomas Radke <tradke@aei.mpg.de>2006-08-15 13:43:00 +0000
committerThomas Radke <tradke@aei.mpg.de>2006-08-15 13:43:00 +0000
commitbc702f137a27e6767874e94bcf966433916e5cef (patch)
treef9a58caca4b2386443630de5842282ab46d6008c /Carpet/CarpetIOScalar
parent9aba6a41a6cabbe896e97949eb900479344f6121 (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-xCarpet/CarpetIOScalar/src/util/mergeCarpetIOScalar.pl65
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;
+}