#!/bin/bash

nCPU=16

SCRIPTDir=$TkPerlDir/VASP/script
VASPDir=$TkPerlDir/VASP
VASPCMD="/usr/bin/perl $VASPDir/VASP.pl"
ConvergenceCMD="/usr/bin/perl $VASPDir/Convergence.pl"

BaseDir=`pwd`
TemplateDir=`pwd`
VASPCommand=./DoVASP.sh
#VASPCommand=./Convergence.sh
#VASPCommand=./ConvergedDFT.sh

# Set SkipIfDirectoryExists=1 if you do not want to repeat finished tasks
SkipIfDirectoryExists=0

#CIFList=*.cif
CIFList={CIFList}

#============================
# Global parameters
#============================
nCPU=16

CIFFile=auto
SpinPolarized=No
UseConventionalCell=No
UseRecommendedPOTCAR=0
Functional=PAW_PBE54
#Functional=PAW_LDA54

ALGO=All
Precision=High
EDIFF=1.0e-4
EDIFFG=1.0e-3
Options="--Param:LREAL=.FALSE."
#Options="--Param:LREAL=.Auto."

GammaOnly=0
ISMEAR=-5
SIGMA=0.001

PStress=0.0
BandKPoints1=File
BandKPoints2=GY
BandKPoints3=GZ

DoSendMail=0
MakeFilesFromCIF=1
BackUpOriginal=0
DoMD=0
DoVCRelaxRough=0
DoVCRelax=0
ChangeNBANDS=0
ChangeNELECT=0
DoDFTSCF=1
if [ "$HybridFunctional" = "" ]; then
	DoDFTSCF=0
fi
DoSCF=1
CalculateDOS=0
CalculateBand=0
CalculateElectronDensity=0
CalculatePhonon=0
DoPhonopy=0
CalculateIR=0
CalculateRaman=0
MakeSummary=1
DeleteExtraFiles=1
DeleteLargeFiles=1

ENCUTEPS=0.010
kPointEPS=0.010
NBANDSEPS=0.010

CheckaK=1
nkx2=1
nky2=1
nkz2=1
CheckENCUT=1
CheckNBANDS=1

#============================
# Functions
#============================
function SendMail
{
	local EMail=$1
	local SMTPServer=$2
	local MailerName=$3
	local Domain=$4
	local From=$5
	local Title=$6
	local Subject=$7

	if [ "$DoSendMail" = "1" -a "$EMail" != "" ]; then
		echo ' '
		echo '================================================================'
		echo "  Send notification e-mail to [$EMail]"
		echo '================================================================'
		perl $TkPerlDir/Mail/SendMail.pl --SMTPServer=$SMTPServer \
						 --MailerName=$MailerName --Domain=$Domain \
						 --WorkDir=`pwd` --HostName="$HostName" \
						 --To=$EMail --From=$From \
						 --Title=$Title --Subject="$Subject"
	fi
}

function PrintError()
{
	local Message1=$1
	local Message2=$2
	local DoExit=$3
	
	echo " "
	echo "Error: $Message1"
	echo $Message2

	if [ "$DoExit" = "1" ]; then
	  echo Stop.
	  exit
	fi
	
	return $DoExit
}

#===========================
# Perform ConvergedDFT.sh
#===========================
OriginalDir=`pwd`

PrevCIF=
for CIF in $CIFList
do
	echo "for $CIF"
	WorkDir=${CIF%%.*}
	echo Working in $WorkDir...

	if [ -f STOP.`hostname` ]; then
		exit -1
	fi

	if [ "$SkipIfDirectoryExists" = "1" -a -d $WorkDir ]; then
		echo [$WorkDir] exists.
		echo Skip.
		continue
	fi

	mkdir $WorkDir
	echo cp $OriginalDir/{$CIF,Cal*.sh,DoVASP.sh,hosts,*.klist,*.KPOINTS} $WorkDir
	cp $OriginalDir/{$CIF,Cal*.sh,DoVASP.sh,hosts,*.klist,*.KPOINTS} $WorkDir
	chmod +x $WorkDir/*.sh

	cd $WorkDir
	echo === Working in \"`pwd`\"
	echo === Files in \"$wd\"
	ls

	echo ''
	echo === Execute [$VASPCommand]
	$VASPCommand

	echo ''
	echo === Exit to \"$OriginalDir\"
	cd $OriginalDir

	echo ''
	echo ''

	PrevDir=$WorkDir
done

#===========================
# Post processors
#===========================
#$SCRIPTDir/MergePositionsInCIFs.pl --Positions=$iSite 0000.last/SCF MergedCIF.cif
#$SCRIPTDir/MakeSummaryCSV2.pl --Positions=$iSite --AtomType=$AtomType
$SCRIPTDir/MakeSummaryCSV.pl TotalEnergy.csv .

#rm $HistoryFile
#for Template in $TemplateList
#do
#	$AddMDHistoryCMD $HistoryFile $Template
#done
