#!/bin/bash file=$1 init=$2 atom=$3 if [ -n "$4" ]; then ref=$4 else ref=$atom fi echo "atom number $ref is used as a reference ..." echo scale=`sed -n 2p $file` X1=`sed -n 3p $file | awk '{ print $1 }'` X2=`sed -n 3p $file | awk '{ print $2 }'` X3=`sed -n 3p $file | awk '{ print $3 }'` Y1=`sed -n 4p $file | awk '{ print $1 }'` Y2=`sed -n 4p $file | awk '{ print $2 }'` Y3=`sed -n 4p $file | awk '{ print $3 }'` Z1=`sed -n 5p $file | awk '{ print $1 }'` Z2=`sed -n 5p $file | awk '{ print $2 }'` Z3=`sed -n 5p $file | awk '{ print $3 }'` export X1 X2 X3 export Y1 Y2 Y3 export Z1 Z2 Z3 ((offset=8)) echo "final:" echo "scale: $scale" echo "X: $X1 $X2 $X3" echo "Y: $Y1 $Y2 $Y3" echo "Z: $Z1 $Z2 $Z3" ((line1=atom+offset)) temp="`sed -n ${line1}p $1`" xa=`echo $temp | awk '{ print $1 }'` ya=`echo $temp | awk '{ print $2 }'` za=`echo $temp | awk '{ print $3 }'` echo "(x,y,z) = $xa $ya $za $scale" results=`echo "$xa $ya $za $scale" | \ awk ' \ BEGIN { X1=ENVIRON["X1"]; X2=ENVIRON["X2"]; X3=ENVIRON["X3"] Y1=ENVIRON["Y1"]; Y2=ENVIRON["Y2"]; Y3=ENVIRON["Y3"] Z1=ENVIRON["Z1"]; Z2=ENVIRON["Z2"]; Z3=ENVIRON["Z3"] } { X=sqrt(X1^2+X2^2+X3^2) Y=sqrt(Y1^2+Y2^2+Y3^2) Z=sqrt(Z1^2+Z2^2+Z3^2) x=$1*X if(x>1.0) x-=1.0; if(x<-1.0) x+=1.0; y=$2*Y if(y>1.0) y-=1.0; if(y<-1.0) y+=1.0; z=$3*Z if(z>1.0) z-=1.0; if(z<-1.0) z+=1.0; print x*$4 " " y*$4 " " z*$4 }'` xf=`echo $results | awk '{ print $1 }'` yf=`echo $results | awk '{ print $2 }'` zf=`echo $results | awk '{ print $3 }'` echo "---> $xf $yf $zf" file=$init scale=`sed -n 2p $file` X1=`sed -n 3p $file | awk '{ print $1 }'` X2=`sed -n 3p $file | awk '{ print $2 }'` X3=`sed -n 3p $file | awk '{ print $3 }'` Y1=`sed -n 4p $file | awk '{ print $1 }'` Y2=`sed -n 4p $file | awk '{ print $2 }'` Y3=`sed -n 4p $file | awk '{ print $3 }'` Z1=`sed -n 5p $file | awk '{ print $1 }'` Z2=`sed -n 5p $file | awk '{ print $2 }'` Z3=`sed -n 5p $file | awk '{ print $3 }'` export X1 X2 X3 export Y1 Y2 Y3 export Z1 Z2 Z3 ((offset=8)) echo echo "initial:" echo "scale: $scale" echo "X: $X1 $X2 $X3" echo "Y: $Y1 $Y2 $Y3" echo "Z: $Z1 $Z2 $Z3" ((line1=ref+offset)) temp="`sed -n ${line1}p $file`" xa=`echo $temp | awk '{ print $1 }'` ya=`echo $temp | awk '{ print $2 }'` za=`echo $temp | awk '{ print $3 }'` echo "(x,y,z) = $xa $ya $za $scale" results=`echo "$xa $ya $za $scale" | \ awk ' \ BEGIN { X1=ENVIRON["X1"]; X2=ENVIRON["X2"]; X3=ENVIRON["X3"] Y1=ENVIRON["Y1"]; Y2=ENVIRON["Y2"]; Y3=ENVIRON["Y3"] Z1=ENVIRON["Z1"]; Z2=ENVIRON["Z2"]; Z3=ENVIRON["Z3"] } { X=sqrt(X1^2+X2^2+X3^2) Y=sqrt(Y1^2+Y2^2+Y3^2) Z=sqrt(Z1^2+Z2^2+Z3^2) x=$1*X if(x>1.0) x-=1.0; if(x<-1.0) x+=1.0; y=$2*Y if(y>1.0) y-=1.0; if(y<-1.0) y+=1.0; z=$3*Z if(z>1.0) z-=1.0; if(z<-1.0) z+=1.0; print x*$4 " " y*$4 " " z*$4 }'` xi=`echo $results | awk '{ print $1 }'` yi=`echo $results | awk '{ print $2 }'` zi=`echo $results | awk '{ print $3 }'` echo "---> $xi $yi $zi" echo echo -en "displacement: " echo $xf $yf $zf $xi $yi $zi | awk '{ print $1-$4 " " $2-$5 " " $3-$6 }' echo