#!/usr/bin/perl

use strict;

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

my $path = "AFM-DOS-up.csv";

my (@X, @D);
my $Xstart = -10;
my $XEnd   =  10;
my $XStep  = 0.01;
my $nData  = int( ($XEnd - $Xstart) / $XStep + 1.001);
for(my $i = 0 ; $i < $nData ; $i++) {
	$X[$i] = $Xstart + $i * $XStep;
	my $dX1 = $X[$i] + 3.0;
	my $dX2 = $X[$i] - 2.0;
	$D[$i] = exp(-$dX1*$dX1 / 0.5) + exp(-$dX2*$dX2 / 0.5);
}

my ($pX, $pY) = (\@X, \@D);
print "p=$pX, $pY\n";

my $dE = $pX->[1] - $pX->[0];
my (@dE, @JDOS);
for(my $i = 0 ; $i < $nData ; $i++) {
	$dE[$i]   = $dE * $i;
	$JDOS[$i] = 0.0;
}

for(my $i = 1 ; $i < $nData ; $i++) {
	my $Ei = $pX->[$i];
	my $D  = $pY->[$i];
	last if($Ei > 0.0);
	for(my $j = $i ; $j < $nData ; $j++) {
		my $Ef = $pX->[$j];
		next if($Ef < 0.0);
		my $di = $j - $i;
		$JDOS[$di] += $D * $pY->[$j];
	}
}

my $out = new JFile("JDOS.csv", "w") or die $!;
$out->print("Energy(eV),JDOS,Energy(eV),DOS\n");
for(my $i = 0 ; $i < $nData ; $i++) {
	$out->print("$dE[$i],$JDOS[$i],$pX->[$i],$pY->[$i]\n");
}
$out->Close();
	