#!/bin/bash
# use -x option for debug

HostName=`hostname`

#==========================================
# Define programs: Usually no need to edit
#==========================================
export PerlPath=perl
export PythonPath=python

export TkProgramsDir=$DataRoot
export TkProgramsBinDir=$DataRoot/bin

export MyAppDir=$DataRoot/bin
export BaderDir=$MyAppDir/Bader
export LDDir=$MyAppDir/LD
export RamanSCDir=$MyAppDir/raman-sc
export BaderCMD="$BaderDir/bader"
export EnergyPath=$LDDir/energy

export VASPDir=$TkPerlDir/VASP
export VASPScriptDir=$VASPDir/script


export "CMD=$PerlPATH $VASPDir/VASP.pl"
export VASPFSCMD="$PerlPATH $VASPDir/VASPFS.pl"
export VASPLDCMD="$PerlPATH $VASPDir/VASPLD.pl"

export "PHONOPYplCMD=$PerlPATH $VASPDir/Phonopy.pl"
export "WIEN2kplCMD=$PerlPATH $TkPerlDir/WIEN2k/WIEN2k.pl"

export MakeCIFCMD="$CMD --Action=ConvCONTCARFiles"
export MakeXSFCMD="$CMD --Action=MakeRelaxXSFFile --kMagnetization=0.8 --ArrowColor=255:0:0 --ArrowRadius=0.2"
export MakeSymmetrizedCIFCMD="$WIEN2kplCMD --Action=MakeSymmetrizedStructFile --TOL=0.001 *-final.cif out.struct"

export CalIRCMD=$VASPScriptDir/CalIR.sh
export CalRamanCMD=$RamanSCDir/vasp_raman.py
export DoPhonopyTemplatePath=$VASPScriptDir/DoPhonopy-Template20180418.sh
export DoPhonopyCMD=DoPhonopy.sh

#====================================================
# Initialization: No need to edit
#====================================================
ThisScript=$0
BaseDir=`pwd`
OriginalDir=$BaseDir
WorkDir= 
ARGDIR=$BaseDir

Action=$1
Arg1=$2
Arg2=$3
Arg3=$4
Arg4=$5

#============================
# Functions
#============================
function help
{
	echo "DoVASP.sh [init|scratch|super|help]"
	echo
	exit
}

#====================================
# Show help
#====================================
if [ "$Action" = "" -o "$Action" = "help" ]; then
	help
fi

#====================================
# Make CIF
#====================================
CIFFile=auto
UseRecommendedPOTCAR=0
BurstPOTCAR=0
#MPIParams="--Param:NPAR=$NPAR --Param:KPAR=$KPAR --Param:LPLANE=.TRUE."
MPIParams=

MakeCIFOption="--UseConventionalCell=$UseConventionalCell \
	--UseRecommendedPOTCAR=$UseRecommendedPOTCAR --Function=scf \
	--HybridFunctional=$HybridFunctional \
	--BurstPOTCAR=$BurstPOTCAR \
	$MPIParams $MakeCIFParams $AdditionalParameters \
	--SpinOrbit=$SpinOrbitForIonDynamics --NonCollinear=$NonCollinear --LMAXMIX=$LMAXMIX \
	--SpinPolarized=$SpinPolarized $CIFFile ./"

CMDMakeCIF="$CMD --Action=MakeINCAR --Functional=$Functional \
	    --METAGGA=$METAGGA --CMBJ=$CMBJ --LASPH=$LASPH --IMIX=$IMIX \
	    $MakeCIFOption"

if [ "$Action" = "init" ]; then
	echo ' '
	echo '================================================================'
	echo "  Make Input Files from CIF [$CIFFile]"
	echo '================================================================'
	if [ "$CIFFile" = "auto" -o -f $CIFFile ]; then
		echo
	else
		echo Error: [$CIFFile] does not exist.
		exit
	fi

	echo run [$CMDMakeCIF]
	$CMDMakeCIF
	cp POTCAR POTCAR.DFT

	echo

	exit;
fi

if [ "$Action" = "scratch" ]; then
	echo ' '
	echo '================================================================'
	echo "  Restore initial files from Original and clean up"
	echo '================================================================'
	chmod -w DoVASP.sh
	rm -rif MD VCRelax* DFTSCF SCF DOS Band* Mass* eDensity Phonon* IR* Raman*
	rm *
	chmod +w DoVASP.sh
	mv Original/* .
	rm -rif Original
	rm *-Primitive.cif

	echo

	exit;
fi

if [ "$Action" = "super" ]; then
	echo ' '
	echo '================================================================'
	echo "  Make Supercell from CIF [$CIFFile]"
	echo '================================================================'
	cmd="$VASPDir/MakeStructureModel.pl --Action=shift --Shift=0,0,0 --OutputFile=supercell${Arg2}x${Arg3}x${Arg4}.cif $Arg1:$Arg2,$Arg3,$Arg4"
	echo run [$cmd]
	if [ "$Arg4" = "" ]; then
		echo usage: DoVASP.sh super CIF_FileName nx ny nz
		exit
	fi

	$cmd

	echo
	
	exit;
fi


#====================================
# Invalid Action
#====================================
echo 
echo Invalid Action [$Action]
help
exit

