File: timeObservablesInSitu.pm

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 (107 lines) | stat: -rw-r--r-- 1,541 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/perl

use strict;
use warnings;

package timeObservablesInSitu;

sub getMatrix 
{
	my ($site, $label, $fin, $tau)=@_;
	defined($tau) or return;

	my $counter=0;

	while (<$fin>) {

		last if (/^ALL OPERATORS/);
	}

	my @a;
	while (<$fin>) {
		chomp;
		next unless /\Q$label/;

		if (/^${site} /) {
			my @temp = split;
			(scalar(@temp) >= 5) or next;
			my $value = procValue($temp[1]);
			my $time = int($temp[2]/$tau);
			my $superdensity = procValue($temp[4]);
			my $h = { "value" => $value, "superdensity" => $superdensity};
			$a[$time] = $h;
		}
	}

	return @a;
}

sub load
{
	my ($file) = @_;
	my %h;
	defined($file) or return %h;
	if (!open(FILE, "$file")) {
		print "$0: Could not open $file : $!\n";
	 	return %h;
	}

	$_ = <FILE>;
	defined($_) or return %h;
	chomp;
	if (/#site= (.*$)/) {
		$h{"site"} = $1;
	} else {
		return %h;
	}

	$_ = <FILE>;
	defined($_) or return %h;
	chomp;
	if (/#label=(.*$)/) {
		$h{"label"} = $1;
	} else {
		return %h;
	}

	my $cols = 2;
	my $row = 0;
	my @t;
	my @m;
	while (<FILE>) {
		chomp;
		my @temp = split;
		(scalar(@temp) == 3) or next;
		$t[$row] = $temp[0];
		$m[0 + $row*$cols] = $temp[1];
		$m[1 + $row*$cols] = $temp[2];
		++$row;
	}

	close(FILE);

	$h{"times"} = \@t;
	my $rows = $row;
	my @m2;
	$m2[0] = $rows;
	$m2[1] = $cols;
	for (my $i = 0; $i < $rows; ++$i) {
		for (my $j = 0; $j < $cols; ++$j) {
			$m2[2 + $i + $j*$rows] = $m[$j + $i*$cols];
		}
	}

	$h{"data"} = \@m2;
	return %h;
}

sub procValue
{
	my ($t)=@_;
	$_=$t;
	s/\(//;
	s/,.*$//;
	return $_;
}

1;