==== usage ====
* Copy v2xyz and xv2xyz to bin directory
* make sure that you have particular POTCAR in the direscotry with your CONTCAR or XDATCAR
* run v2xyz in the directory with CONTCAR and POTCAR to make CONTCAR.xyz
* run xv2xyz in the directory with CONTCAR and XDATCAR to make answer.xyz movie
==== warning ====
the scripts copy, overwrite and delete some files
* xv2xyz overide CONTCAR, it saves backup to CONTCAR.bak before
* v2xyz and xv2xyz create and delate files *.temp
==== v2xyz: ====
#!/bin/bash
input="CONTCAR"
output="CONTCAR.xyz"
jmena=`grep TITEL POTCAR | cut -b 15- | tr "\n" " "` # chenicke znacky prvku z POTCAR
pocty=`head -n 6 CONTCAR | tail -n 1` # pocty prvku v CONTCAR
echo $jmena
echo $pocty
i=0
for s in $jmena;
do
str2ar[$i]=$s
let i=$i+1
done
#prepare array of atom numbers per element
> elemcol.temp
i=0
for s in $pocty;
do
ii=0
while [ $ii -lt $s ]
do
echo ${str2ar[$i]} >> elemcol.temp # temporary file with element names
let ii=$ii+1
done
let i=$i+1
done
# Sum up pocet prvku
nprvku=`echo $pocty | tr " " "+" | bc`
echo $nprvku
# Extract geometry from vasp format
awk -v L=$nprvku 'BEGIN {
da=0.0
db=0.0
dc=0.0
}
NR==1 {name = $0}
NR==2 {k=$1}
NR==3 {ax=$1; ay=$2; az=$3}
NR==4 {bx=$1; by=$2; bz=$3}
NR==5 {cx=$1; cy=$2; cz=$3}
(NR>8) && (NR<=8+L) {
a=$1; b=$2; c=$3;
a=(a+da)%1
b=(b+db)%1
c=(c+dc)%1
#a=(a+da)%1-da
#b=(b+db)%1-db
#c=(c+dc)%1-dc
x=k*(ax*a+bx*b+cx*c)
y=k*(ay*a+by*b+cy*c)
z=k*(az*a+bz*b+cz*c)
printf "%15.6f%15.6f%15.6f\n", x, y, z
}' $input > xyz.temp
# assemble the whole .xyz file
echo $nprvku > $output
head -n 1 $input >> $output
paste elemcol.temp xyz.temp >> $output
echo "" >> $output
# delete temporary files
rm *.temp
==== xv2xyz: ====
* uses v2xyz
#! /bin/bash
cp CONTCAR CONTCAR.bak
lines=`cat XDATCAR | wc -l`
atoms=`awk -v L=$lines '(NR==6){atoms=0; for(i=1;i<=NF;i++){atoms+=$i};print atoms}' CONTCAR`
records=`awk -v L=$lines -v a=$atoms 'BEGIN{print (L-5)/(a+1)}' CONTCAR`
echo $lines $atoms $records
> answer-.xyz
for ir in `seq 1 $records`; do
echo "image: " $ir
cat CONTCAR.bak | head -8 > CONTCAR
awk -v ir=$ir -v a=$atoms '(NR>(ir-1)*(a+1)+5+1)&&(NR<=ir*(a+1)+5){print $0}' XDATCAR >> CONTCAR
v2xyz # call v2xyz, you should have script "v2xyz" in your /bin directory
awk -v ir=$ir '(NR>NL-2){if(NR==2){print "image #: ",ir}else{print $0}}' CONTCAR.xyz > temp
cat temp >> answer-.xyz
done
awk 'NR>(-1) {if (!($0=="")) print $0}' answer-.xyz > answer.xyz
echo "" >> answer.xyz