#!/usr/bin/perl

use strict;

use lib 'd:/Programs/Perl/lib';
use JFile;

my $InFile  = (defined $ARGV[0])? $ARGV[0] : "LOCPOT.vasp";
my $CSVFile = (defined $ARGV[1])? $ARGV[1] : Deps::ReplaceExtension($InFile, "csv");

my $out = new JFile;
$out->Open($CSVFile, "w") or die "$!: Can not write to [$CSVFile]\n";
$out->print("z(A),pot(eV)\n");

my $in = new JFile;
$in->Open($InFile, "r") or die "$!: Can not read [$InFile].\n";
my $title = $in->ReadLine();
my $a = $in->ReadLine() + 0.0;
my $line = $in->ReadLine();
my ($a11, $a12, $a13) = Utils::Split("\\s+", $line);
$line = $in->ReadLine();
my ($a21, $a22, $a23) = Utils::Split("\\s+", $line);
$line = $in->ReadLine();
my ($a31, $a32, $a33) = Utils::Split("\\s+", $line);
$line = $in->ReadLine();
my @nAtoms = Utils::Split("\\s+", $line);
$line = $in->ReadLine();

for(my $i = 0 ; $i < @nAtoms ; $i++) {
	for(my $j = 0 ; $j < $nAtoms[$i] ; $j++) {
		$line = $in->ReadLine();
		last if(!$line);
	}
}
while(1) {
	$line = $in->ReadLine();
	last if(!$line);
	Utils::DelSpace($line);
	next if($line eq '');
	
	last;
}

my ($nx, $ny, $nz) = Utils::Split("\\s+", $line);
my $nTotal   = $nx * $ny * $nz;
my $nyzTotal = $ny * $nz;
print "n=($nx, $ny, $nz)=$nTotal\n";

my @pot;
for(my $ix = 0 ; $ix < $nx ; $ix++) {
	$pot[$ix] = 0.0;
}

my $c = 0;
for(my $iz = 0 ; $iz < $nz ; $iz++) {
	for(my $iy = 0 ; $iy < $ny ; $iy++) {
		for(my $ix = 0 ; $ix < $nx ; $ix++) {
			my $d = &ReadOne($in);
			if(!defined $d) {
				print "Short data!!\n";
				last;
			}
#print "$ix,$iy,$iz ($c): $d\n";

			$pot[$ix] += $d;
			$c++;
		}
	}
}
print "last c=$c ($nTotal)\n";
for(my $ix = 0 ; $ix < $nx ; $ix++) {
	$pot[$ix] = $pot[$ix] / $nyzTotal;
	$out->print("$ix,$pot[$ix]\n");
}
$out->Close();

$in->Close();
exit;

my @d;
my $count = 0;
sub ReadOne
{
	my ($in) = @_;

	if($count >= @d) {
#print "read\n";
		$count = 0;
		my $line = $in->ReadLine();
		return undef if(!defined $line);

		@d = Utils::Split("\\s+", $line);
	}

	my $val = $d[$count];
	$count++;
	return $val;
}
