#!/bin/bash

VASPDir=$TkPerlDir/VASP
PerlPath=/usr/bin/perl
CMD="$PerlPath $VASPDir/VASP.pl"

#UseCalculatedPOSCAR=$1
SCRIPTDir=$1
TemplateDir=$2
TemplateSuffixArray=($3)
xarray=($4)
yarray=($5)
iSite=$6
post=$7
DebugMode=0

COPYPOCARFLAGPath="$PerlPath $SCRIPTDir/CopyPOSCARFlags2.pl"

ny=${#yarray[@]}
nx=${#xarray[@]}
nt=${#TemplateSuffixArray[@]}

#lastxy=

#if [ "$UseCalculatedPOSCAR" = "" ]; then
#	echo UseCalculatedPOSCAR is not specified.
#	echo usage: CalcMap-MultiStep.sh UseCalculatedPOSCAR iSite
#	exit 0
#fi
if [ "$iSite" = "" ]; then
	echo iSite is not specified.
	echo usage: CalcMap-MultiStep.sh UseCalculatedPOSCAR iSite
	exit 0
fi

for ((iy = 0; iy < $ny; iy++)) {
#	iym1=`expr $iy - 1`
	y=${yarray[$iy]}

#	if [ "$UseCalculatedPOSCAR" = "1" ]; then
#		if [ $iy -gt 0 ]; then
#			ym1=${yarray[$iym1]}
#			x0=${xarray[0]}
#			SourcePOSCAR=$x0$ym1$post/VCRelax/POSCAR
#			cp $SourcePOSCAR Original
#		fi
#	fi

	for ((ix = 0; ix < $nx; ix++)) {
#		ixm1=`expr $ix - 1`
		x=${xarray[$ix]}

#================================
# Main calculation
#================================
		PrevDir=""
		for ((it = 0; it < $nt; it++)) {
			iTemplate=${TemplateSuffixArray[$it]}

			postT=${post}.$iTemplate
			WorkDir=$x$y$postT
echo "check template=$iTemplate [it = $it]"
echo "  Work dir [$WorkDir] [PrevDir = $PrevDir]"

# Skip if another script runs this series of calculation
#   judged by it > 0 && PrevDir=''
			if [ $it -gt 0 ]; then
				if [ "$PrevDir" = "" ]; then
					echo Another program would run this series of calculations
					echo Skip.
					continue
				fi
			fi
			
			if [ ! -f $TemplateDir/POSCAR$postT ]; then
				echo $TemplateDir/POSCAR$postT does not exist. Skip.
				continue
			fi

			if [ -d $WorkDir ]; then
				echo "[Work]: [$WorkDir] exists. Skip."
			else
				echo Work for [$WorkDir]

				mkdir $WorkDir
# Copy base files from TemplateDir to WorkDir
				echo cp $TemplateDir/{hosts,INCAR,KPOINTS,POTCAR} $WorkDir
				cp $TemplateDir/{hosts,INCAR,KPOINTS,POTCAR} $WorkDir

# Copy DoVASP.sh from TemplateDir to WorkDir
				if [ -f $TemplateDir/DoVASP.sh.$iTemplate ]; then
					echo cp $TemplateDir/DoVASP.sh.$iTemplate $WorkDir/DoVASP.sh
					cp $TemplateDir/DoVASP.sh.$iTemplate $WorkDir/DoVASP.sh
				else 
					echo cp $TemplateDir/DoVASP.sh $WorkDir/DoVASP.sh
					cp $TemplateDir/DoVASP.sh $WorkDir/DoVASP.sh
				fi

# Copy POSCAR from TemplateDir/PrevDir to WorkDir
				if [ "$PrevDir" = "" ]; then
					echo PrevDir is not defined
					echo cp $TemplateDir/POSCAR.$iTemplate $WorkDir/POSCAR
					cp $TemplateDir/POSCAR.$iTemplate $WorkDir/POSCAR
				else
					echo PrevDir [$PrevDir] found
					echo cp $PrevDir/POSCAR $WorkDir/POSCAR
					cp $PrevDir/POSCAR $WorkDir/POSCAR
				fi

# Copy template POSCAR flags to WorkDir
				$COPYPOCARFLAGPath $WorkDir $TemplateDir/POSCAR.$iTemplate $WorkDir/POSCAR

# Copy the final POSCAR to WorkDir
#				if [ "$UseCalculatedPOSCAR" = "1" ]; then
#					SourcePOSCAR=${xarray[$ixm1]}$y$post/VCRelax/POSCAR
#					if [ -f "$SourcePOSCAR" ]; then
#						cp $SourcePOSCAR $TemplateDir
#					elif [ "$lastxy" != "" ]; then
#						SourcePOSCAR=$lastxy/VCRelax/POSCAR
#						if [ -f "$SourcePOSCAR" ]; then
#							cp $SourcePOSCAR $TemplateDir
#						fi
#					elif [ $iy -gt 0 ]; then
#						SourcePOSCAR=${xarray[$iym1]}$post/VCRelax/POSCAR
#						if [ -f $SourcePOSCAR ]; then
#							cp $SourcePOSCAR $TemplateDir
#						fi
#					fi
#				fi

#================================
# Execute VASP
#================================
				if [ "$DebugMode" = "1" ]; then
					PrevDir=$WorkDir
				else
					$SCRIPTDir/NextCalc-MultiStep.sh $TemplateDir $WorkDir $iSite 0.$x 0.$y $postT

#================================
# Copy to symmetry positions
#================================
					$SCRIPTDir/ExpandSymmetry.sh $iSite $x $y $postT
				fi
				PrevDir=$WorkDir
			fi
		}
	}
#	lastxy=
}

exit 1
