==== 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