File: timeEvolution.pl

package info (click to toggle)
dmrgpp 6.06-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 113,900 kB
  • sloc: cpp: 80,986; perl: 14,772; ansic: 2,923; makefile: 83; sh: 17
file content (88 lines) | stat: -rw-r--r-- 1,532 bytes parent folder | download
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/perl -w

use strict;
use warnings;

my ($observable,$useFlag)=@ARGV;

defined($observable) or die "USAGE: $0 observable useFlag\n";
$useFlag=1 if (!defined($useFlag));

my $total = 0;
my @counter;
my @values;
my $nsites=0;
my $flag=0;
my @times;

while(<STDIN>) {
	$flag = 0  if (/ALL LINKS CLEARED/);
	$flag = 1 if (/ALL LINKS SEEN/);
	next unless (/P0/);
	next unless (/$observable/);
	next if ($flag==0 and $useFlag==1);

	my @temp=split;
	my $denominator = realPart($temp[4]);
	next if ($denominator==0);
	next if (!isAnInteger($temp[0]));
	my $val = realPart($temp[1])/$denominator;
	my $c = $counter[$temp[0]];
	$c=0 if (!defined($c));
	$times[$c]=$temp[2];
	$values[$temp[0]][$c]=$val;
	$counter[$temp[0]]=$c+1;
	$total = $c+1 if ($total<$c+1);
	$nsites = $temp[0] if ($nsites<$temp[0]);
	if ($useFlag == 2) {
		print STDERR "$denominator\n";
	}
}

$nsites++;

exit(0) if ($useFlag == 2);


for (my $c=0;$c<$total;$c++) {
	#next if (!allDefined($c,\@values,$nsites));

	print "$times[$c] ";
	for (my $site=0;$site<$nsites;$site++) {
		my $val = $values[$site][$c];
		$val = "0.000" if (!defined($val));
		print "$val ";
	}
	print "\n";
}

sub allDefined
{
	my ($c,$v,$nsites) = @_;
	for (my $site=0;$site<$nsites;$site++) {
		my $val = $v->[$site][$c];
		return 0 if (!defined($val));
	}
	
	return 1;
}


sub realPart
{
	my ($t)=@_;
	$_=$t;
	return "-1" if (!defined($_));
	s/\(//;
	s/\,.*$//;
	return $_;
}

sub isAnInteger
{
	my ($t)=@_;
	return 0 if (!defined($t));
	return 1 if ($t=~/^[0-9]+$/);
	return 0;
}