#!/bin/bash

# Define programs
rsysd=nohup perl $HOME/bin/Perl/rsys/rsysd.pl
TEE=$HOME/bin/ktee
MXDFileConv=$HOME/bin/MXDFileConv.exe
VASP=nohup vasp
VASPDir=$TkPerlDir/VASP
export "CMD=/usr/bin/perl $VASPDir/VASP.pl"

# Define directories
WorkDir= 
ARGDIR=`pwd`
ARG1=$ARGDIR/INCAR

$rsysd

#====================================
# Common definitions
#====================================
Title=`pwd`
Title=${Title##*/}
EMail=tkamiya@msl.titech.ac.jp
SMTPServer=lucid.msl.titech.ac.jp
Domain=lucid.msl.titech.ac.jp
MailerName=SendMail.pl/DoVASP.sh
From=$EMail

#====================================
# Tasks
#====================================
#Choose '', MakeFilesFromCIF|MD|VCRelaxRough|VCRelax|SCF|DOC|Band|ElectronDensity
StopAfter=
MakeFilesFromCIF=1
BackUpOriginal=1
DoMD=1
DoVCRelaxRough=1
DoVCRelax=1
ChangeNBANDS=0
ChangeNELECT=0
DoSCF=1
CalculateDOS=1
CalculateBand=1
CalculateElectronDensity=1
MakeSummary=1
DeleteExtraFiles=0
DeleteLargeFiles=0
DoSendMail=1

#====================================
# SCF continuation switches
#====================================
MDFromScratch=1
VCRelaxRoughFromScratch=0
VCRelaxFromScratch=0
SCFFromScratch=1
DOSFromScratch=0

#====================================
# MakeCIF parameters
#====================================
CIFFile=aIGZOVO42.cif
UseConventionalCell=No
DefaultFunction=scf
#Functional=PAW|PAW_PBE
Functional=PAW_PBE
#HybridFunctional=|HF|HSE06|PBE0
HybridFunctional=
NKRED=2
ISMEARHybridFunctional=1
SIGMAHybridFunctionl=0.2
SpinPolarized=No
CMDMakeCIF="$CMD --Action=MakeINCAR --UseConventionalCell=$UseConventionalCell \
				 --Function=$DefaultFunction --Functional=$Functional \
				 --HybridFunctional=$HybridFunctional --NKRED=$NKRED \
				 --ISMEARHybridFunctional=$ISMEARHybridFunctional \
				 --SIGMAHybridFunctionl=$SIGMAHybridFunctionl \
				 --SpinPolarized=$SpinPolarized $CIFFile ./"
#echo run [$CMDMakeCIF]
#$CMDMakeCIF

#====================================
# Common parameters
#====================================
PStress=0.0

#====================================
# Modification parameters
#====================================
RemoveAtom=
NBANDS=
NELECT=
CMDRemoveAtom="$CMD --Action=RemoveAtom --iRemoveAtom=$RemoveAtom ."
CMDChangeNBANDS="$CMD --Action=ModifyFiles --Function=scf --NBANDS=$NBANDS $ARG1"
CMDChangeNELECT="$CMD --Action=ModifyFiles --Function=scf --NELECT=$NELECT $ARG1"

#====================================
# MD parameters
#====================================
InitializeVelocity=1
GammaOnlyMD=1
aKProductMD=1.5
ISMEARMD=-1
SIGMAMD=0.1
KeepSymmetryMD=0
NSWMD=200
POTIM=2.0
TEBEG=600
TEEND=800
PrecisionMD=Norm
EDIFFMD=3.0e-4
EDIFFGMD=5.0e-3
CMDMD="$CMD --Action=ModifyFiles --Function=md \
			  --InitializeVelocity=$InitializeVelocity \
			  --HybridFunctional=$HybridFunctional --NKRED=$NKRED \
			  --ISMEARHybridFunctional=$ISMEARHybridFunctional \
			  --SIGMAHybridFunctionl=$SIGMAHybridFunctionl \
			  --Precision=$PrecisionMD --Param:EDIFF=$EDIFFMD --Param:EDIFFG=$EDIFFGMD \
			  --SpinPolarized=$SpinPolarized --PStress=$PStress \
			  --Param:ISMEAR=$ISMEARMD --Param:SIGMA=$SIGMAMD \
			  --Param:NSW=$NSWMD --Param:POTIM=$POTIM --Param:TEBEG=$TEBEG --Param:TEEND=$TEEND \
			  --GammaOnly=$GammaOnlyMD --aKProduct=$aKProductMD \
			  --KeepSymmetry=$KeepSymmetryMD --FromScratch=$MDFromScratch $ARG1"

#====================================
# VCRelaxRough parameters
#====================================
#RelaxModeRough=vc-relax|relax
RelaxModeRough=vc-relax
NSW=300
KeepSymmetryRough=1
aKProductRough=1.5
GammaOnlyVCRelaxRough=1
ISMEARVCRelaxRough=-1
SIGMAVCRelaxRough=0.05
EDIFFRough=3.0e-4
EDIFFGRough=5.0e-3
CMDVCRelaxRough="$CMD --Action=ModifyFiles --Function=$RelaxModeRough \
			  --HybridFunctional=$HybridFunctional --NKRED=$NKRED \
			  --ISMEARHybridFunctional=$ISMEARHybridFunctional \
			  --SIGMAHybridFunctionl=$SIGMAHybridFunctionl \
			  --Precision=Norm --Param:EDIFF=$EDIFFRough --Param:EDIFFG=$EDIFFGRough \
			  --SpinPolarized=$SpinPolarized --PStress=$PStress \
			  --Param:ISMEAR=$ISMEARVCRelaxRough --Param:SIGMA=$SIGMAVCRelaxRough \
			  --Param:NSW=$NSW \
			  --GammaOnly=$GammaOnlyVCRelaxRough --aKProduct=$aKProductRough \
			  --KeepSymmetry=$KeepSymmetryRough --FromScratch=$VCRelaxRoughFromScratch $ARG1"

#====================================
# VCRelax parameters
#====================================
#RelaxMode=vc-relax|relax
RelaxMode=vc-relax
KeepSymmetry=1
aKProductVCRelax=1.5
GammaOnlyVCRelax=1
ISMEARVCRelax=-1
SIGMAVCRelax=0.05
aKProduct=1.7
EDIFF=1.0e-4
EDIFFG=1.0e-3

CommonParameters="--Precision=$Precision --Param:EDIFF=$EDIFF --Param:EDIFFG=$EDIFFG \
			  --HybridFunctional=$HybridFunctional --NKRED=$NKRED \
			  --ISMEARHybridFunctional=$ISMEARHybridFunctional \
			  --SIGMAHybridFunctionl=$SIGMAHybridFunctionl \
			  --SpinPolarized=$SpinPolarized --PStress=$PStress"

CMDVCRelax="$CMD --Action=ModifyFiles --Function=$RelaxMode $CommonParameters \
			 --Param:ISMEAR=$ISMEARVCRelax --Param:SIGMA=$SIGMAVCRelax \
			 --Param:NSW=$NSW \
			 --GammaOnly=$Gamm$GammaOnlyVCRelaxaOnly --aKProduct=$aKProductVCRelax \
			 --KeepSymmetry=$KeepSymmetry --FromScratch=$VCRelaxFromScratch $ARG1"

#====================================
# SCF parameters
#====================================
Precision=High
aKProduct=1.7
GammaOnly=0
ISMEAR=-5
SIGMA=0.03
CalOpticsSCF=1
CSHIFTSCF=0.1
CalVibrationSCF=1
IBRIONSCF=8
LRPASCF=.TRUE.
CMDSCF="$CMD --Action=ModifyFiles --Function=scf $CommonParameters \
			 --Param:ISMEAR=$ISMEAR --Param:SIGMA=$SIGMA \
			 --GammaOnly=$GammaOnly --aKProduct=$aKProduct \
			 --CalOptics=$CalOpticsSCF --CSHIFT=$CSHIFTSCF \
			 --CalVibration=$CalVibrationSCF --IBRION=$IBRIONSCF --LRPA=$LRPASCF \
			 --FromScratch=$SCFFromScratch $ARG1"
#echo run [$CMDSCF]
#$CMDSCF

#====================================
# DOS parameters
#====================================
nMesh=5000
MinEnergy=-35.0
MaxEnergy=15.0
DOSWidth=0.01
CalOpticsDOS=0
CSHIFTDOS=0.1
CalVibrationDOS=0
IBRIONDOS=8
LRPADOS=.FALSE.
CMDDOS="$CMD --Action=ModifyFiles --Function=dos $CommonParameters \
			 --Param:ISMEAR=$ISMEAR --Param:SIGMA=$SIGMA \
			 --GammaOnly=0 --aKProduct=$aKProduct \
			 --DOSMeasreudFromEF=1 --MinEnergy=$MinEnergy --MaxEnergy=$MaxEnergy --nMesh=$nMesh \
			 --CalOptics=$CalOpticsSCF --CSHIFT=$CSHIFTDOS \
			 --CalVibration=$CalVibrationDOS --IBRION=$IBRIONDOS --LRPA=$LRPADOS \
			 --FromScratch=$DOSFromScratch $ARG1"

#====================================
# Band parameters
#====================================
# Set BandKPoints1=File to use *.klist file
BandKPoints1=XG
BandKPoints2=GY
BandKPoints3=GZ
nKPoint=15
CMDBandX="$CMD --Action=ModifyFiles --Function=band $CommonParameters \
			   --Param:ISMEAR=-1 --Param:SIGMA=$SIGMA \
			   --GammaOnly=0 --nKPoint=$nKPoint --KPoints=$BandKPoints1 $ARG1"
CMDBandY="$CMD --Action=ModifyFiles --Function=band $CommonParameters \
			   --Param:ISMEAR=-1 --Param:SIGMA=$SIGMA \
			   --GammaOnly=0 --nKPoint=$nKPoint --KPoints=$BandKPoints2 $ARG1"
CMDBandZ="$CMD --Action=ModifyFiles --Function=band $CommonParameters \
			   --Param:ISMEAR=-1 --Param:SIGMA=$SIGMA \
			   --GammaOnly=0 --nKPoint=$nKPoint --KPoints=$BandKPoints3 $ARG1"

#====================================
# eDensity parameters
#====================================
MinEnergyeDensity=-3.0
MaxEnergyeDensity=3.0
AllSeparated=1
CMDeDensity="$CMD --Action=ModifyFiles --Function=eDensity $CommonParameters \
				  --Param:ISMEAR=$ISMEAR --Param:SIGMA=$SIGMA \
				  --AllSeparated=$AllSeparated \
				  --MinEnergy=$MinEnergyeDensity --MaxEnergy=$MaxEnergyeDensity $ARG1"

#====================================
# Set command line parameters
#====================================
echo ' '
echo '================================================================'
echo '  Change parameters from command line arguments'
echo '================================================================'
while [ $# -gt 0 ]
do
  ARG=$1
  Val=${ARG#*=}
  Key=${ARG%%=*}
  shift
  echo Change parameter $Key to $Val
  eval `echo $Key=$Val`
done


#====================================
# Send EMail
#====================================
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="`hostname`: $Title started"
fi

#====================================
# Make CIF
#====================================
if [ "$MakeFilesFromCIF" = "1" -a "$CMDMakeCIF" != "" ]; then
	echo ' '
	echo '================================================================'
	echo "  Make Input Files from CIF [$CIFFile]"
	echo '================================================================'
	if [ -f $CIFFile ]; then
		echo
	else
		echo Error: [$CIFFile] does not exist.
		exit
	fi
	echo run [$CMDMakeCIF]
	$CMDMakeCIF
fi

if [ "$StopAfter" = "MakeFilesFromCIF" ]; then
	exit;
fi

#====================================
# Remove atom
#====================================
if [ -n "$RemoveAtom" -a "$CMDRemoveAtom" != "" ]; then
	echo ' '
	echo '================================================================'
	echo "  Remove the Atom [$RemoveAtom]: [$CMDRemoveAtom]"
	echo '================================================================'
	cp POSCAR POSCAR.stoichiometry.$RemoveAtom > /dev/null
	$CMDRemoveAtom
fi

#====================================
# Backup to Original directory
#====================================
if [ "$BackUpOriginal" = "1" ]; then
	echo ' '
	echo '================================================================'
	echo "  Backup original files to ./Original"
	echo '================================================================'
	mkdir Original
	cp {INCAR,KPOINTS,POSCAR,POTCAR,*.klist,*.cif,*.CIF,*.sh,*.pl,POSCAR.stoc*} Original > /dev/null
fi

#====================================
# MD
#====================================
if [ "$DoMD" = "1" -a  "$CMDMD" != "" ]; then
	echo ' '
	echo '================================================================'
	echo "  MD run: [$CMDMD]"
	echo '================================================================'
	$CMDMD

	rm *.txt > /dev/null
	$VASP | $TEE `hostname`.out.txt

	$MXDFileConv --Action=VASPConvCONTCAR --DBDir=$(HOME)/bin/rietan --CalcRDF=0 --CoordinationNumber=4 $ARG1
	$MXDFileConv --Action=VASPMakeXSF     --DBDir=$(HOME)/bin/rietan --CalcRDF=0 --CoordinationNumber=4 $ARGDIR/OUTCAR
	cp POSCAR POSCAR.prev > /dev/null
	cp CONTCAR POSCAR > /dev/null

	BackupDir=MD
	mkdir $BackupDir
	cp {INCAR,KPOINTS,POTCAR,POSCAR,OUTCAR,IBZKPT,EIGENVAL,DOSCAR,CONTCAR} $BackupDir > /dev/null
	cp {*.txt,*.cif,*.xsf,DOS*.csv,*.xml,*.html} $BackupDir > /dev/null

#	perl $VASPDir/MakeSummaryHTML.pl
#	RETCODE=$?
#	if [ $RETCODE -ne  0 -a $RETCODE -ne  3 ]; then
#		echo ' '
#		echo "Error: MD terminated incorrectly with return code [$RETCODE]."
#		exit
#	fi
	cp *.html $BackupDir > /dev/null
	rm *.cif *.xsf *.xml *.html > /dev/null
fi

if [ "$StopAfter" = "MD" ]; then
	exit;
fi

#====================================
# VCRelax Rough
#====================================
if [ "$DoVCRelaxRough" = "1"  -a "$CMDVCRelaxRough" != "" ]; then
	echo ' '
	echo '================================================================'
	echo "  VCRelaxRough run: [$CMDVCRelaxRough]"
	echo '================================================================'
	$CMDVCRelaxRough

	rm *.txt > /dev/null
	$VASP | $TEE `hostname`.out.txt

	$MXDFileConv --Action=VASPConvCONTCAR --DBDir=$(HOME)/bin/rietan --CalcRDF=0 --CoordinationNumber=4 $ARG1
	$MXDFileConv --Action=VASPMakeXSF     --DBDir=$(HOME)/bin/rietan --CalcRDF=0 --CoordinationNumber=4 $ARGDIR/OUTCAR
	$CMD --Action=MakeCIF . initial.cif
	cp POSCAR POSCAR.prev > /dev/null
	cp POSCAR POSCAR.initial > /dev/null
	cp CONTCAR POSCAR > /dev/null
	$CMD --Action=MakeCIF . final.cif

	BackupDir=VCRelax1
	mkdir $BackupDir
	cp {INCAR,KPOINTS,POTCAR,POSCAR,POSCAR.initial,OUTCAR,IBZKPT,EIGENVAL,DOSCAR,CONTCAR} $BackupDir > /dev/null
	cp {*.txt,*.cif,*.xsf,DOS*.csv,*.xml,*.html} $BackupDir > /dev/null

	perl $VASPDir/MakeSummaryHTML.pl
	RETCODE=$?
	if [ $RETCODE -ne  0 -a $RETCODE -ne  3 ]; then
		echo ' '
		echo "Error: VCRelaxRough terminated incorrectly with return code [$RETCODE]."
		exit
	fi
	cp *.html $BackupDir > /dev/null
	rm *.cif *.xsf *.xml *.html > /dev/null
fi

if [ "$StopAfter" = "VCRelaxRough" ]; then
	exit;
fi

#====================================
# VCRelax
#====================================
if [ "$DoVCRelax" = "1" ]; then
	echo ' '
	echo '================================================================'
	echo "  VRRelax run: [$CMDVCRelax]"
	echo '================================================================'
	$CMDVCRelax

	rm *.txt *.csv > /dev/null
	$VASP | $TEE `hostname`.out.txt
	$MXDFileConv --Action=VASPConvCONTCAR --DBDir=$(HOME)/bin/rietan --CalcRDF=0 --CoordinationNumber=4 $ARG1
	$MXDFileConv --Action=VASPMakeXSF     --DBDir=$(HOME)/bin/rietan --CalcRDF=0 --CoordinationNumber=4 $ARGDIR/OUTCAR
	cp POSCAR POSCAR.prev > /dev/null
	cp POSCAR POSCAR.initial > /dev/null
	cp CONTCAR POSCAR > /dev/null
	$CMD --Action=MakeDOSCSV --Width=$DOSWidth --IgnoreZero=0 DOSCAR DOS-up.csv DOS-dn.csv

	BackupDir=VCRelax
	mkdir $BackupDir
	cp {INCAR,KPOINTS,POTCAR,POSCAR,POSCAR.initial,OUTCAR,IBZKPT,EIGENVAL,DOSCAR,CONTCAR} $BackupDir > /dev/null
	cp {*.txt,*.cif,*.xsf,DOS*.csv} $BackupDir > /dev/null

	perl $VASPDir/MakeSummaryHTML.pl
	RETCODE=$?
	if [ $RETCODE -ne  0 ]; then
		echo ' '
		echo "Error: VCRelax terminated incorrectly with return code [$RETCODE]."
		exit
	fi
	cp *.html $BackupDir > /dev/null
	rm *.cif *.xsf *.xml *.html > /dev/null
fi

if [ "$StopAfter" = "VCRelax" ]; then
	exit;
fi

#====================================
# Change NBANDS
#====================================
if [ "$ChangeNBANDS" = "1" -a "$NBANDS" != "" -a "$CMDChangeNBANDS" != "" ]; then
	echo ' '
	echo '================================================================'
	echo "  Change NBANDS run for NBANDS=[$NBANDS]: [$CMDChangeNBANDS]"
	echo '================================================================'
	$CMDChangeNBANDS
fi

#====================================
# Change NELECT
#====================================
if [ "$ChangeNELECT" = "1" -a "$NELECT" != "" -a "$CMDChangeNELECT" != "" ]; then
	echo ' '
	echo '================================================================'
	echo "  Change NELECT run for NBANDS=[$NELECT]: [$CMDChangeNELECT]"
	echo '================================================================'
	$CMDChangeNELECT
fi

#====================================
# SCF
#====================================
if [ "$DoSCF" = "1" ]; then
	echo ' '
	echo '================================================================'
	echo "  SCF run: [$CMDSCF]"
	echo '================================================================'
	$CMDSCF
	rm *.txt *.csv *.xsf > /dev/null
	$VASP | $TEE `hostname`.out.txt
	$CMD --Action=MakeDOSCSV --Width=$DOSWidth --IgnoreZero=0 DOSCAR DOS-up.csv DOS-dn.csv

	if [ "$CalVibrationSCF" == "1" -o "$CalOpticsSCF" == "1" ]; then
		perl $VASPDir/SummarizeProperties.pl OUTCAR Optics.csv Vibration.txt Vibration.xsf
	fi

	BackupDir=SCF
	mkdir $BackupDir
	cp {INCAR,KPOINTS,POTCAR,POSCAR,OUTCAR,IBZKPT,EIGENVAL,DOSCAR,WAVECAR,CHG,CHGCAR} $BackupDir > /dev/null
	cp {*.txt,Optics.csv,DOS*.csv,*.xsf,*.xml} $BackupDir > /dev/null

	perl $VASPDir/MakeSummaryHTML.pl
	RETCODE=$?
	if [ $RETCODE -ne  0 ]; then
		echo ' '
		echo "Error: SCF terminated incorrectly with return code [$RETCODE]."
		exit
	fi
	cp *.html $BackupDir > /dev/null
	rm Optics.csv Vibration.txt DOS*.csv *.xsf *.html *.xml > /dev/null
fi

if [ "$StopAfter" = "SCF" ]; then
	exit;
fi

#====================================
# DOS
#====================================
if [ "$CalculateDOS" = "1" -a "$CMDDOS" != "" ]; then
	echo ' '
	echo '================================================================'
	echo "  DOS run: [$CMDDOS]"
	echo '================================================================'
	$CMDDOS
	rm *.txt *.csv *.xsf > /dev/null
	$VASP | $TEE `hostname`.out.txt
	$CMD --Action=MakeDOSCSV --Width=$DOSWidth --IgnoreZero=0 DOSCAR DOS-up.csv DOS-dn.csv

	if [ "$CalVibrationDOS" == "1" -o "$CalOpticsDOS" == "1" ]; then
		perl $VASPDir/SummarizeProperties.pl OUTCAR Optics.csv Vibration.txt Vibration.xsf
	fi

	BackupDir=DOS
	mkdir $BackupDir
	cp {INCAR,KPOINTS,POTCAR,POSCAR,OUTCAR,IBZKPT,EIGENVAL,DOSCAR}  $BackupDir > /dev/null
	cp {*.txt,Optics.csv,DOS*.csv,*.xsf}  $BackupDir > /dev/null

	perl $VASPDir/MakeSummaryHTML.pl
	RETCODE=$?
	if [ $RETCODE -ne  0 ]; then
		echo ' '
		echo "Error: DOS terminated incorrectly with return code [$RETCODE]."
		exit
	fi
	cp *.html $BackupDir > /dev/null
	rm Optics.csv Vibration.txt DOS*.csv *.xsf *.xml *.html > /dev/null
fi

if [ "$StopAfter" = "DOS" ]; then
	exit;
fi

#====================================
# Band
#====================================
if [ "$CalculateBand" = "1" ]; then
	if [ "$BandKPoints1" != "" -a "CMDBandX" != "" ]; then
		echo ' '
		echo '================================================================'
		echo "  Band1 run for Band=[$Band1]: [$CMDBandX]"
		echo '================================================================'
		$CMDBandX
		rm *.txt *.csv > /dev/null
		$VASP | $TEE `hostname`.out.txt
		BackupDir=BandX
		mkdir $BackupDir
		cp {INCAR,KPOINTS,POTCAR,POSCAR,OUTCAR,IBZKPT,EIGENVAL,DOSCAR,*.txt} $BackupDir > /dev/null

		perl $VASPDir/MakeSummaryHTML.pl
		RETCODE=$?
		if [ $RETCODE -ne  0 ]; then
			echo ' '
			echo "Error: Band1 terminated incorrectly with return code [$RETCODE]."
			exit
		fi
		cp *.html $BackupDir > /dev/null
	fi

	if [ "$StopAfter" = "BandX" ]; then
		exit;
	fi

	if [ "$BandKPoints1" != "File" -a "$BandKPoints2" != "" -a "CMDBandY" != "" ]; then
		echo ' '
		echo '================================================================'
		echo "  Band1 run for Band=[$Band2]: [$CMDBandY]"
		echo '================================================================'
		$CMDBandY
		rm *.txt *.csv > /dev/null
		$VASP | $TEE `hostname`.out.txt
		BackupDir=BandY
		mkdir $BackupDir
		cp {INCAR,KPOINTS,POTCAR,POSCAR,OUTCAR,IBZKPT,EIGENVAL,DOSCAR,*.txt} $BackupDir > /dev/null

		perl $VASPDir/MakeSummaryHTML.pl
		RETCODE=$?
		if [ $RETCODE -ne  0 ]; then
			echo ' '
			echo "Error: Band2 terminated incorrectly with return code [$RETCODE]."
			exit
		fi
		cp *.html $BackupDir > /dev/null
	fi

	if [ "$StopAfter" = "BandY" ]; then
		exit;
	fi

	if [ "$BandKPoints1" != "File" -a "$BandKPoints3" != "" -a "CMDBandZ" != "" ]; then
		echo ' '
		echo '================================================================'
		echo "  Band1 run for Band=[$Band3]: [$CMDBandZ]"
		echo '================================================================'
		$CMDBandZ
		rm *.txt *.csv > /dev/null
		$VASP | $TEE `hostname`.out.txt
		BackupDir=BandZ
		mkdir $BackupDir
		cp {INCAR,KPOINTS,POTCAR,POSCAR,OUTCAR,IBZKPT,EIGENVAL,DOSCAR,*.txt} $BackupDir > /dev/null

		perl $VASPDir/MakeSummaryHTML.pl
		RETCODE=$?
		if [ $RETCODE -ne  0 ]; then
			echo ' '
			echo "Error: DOS terminated incorrectly with return code [$RETCODE]."
			exit
		fi
		cp *.html $BackupDir > /dev/null

		echo ' '
		echo '================================================================'
		echo "  Merge Bands to BandTotal/EIGENVAL"
		echo '================================================================'
		rm EIGENVAL > /dev/null
		$CMD --Action=AddEIGENVAL --InverseOrder=No  BandX/EIGENVAL EIGENVAL
		$CMD --Action=AddEIGENVAL --InverseOrder=No  BandY/EIGENVAL EIGENVAL
		$CMD --Action=AddEIGENVAL --InverseOrder=Yes BandY/EIGENVAL EIGENVAL
		$CMD --Action=AddEIGENVAL --InverseOrder=No  BandZ/EIGENVAL EIGENVAL
		$CMD --Action=RepairEIGENVAL EIGENVAL
		BackupDir=BandTotal
		mkdir $BackupDir
		cp BandX/{INCAR,KPOINTS,POSCAR,POTCAR} $BackupDir > /dev/null
		cp {SCF/OUTCAR,EIGENVAL} $BackupDir > /dev/null
	fi

	if [ "$StopAfter" = "BandZ" ]; then
		exit;
	fi
fi

if [ "$StopAfter" = "Band" ]; then
	exit;
fi

#====================================
# Electron density
#====================================
if [ "$CalculateElectronDensity" = "1" -a "$CMDeDensity" != "" ]; then
	echo ' '
	echo '================================================================'
	echo "  eDensity run: [$CMDeDensity]"
	echo '================================================================'
	$CMDeDensity
	rm *.txt *.csv > /dev/null
	$VASP | $TEE `hostname`.out.txt
	$CMD --Action=ChangeDensityFileNames --EnergyRange=3.0 --RemoveExtention=0 $ARGDIR

	BackupDir=eDensity
	mkdir $BackupDir
	cp {INCAR,KPOINTS,POTCAR,POSCAR,OUTCAR,IBZKPT,EIGENVAL,DOSCAR,*.txt} $BackupDir > /dev/null
	mv PARCH*   $BackupDir
	mv *.vasp   $BackupDir
	mv LOCPOT   $BackupDir/LOCPOT.vasp
	mv ELFCAR   $BackupDir/ELFCAR.vasp

	perl $VASPDir/MakeSummaryHTML.pl
	RETCODE=$?
	if [ $RETCODE -ne  0 ]; then
		echo ' '
		echo "Error: eDensity terminated incorrectly with return code [$RETCODE]."
		exit
	fi
	cp *.html $BackupDir > /dev/null

fi

if [ "$StopAfter" = "ElectronDensity" ]; then
	exit;
fi

#====================================
# Clean up files
#====================================
if [ "$DeleteExtraFiles" = "1" ]; then
	echo ' '
	echo '================================================================'
	echo "  Clean up files"
	echo '================================================================'
	rm {*.prev,*.vc-*,*.relax,*.scf,*.dos,*.band,*.remove*,*.stoichi*} > /dev/null
	rm {EIGENVAL,ELFCAR,LOCPOT} > /dev/null
	rm {CONTCAR,DOSCAR,OUTCAR} > /dev/null
	rm {OSZICAR,PCDAT,XDATCAR,PROCAR,WAVE*,CHG*} > /dev/null
	rm {DOS-*.csv,*.out} > /dev/null
	rm {*.txt,*.xml,IBZ*} > /dev/null
	rm Band*/DOS* > /dev/null
#	rm SCF/DOS* > /dev/null
	rm VCRelax/DOS* > /dev/null
	rm VCRelax1/DOS* > /dev/null
fi
if [ "$DeleteLargeFiles" = "1" ]; then
	echo ' '
	echo '================================================================'
	echo "  Delete large fils (WAVCAR,CHG,CHGCAR)"
	echo '================================================================'
	rm SCF/{WAVE*,CHG*} > /dev/null
fi

#====================================
# Make Summary
#====================================
if [ "$MakeSummary" = "1" ]; then
	echo ' '
	echo '================================================================'
	echo "  Make summary to Summarize.txt and Summarize-SpinPolarized.txt"
	echo '================================================================'
	perl $VASPDir/Summarize2.pl ./ > Summarize.txt
	perl $VASPDir/Summarize.pl  ./ > Summarize-SpinPolarized.txt
fi

#====================================
# Send EMail
#====================================
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="`hostname`: $Title completed"
fi
