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

#==========================================
# Prameters
#==========================================

script_dir=${0%/*}
if [ -e $script_dir/vasp_config.sh ]; then
	. $script_dir/vasp_config.sh
elif [ -e $DataRoot/scripts/vasp_config.sh ]; then
	. $DataRoot/scripts/vasp_config.sh
else
	echo 
	echo *** ERROR: Can not find [$script_dir/vasp_config.sh] nor [$DataRoot/scripts/vasp_config.sh]
	echo
	exit
fi
if [ -e $script_dir/vasp_params.sh ]; then
	. $script_dir/vasp_params.sh
fi


#RelaxMode=vc-relax|relax
RelaxMode=vc-relax

PrecisionRelax2=Accurate
#PrecisionRelax2=Norm
EDIFFRelax2=1.0e-4
EDIFFGRelax2=-1.0e-3
ALGORelax2=$ALGOCommon
GammaOnlyRelax2=0
aKProductRelax2=2.5
#aKProductRelax2=2.0
#aKProductRelax2=1.5
#aKProductRelax2=fix:8/2,8/2,6/3
ISMEARRelax2=0
#ISMEARRelax2=-5
SIGMARelax2=0.1


NKREDRelax2=$NKREDCommon
HybridALGORelax2=$HybridALGOCommon
ISMEARHybridFunctionalRelax2=$ISMEARHybridFunctionalCommon
SIGMAHybridFunctionalRelax2=$SIGMAHybridFunctionalCommon

#KeepSymmetryRelax2=0
KeepSymmetryRelax2=1

NSWRelax2=300
POTIMRelax2=$POTIMCommon

LELFRelax2=.FALSE.

#====================================================
# Relax command
#====================================================
#MPIParamsRelax2="--Param:NPAR=$NPAR --Param:KPAR=$KPAR --Param:LPLANE=.TRUE."
MPIParamsRelax2=$MPIParamsCommon

# For phonon, use LREAL=.FALSE. and large ENCUT like 500 eV
# For usual DFT use default for ENCUT (comment out) and LREAL=Auto
AdditionalParametersRelax2=$AdditionalParametersCommon
#AdditionalParametersRelax2="--Param:LREAL=Auto"
#AdditionalParametersRelax2="--Param:LREAL=Auto --Param::LWANNIER90_RUN=.FALSE."
#AdditionalParametersRelax2="--Param:LREAL=Auto --NBANDS=x2"
#AdditionalParametersRelax2="--Param:LREAL=.FALSE. --NBANDS=64 --Param:SYMPREC=1e-4";
#AdditionalParametersRelax2="--Param:LREAL=Auto --NBANDS=64 --ENCUT=500"
#AdditionalParametersRelax2="--Param:LREAL=.FALSE. --ENCUT=500"

CommonParametersRelax2="--SpinOrbit=$SpinOrbitForIonDynamics --NonCollinear=$NonCollinear --LMAXMIX=$LMAXMIX \
	--SpinPolarized=$SpinPolarized"
HFParametersRelax2="--HybridFunctional=$HybridFunctional \
	--NKRED=$NKREDRelax2 \
	--ISMEARHybridFunctional=$ISMEARHybridFunctionalRelax2 \
	--SIGMAHybridFunctional=$SIGMAHybridFunctionalRelax2"
PrecisionParametersRelax2="--Precision=$PrecisionRelax2 --Param:EDIFF=$EDIFFRelax2 --Param:EDIFFG=$EDIFFGRelax2 \
	--Param:ISMEAR=$ISMEARRelax2 --Param:SIGMA=$SIGMARelax2 \
	--Param:ALGO=$ALGORelax2 --Param:LELF=$LELFRelax2 \
	--GammaOnly=$GammaOnlyRelax2 --aKProduct=$aKProductRelax2"

CMDVCRelax="$CMD --Action=ModifyFiles --Function=$RelaxMode \
	$MPIParamsRelax2 \
	$CommonParametersRelax2 \
	$HFParametersRelax2 \
	$PrecisionParametersRelax2 \
	$AdditionalParametersRelax2 \
	--KeepSymmetry=$KeepSymmetryRelax2 \
	--PStress=$PStressRelax2 \
	--Param:NSW=$NSWRelax2 \
	--Param:POTIM=$POTIMRelax2 \
	$ARG1"

#====================================
# Relax
#====================================
echo ' '
echo '================================================================'
echo "  Modify input files for Relax2: [$CMDVCRelax]"
echo '================================================================'

$CMDVCRelax

if [ "$UseDBRWIGs" = "1" ]; then
	$CMD --Action=ChangeRWIGS --RWIGSDB=$RWIGSDB . INCAR.RWIGS
	cp INCAR INCAR.prev
	cp INCAR.RWIGS INCAR
fi

echo 
echo ======================================================================
echo vasp_modify_relax2.sh finished.
echo ======================================================================
echo 
