#!/usr/bin/perl

use lib "d:/Programs/Perl/lib";
use strict;

use Utils;
use JFile;

my @path = (
	"LaMnOP-U000-AFM-Collinear-MAGMOM-NUPDOWN",
	"LaMnOP-U010-AFM-CollinearMAGMOM-NUPDOWN",
	"LaMnOP-U020-AFM-CollinearMAGMOM-NUPDOWN",
	"LaMnOP-U030-AFM-CollinearMAGMOM-NUPDOWN",
	"LaMnOP-U040-AFM-CollinearMAGMOM-NUPDOWN",
	"LaMnOP-U060-AFM-Collinear-MAGMOM-NUPDOWN",
	);

for(my $if = 0 ; $if < @path ; $if++) {
	print "$path[$if]\n";
	my $path = Utils::MakePath($path[$if], "DOS/OUTCAR", '/', 0);

	my $in = new JFile;
	$in->Open($path, "r") or die $!;

	my $line = $in->SkipTo("E-fermi :");
	my ($EF) = ($line =~ /:\s*([\d+-\.eE]+)/);
#print "line: [$line] [EF = $EF]\n";
	print "   EF = $EF eV\n";

	my ($VBM, $CBM);
	while(1) {
		$line = $in->SkipTo("k-point\\s+\\d+\\s:");
		last if(!$line);

#print "line: $line";
		$line = $in->ReadLine();
		for(my $i = 0 ; ; $i++) {
			$line = $in->ReadLine();
			my ($iband, $E, $occ) = Utils::Split("\\s+", $line); #, "\\s+");
			last if(!defined $occ);
#print "  $iband: $E, $occ\n";
		
			if($E <= $EF) {
				if(!defined $VBM or $VBM < $E) {
					$VBM = $E;
				}
			}
			else {
				if(!defined $CBM or $CBM > $E) {
					$CBM = $E;
				}
			}
		}
	}
	print "   VBM=$VBM   CBM=$CBM   Eg=", $CBM - $VBM, " eV\n";

	$in->Close();
}
