#!/usr/bin/perl

BEGIN {
use lib 'd:/Programs/Perl/lib';
use lib '/home/tkamiya/bin/lib';
my $BaseDir = $ENV{'TkPerlDir'};
#print "\nBaseDir: $BaseDir\n";
@INC = ("$BaseDir/lib", "$BaseDir/VNL", "d:/Programs/Perl/lib", @INC);
}

use strict;
#use warnings;

use Math::Matrix;
use Math::MatrixReal;

use MyApplication;
use Sci::ChemicalReaction0;
use Sci::Algorism;

my $Reaction = "MnP:AFM=>MnP:FM";
#my $Reaction = "18SrCuFSe+Se=>Sr18Cu18F17Se19:FtoSe+1/2F2";
#my $Reaction = "18SrCuFSe=>Sr18Cu18F17Se18:VF+1/2F2";
#my $Reaction = "2CaF2+2CaS+2Cu2S=>4CaCuFS";
my $BaseDBDir = "Databases";
my @DBFiles = ("AeCuFCh.csv", "LaMnOPn.csv", "BaFe2As2.csv", "SrFe2As2.csv", "LaCuOSe.csv", 
			"LaZnOP-all.csv",
			"aIGZO-Dens608.csv", "ZnO.csv",
			"aIGZO-Dens608-all.csv", "AOS-PBE96-all.csv", "C12A7-all.csv",
			"LaMnOPn-all.csv", "LaTMOPn-AFM-Collinear-new2-all.csv",
			"LaTMOPn-AFM-Collinear-new-all.csv", "LaTMOPn-AFM-Collinear-all.csv",
			"Root-all.csv",
			);

print "Reaction: $Reaction\n";
my $R = new ChemicalReaction(\@DBFiles, $BaseDBDir);
if(!$R->DB()) {
	print "Error: $!: Can not read a DB.\n";
	exit;
}

while(1) {
	$R->ClearHashes();
	$R->Analyze($Reaction);
	if(!$R->CheckMassBalance(1)) {
		print("Mass balance violated\n");
	}
	else {
		my ($EForm, $EFormInitial, $EFormFinal) = $R->CalEForm();
		print "EForm: $EForm eV ($EFormFinal - $EFormInitial)\n";
	}

	print "Reaction>>";
	$Reaction = <>;
	Utils::DelSpace($Reaction);
}

