#!/bin/bash 


ulimit -s  unlimited 


 case=`echo $PWD | awk -F "/" ' {  split($0,pole,"/") ; print pole[NF] } ' ` 
  echo "case = $case" 

 parentCase=`echo $PWD | awk -F "/" ' {  split($0,pole,"/") ; print pole[NF-1] } ' ` 
  echo "parentCase = $parentCase" 

 
  parentDirectory=${PWD%%/${case}} 
   echo "parent directory: " 
   echo $parentDirectory 
      
    mySCRATCH=${parentDirectory} 
      
 
   cd ${mySCRATCH}/${case}  
  echo "in $PWD" 
         
echo "running in $PWD"

# Czech ZDE means HERE  
ZDE=$PWD 

#ls 
printf "\n" 


  test -d hiddenBox &&  rm -r hiddenBox 
  mkdir hiddenBox  
  if test -f BACKUPvol.struct 
 then 
  mv BACKUPvol.struct hiddenBox/ 
  for i in  A*.scf  
   do 
   test $i = ${case}.scf ||  mv $i  hiddenBox/ 
   done 

   cd hiddenBox 
   test -f A*B*.scf &&  rm A*B*.scf 
  echo "Before running cellShapeOrtho hiddenBox now contains: " 
  cd .. 
  ls hiddenBox

 else 
  echo "could not find the file BACKUPvol.struct" 
  echo "you probably want to optimize only the orthorhombic cell shape" 
 rmdir hiddenBox 
 fi 


 function Computing() { 
 
 source compute.job 
 
 } # function Computing 



#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

 case=`echo $ZDE | awk -F "/" ' {  split($0,pole,"/") ; print pole[NF] } ' ` 
  echo "case = $case" 

 
  parentDirectory=${ZDE%%/${case}} 
   echo "parent directory: " 
   echo $parentDirectory 

  export mySCRATCH=$parentDirectory       

   cd ${mySCRATCH}/${case}  
  echo "in $PWD" 
         
         

   
  if test -f BACKUP.struct 
   then 
   echo "File BACKUP.struct already exists" 
   echo "Probably a second run" 
   echo "Therefore copying the structure backup BACKUP.struct to ${case}.struct" 
    cp   BACKUP.struct ${case}.struct 
   else  
 echo "Making backup of ${case}.struct to  BACKUP.struct" 
   cp  ${case}.struct BACKUP.struct 
   fi 


 if test -f A0.0B0.0.scf 
 then 
echo "file A0.0B0.0.scf already exists" 
echo "no computing this time ... probably second rund of this script " 
  else 
      test -f *.broyd* &&  rm *.broyd*
      test -f *.error* &&  rm *.error*

       Computing 
     echo y | clean_lapw -s 
    cp ${case}.scf  A0.0B0.0.scf 
 fi 


   ENE=`grep :ENE A0.0B0.0.scf | tail -1 | awk ' { print $9 } '` 
   echo "energy: $ENE " 
  
  
   test -f ENE && mv ENE ENE.old  
  for i in A0.0B0.0.scf  
  do 

    grep :LAT $i | tail -1 | awk ' { printf "%.6f \t %.6f \t %.6f \t", $5, $6, $7 } '  
   grep :ENE $i | tail -1 | awk ' { printf "%.6f \n", $9 } '   
   done > ENE 


  test -f soubor.txt && rm soubor.txt 
  awk ' { printf "%.7f \t %.7f \n", $3/$1, $2/$1 } ' ENE > soubor.txt ; rm ENE 

   read cAOriginal bAOriginal < soubor.txt  ; rm soubor.txt 
 echo "cAOriginal je $cAOriginal" 
 echo "bAOriginal je $bAOriginal" 

#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
    initialHowMuchA=0.5
    initialHowMuchB=0.5
  
    howMuchA=$initialHowMuchA 
    howMuchB=$initialHowMuchB 
 

  function Compass() { 
     compute="false" 


    if test -z $1 
     then 
      echo "usage: first argument is N, NE, E, SE, S, SW, W or NW " 
       exit 1 
      fi 
   
        case $1 in 
    N)   
      Aa=$A
      Bb=` echo "$B + $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "Bb = $Bb" 
      echo "position N is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi 
      echo "energy N is $newENE" 
      printf "\n" 
      ;;
      
    NE)  
      Aa=` echo "$A + $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B + $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position NE is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi 
      echo "energy NE is $newENE " 
      printf "\n" 
      ;;

    E) 
      Aa=` echo "$A + $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=$B 
      echo "position E is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi 
      echo "energy E is $newENE" 
      printf "\n" 
      ;;

    SE) 
      Aa=` echo "$A + $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B - $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position SE is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy SE is $newENE " 
      printf "\n" 
      ;;

    S)  
      Aa=$A 
      Bb=` echo "$B - $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position S is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy S is $newENE" 
      printf "\n" 
      ;;

    SW) 
      Aa=` echo "$A - $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B - $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position SW is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy SW is $newENE" 
      printf "\n" 
     ;;

    W) 
      Aa=` echo "$A - $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=$B 
      echo "position W is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy W is $newENE " 
      printf "\n" 
      ;;

    NW) 
      Aa=` echo "$A - $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B + $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position NW is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy NW is $newENE" 
      printf "\n" 
      ;; 
  
     *) 
      echo "usage: first argument is N, NE, E, SE, S, SW, W or NW " 
       exit 1 
       ;;
   esac 

#compute  begin ------------------------------------------------
if  test $compute == "true"
then 

    parentDirectory=${mySCRATCH}  
    echo "parent directory: " 
    echo $parentDirectory 

   cd ${parentDirectory} 
   test -d ${parentDirectory}/ariel${case}${1} && rm -rf ${parentDirectory}/ariel${case}${1} 
   mkdir ${parentDirectory}/ariel${case}${1} 

    cp -r $case  ariel${case}${1}/   
    
     cd ${parentDirectory}/ariel${case}${1}/${case}/  

   echo "in $PWD" 
     echo "erasing struct files except BACKUP.struct" 

      for i in *\.struct 
        do 
	 test $i = BACKUP.struct || rm $i 
	done 
	cp BACKUP.struct  ${case}.struct 
    

     cat > ariel${case}${1}.txt <<+
3
1
$Aa  
+
  x optimize < ariel${case}${1}.txt ; rm ariel${case}${1}.txt  
   mv  ${case}_coa_*\.struct  TEMPORARY.struct
      
      for i in *\.struct 
        do 
	if  test $i = BACKUP.struct  -o $i = TEMPORARY.struct 
	    then 
	      echo "not erasing $i" 
	    else 
	   rm $i 
	fi 
	done 

     mv TEMPORARY.struct ${case}.struct 
     cat > ariel${case}${1}.txt <<+
4
1
$Bb 
+
  x optimize < ariel${case}${1}.txt ; rm ariel${case}${1}.txt  
   mv  ${case}_boa_*\.struct  ${case}.struct 


   test -f *.broyd*  &&  rm *.broyd*
   test -f *.error*  &&  rm *.error* 
   Computing 
     echo y | clean_lapw -s 

  cd ${parentDirectory}/ariel${case}${1}/${case} 
   echo "in $PWD" 
   newENE=`grep :ENE ${case}.scf | tail -1 | awk ' { print $9 } '` 
   echo "energy in $1 : $newENE " 
 

    cp ${parentDirectory}/ariel${case}${1}/${case}/${case}.scf  ${parentDirectory}/${case}/A${Aa}B${Bb}.scf 


fi   
#compute end --------------------------------------------------


} 


#

  function beforeCompass() { 
     compute="false" 


    if test -z $1 
     then 
      echo "usage: first argument is N, NE, E, SE, S, SW, W or NW " 
       exit 1 
      fi 
   
        case $1 in 
    P)   
      Aa=$A
      Bb=$B
      echo "position P is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
      cp ${parentDirectory}/${case}/A${Aa}B${Bb}.scf   ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi 
      echo "energy P is $newENE" 
      printf "\n" 
      ;;
    N)   
      Aa=$A
      Bb=` echo "$B + $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "Bb = $Bb" 
      echo "position N is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
      cp ${parentDirectory}/${case}/A${Aa}B${Bb}.scf   ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi 
      echo "energy N is $newENE" 
      printf "\n" 
      ;;
      
    NE)  
      Aa=` echo "$A + $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B + $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position NE is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
      cp ${parentDirectory}/${case}/A${Aa}B${Bb}.scf   ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi 
      echo "energy NE is $newENE " 
      printf "\n" 
      ;;

    E) 
      Aa=` echo "$A + $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=$B 
      echo "position E is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
      cp ${parentDirectory}/${case}/A${Aa}B${Bb}.scf   ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi 
      echo "energy E is $newENE" 
      printf "\n" 
      ;;

    SE) 
      Aa=` echo "$A + $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B - $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position SE is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
      cp ${parentDirectory}/${case}/A${Aa}B${Bb}.scf   ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy SE is $newENE " 
      printf "\n" 
      ;;

    S)  
      Aa=$A 
      Bb=` echo "$B - $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position S is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
      cp ${parentDirectory}/${case}/A${Aa}B${Bb}.scf   ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy S is $newENE" 
      printf "\n" 
      ;;

    SW) 
      Aa=` echo "$A - $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B - $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position SW is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
      cp ${parentDirectory}/${case}/A${Aa}B${Bb}.scf   ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy SW is $newENE" 
      printf "\n" 
     ;;

    W) 
      Aa=` echo "$A - $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=$B 
      echo "position W is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
      cp ${parentDirectory}/${case}/A${Aa}B${Bb}.scf   ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy W is $newENE " 
      printf "\n" 
      ;;

    NW) 
      Aa=` echo "$A - $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B + $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position NW is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
      cp ${parentDirectory}/${case}/A${Aa}B${Bb}.scf   ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy NW is $newENE" 
      printf "\n" 
      ;; 
  
     *) 
      echo "usage: first argument is N, NE, E, SE, S, SW, W or NW " 
       exit 1 
       ;;
   esac 

#compute  begin ------------------------------------------------
if  test $compute == "true"
then 

    parentDirectory=${mySCRATCH}  
    echo "parent directory: " 
    echo $parentDirectory 

 printf "%s \t %s \t %s \n" $1 $howMuchA  $howMuchB  >> ${parentDirectory}/toDoList.txt
 echo "beforeCompass $1 says it will be computed soon"
     
else 
echo "beforeCompass $1 says it has been  already computed"    
fi
 
#compute end --------------------------------------------------

rm -r ${parentDirectory}/ariel${case}* 

} 



  function afterCompass() { 
     compute="false" 


    if test -z $1 
     then 
      echo "usage: first argument is N, NE, E, SE, S, SW, W or NW " 
       exit 1 
      fi 
   
        case $1 in 
    N)   
      Aa=$A
      Bb=` echo "$B + $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "Bb = $Bb" 
      echo "position N is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
    newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
     
      else 
       compute="true" 
      fi 
      echo "energy N is $newENE" 
      printf "\n" 
      ;;
      
    NE)  
      Aa=` echo "$A + $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B + $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position NE is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi 
      echo "energy NE is $newENE " 
      printf "\n" 
      ;;

    E) 
      Aa=` echo "$A + $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=$B 
      echo "position E is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi 
      echo "energy E is $newENE" 
      printf "\n" 
      ;;

    SE) 
      Aa=` echo "$A + $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B - $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position SE is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy SE is $newENE " 
      printf "\n" 
      ;;

    S)  
      Aa=$A 
      Bb=` echo "$B - $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position S is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy S is $newENE" 
      printf "\n" 
      ;;

    SW) 
      Aa=` echo "$A - $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B - $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position SW is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy SW is $newENE" 
      printf "\n" 
     ;;

    W) 
      Aa=` echo "$A - $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=$B 
      echo "position W is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy W is $newENE " 
      printf "\n" 
      ;;

    NW) 
      Aa=` echo "$A - $howMuchA"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      Bb=` echo "$B + $howMuchB"  | bc -l | awk ' { printf "%.1f", $1 } ' ` 
      echo "position NW is A = $Aa   B = $Bb " 

      if test -f ${parentDirectory}/${case}/A${Aa}B${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/A${Aa}B${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      elif test -f ${parentDirectory}/${case}/C${Aa}D${Bb}.scf  
      then 
   newENE=`grep :ENE ${parentDirectory}/${case}/C${Aa}D${Bb}.scf | tail -1 | awk ' { print $9 } '` 
      else 
       compute="true" 
      fi
      echo "energy NW is $newENE" 
      printf "\n" 
      ;; 
  
     *) 
      echo "usage: first argument is N, NE, E, SE, S, SW, W or NW " 
       exit 1 
       ;;
   esac 

#compute  begin ------------------------------------------------
if  test $compute == "true"
then 

    parentDirectory=${mySCRATCH}  
    echo "parent directory: " 
    echo $parentDirectory 

   cd ${parentDirectory} 
   test -d ${parentDirectory}/ariel${case}${1}${howMuchA}_${howMuchB} && rm -rf ${parentDirectory}/ariel${case}${1}${howMuchA}_${howMuchB} 
   mkdir ${parentDirectory}/ariel${case}${1}${howMuchA}_${howMuchB} 

    cp -r $case  ariel${case}${1}${howMuchA}_${howMuchB}/   
    
     cd ${parentDirectory}/ariel${case}${1}${howMuchA}_${howMuchB}/${case}/  

   echo "in $PWD" 
     echo "erasing struct files except BACKUP.struct" 

      for i in *\.struct 
        do 
	 test $i = BACKUP.struct || rm $i 
	done 
	cp BACKUP.struct  ${case}.struct 
    

     cat > ariel${case}${1}.txt <<+
3
1
$Aa  
+
  x optimize < ariel${case}${1}.txt ; rm ariel${case}${1}.txt  
   mv  ${case}_coa_*\.struct  TEMPORARY.struct
      
      for i in *\.struct 
        do 
	if  test $i = BACKUP.struct  -o $i = TEMPORARY.struct 
	    then 
	      echo "not erasing $i" 
	    else 
	   rm $i 
	fi 
	done 

     mv TEMPORARY.struct ${case}.struct 
     cat > ariel${case}${1}.txt <<+
4
1
$Bb 
+
  x optimize < ariel${case}${1}.txt ; rm ariel${case}${1}.txt  
   mv  ${case}_boa_*\.struct  ${case}.struct 


   test -f chybovaHlaska.txt && rm chybovaHlaska.txt 
   echo 2 | x nn | grep -A 2  ERROR   > chybovaHlaska.txt 
 
   if test  -s chybovaHlaska.txt 
   then
   echo "nn overlap"
   echo "skipping this computation"
  
   else 
   test -f *.broyd*  &&  rm *.broyd*
   test -f *.error*  &&  rm *.error* 

  Computing 
     echo y | clean_lapw -s 

  cd ${parentDirectory}/ariel${case}${1}${howMuchA}_${howMuchB}/${case} 
   echo "in $PWD" 
   newENE=`grep :ENE ${case}.scf | tail -1 | awk ' { print $9 } '` 
   echo "energy in $1 : $newENE " 
 

  # cp ${parentDirectory}/ariel${case}${1}${howMuchA}_${howMuchB}/${case}/${case}.scf  ${parentDirectory}/${case}/A${Aa}B${Bb}.scf 
    
    cp ${parentDirectory}/ariel${case}${1}${howMuchA}_${howMuchB}/${case}/${case}.scf  ${parentDirectory}/${case}/C${Aa}D${Bb}.scf 

   fi # no nn overlap 

    cd ${parentDirectory} 
   rm -rf ariel${case}${1}${howMuchA}_${howMuchB}


fi  # compute=true 
#compute end --------------------------------------------------


} 


#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function Erase() { 

  cd ${parentDirectory}   

 sort -k2 -n  nextStep.txt | sed -e "1d" | sed -e "/P/d" > erase.txt 
   while test -s ${parentDirectory}/erase.txt 
     do 
     read point pointENE < ${parentDirectory}/erase.txt 
     sed -e "1d" ${parentDirectory}/erase.txt > ${parentDirectory}/erase.new 
     mv ${parentDirectory}/erase.new  ${parentDirectory}/erase.txt 
     
      if test -d ${parentDirectory}/ariel${case}${point} 
       then 
	 echo  "erasing directory ${parentDirectory}/ariel${case}${point}"  
	 rm -rf ${parentDirectory}/ariel${case}${point}
       fi 

     done 
      rm ${parentDirectory}/erase.txt 

}

# searching negative energy gradient  
echo "searching negative energy gradient"   

     cd ${parentDirectory}/${case}  

  STOP="false"  
   numberIterations=0 
    A=0.0    
    B=0.0  

    while test $STOP == "false" 
      do 

test -f  ${parentDirectory}/nextStep.txt  && rm ${parentDirectory}/nextStep.txt 
   
printf "%s \t  %.6f \n"  "P" $ENE >> ${parentDirectory}/nextStep.txt 



  test -f  ${parentDirectory}/toDoList.txt  && rm ${parentDirectory}/toDoList.txt 


      beforeCompass N  

      beforeCompass NE

      beforeCompass E 

      beforeCompass SE 

      beforeCompass S 

      beforeCompass SW 

      beforeCompass W 

      beforeCompass NW 

    test -f soubor.txt && rm soubor.txt 
    wc -l ${parentDirectory}/toDoList.txt > soubor.txt 
  read lines nic < soubor.txt ; rm soubor.txt
  echo "toDoList.txt contains $lines lines" 

   cat ${parentDirectory}/toDoList.txt 
   printf "\n" 
    

function DoingList() { 
  while test -s ${parentDirectory}/toDoList.txt 
     do 
     read direction somePadding  < ${parentDirectory}/toDoList.txt 
     sed -i -e '1d' ${parentDirectory}/toDoList.txt 

      (Compass $direction
printf "%s \t  %.6f \n"  $direction  $newENE >> ${parentDirectory}/nextStep.txt) & 
     done 
       wait 
       Erase 
   } # function DoingList 



     if test $lines -le 5 
    then 

    DoingList  
   else 
     
     echo "file toDoList contains more than 5 lines" 
       split --lines=5 --suffix-length=1 ${parentDirectory}/toDoList.txt  ${parentDirectory}/toDoList 
       mv ${parentDirectory}/toDoLista ${parentDirectory}/toDoList.txt 
      DoingList
       mv ${parentDirectory}/toDoListb ${parentDirectory}/toDoList.txt 
      DoingList
    fi 


   sort -k2 -n ${parentDirectory}/nextStep.txt > ${parentDirectory}/nextStep.new 
    mv ${parentDirectory}/nextStep.new ${parentDirectory}/nextStep.txt 
       
       cat ${parentDirectory}/nextStep.txt 

      read  nextStep  lowestENE  <  ${parentDirectory}/nextStep.txt 
         rm ${parentDirectory}/nextStep.txt 
     
      printf "\n" 
    echo "place with lowest energy: " 

      printf  "%s \t %.6f \n"  $nextStep $lowestENE 

     
     if test $nextStep == "P" 
        then 
	 echo "reached minimum energy" 
	 STOP="true" 
	 echo "quit"  
	break        
      else 
         echo "next step is $nextStep" 
      fi 


      cd ${parentDirectory}  
        
        ENE=$lowestENE 


     if test -d ${parentDirectory}/ariel${case}${nextStep}/${case} 
     then  
           cd ${parentDirectory}/${case} 
          mv A*B*.scf  ${parentDirectory}/ 
   test -f ${parentDirectory}/${case}.scf && rm ${parentDirectory}/${case}.scf


           rm -rf ${parentDirectory}/${case} 
mv  ${parentDirectory}/ariel${case}${nextStep}/${case} ${parentDirectory}/${case}
         cd ${parentDirectory}  
           mv A*B*.scf ${parentDirectory}/${case}/ 
     fi 

           rm -rf ${parentDirectory}/ariel${case}* 

      numberIterations=$((numberIterations + 1)) 

      echo "where to go next time?" 
	Compass $nextStep  
        A=$Aa 
	B=$Bb 

    done  
  
   AguessMin=$A; BguessMin=$B  
 echo "AguessMin je $AguessMin" 
 echo "BguessMin je $BguessMin" 


    cd ${parentDirectory}/${case} 

    echo y | clean_lapw   

    cd ${parentDirectory} 
     rm -rf ariel${case}* 


# making some vicinity of A, B for future fitting 
echo "making some vicinity around  AguessMin, BguessMin for future fitting" 

     cd ${parentDirectory}/${case}  

       




  originalHowMuchA=$howMuchA
  originalHowMuchB=$howMuchB 


  test -f  ${parentDirectory}/toDoList.txt  && rm ${parentDirectory}/toDoList.txt 

      beforeCompass P  

for extentA in -4 -2 0 2 4  

 do 
  for extentB in -4 -2 0 2 4  
     do    
howMuchA=` echo "$originalHowMuchA  $initialHowMuchA  $extentA" | awk ' { printf "%.1f", $1 + $2*$3 } ' `
      echo "extentA is $extentA" 
      echo "howMuchA is $howMuchA" 

howMuchB=` echo "$originalHowMuchB  $initialHowMuchB  $extentB" | awk ' { printf "%.1f", $1 + $2*$3 } ' `
      echo "extentB is $extentB" 
      echo "howMuchB is $howMuchB" 

      beforeCompass NE

    done  
 done       
  
if test ! -f  ${parentDirectory}/toDoList.txt 
   then 
   echo "no toDoList.txt to do"
    echo "everything has been already computed" 
   echo "no need to compute this vicinity"

  else  
#____________________________________________________

    test -f soubor.txt && rm soubor.txt 
    wc -l ${parentDirectory}/toDoList.txt > soubor.txt 
  read lines nic < soubor.txt ; rm soubor.txt
  echo "toDoList.txt contains $lines lines" 
  
  cat ${parentDirectory}/toDoList.txt  
printf "\n" 
 

function DoingListAgain() { 
  while test -s ${parentDirectory}/toDoList.txt 
     do 
     read direction  howMuchA  howMuchB  < ${parentDirectory}/toDoList.txt 
     sed -i -e '1d' ${parentDirectory}/toDoList.txt 

      ( afterCompass $direction ) &
     done 
       wait 
       
   }  # function DoingListAgain 



     if test $lines -le 5 
    then 

     echo "file toDoList contains up to 5 lines" 
    DoingListAgain   
   else 
     echo "file toDoList contains more than 5 lines" 
      
       split --lines=5 --suffix-length=1 ${parentDirectory}/toDoList.txt  ${parentDirectory}/toDoList 

       for i in  ${parentDirectory}/toDoList[a-z] 
     do 
       echo "computing batch of 5 processors $i"  
       mv $i  ${parentDirectory}/toDoList.txt 
      DoingListAgain       
     done 
    fi 
#____________________________________________________


 fi #test ! -f  ${parentDirectory}/toDoList.txt 

A=$AguessMin;  B=$BguessMin  


  cd ${parentDirectory}/${case}
echo "in directory $PWD we make file ENE and ENEpath" 
   

   test -f ENEpath && mv ENE ENEpath.old 

  for i in A*B*\.scf 
   do 

     grep :LAT $i | tail -1 | awk ' { printf "%.7f \t %.7f \t %.7f \t", $5, $6, $7 } '  
	grep :ENE $i | tail -1 | awk ' { printf "%.8f \n", $9 } '   
done > ENEpath 

 
   test -f ENE && mv ENE ENE.old 

  for i in C*D*\.scf 
   do 

     grep :LAT $i | tail -1 | awk ' { printf "%.7f \t %.7f \t %.7f \t", $5, $6, $7 } '  
	grep :ENE $i | tail -1 | awk ' { printf "%.8f \n", $9 } '   
done > ENE 

cat ENE 

level=` sort -k4 -n ENE | head -1 | awk ' { printf "%.8f", -$4 } ' `
echo "level is $level" 

  test -f matrixATA.awk && rm matrixATA.awk 

cat > matrixATA.awk <<+
{ x[NR] = 10.0*\$3/\$1; y[NR] = 10.0*\$2/\$1; 

sumA11 += (x[NR])^4  

sumA12 += (x[NR])^2*(y[NR])^2

sumA13 += (x[NR])^3*(y[NR])

sumA14 += (x[NR])^3

sumA15 += (x[NR])^2*(y[NR])

sumA16 += (x[NR])^2


#sumA21 will be sumA12

sumA22 += (y[NR])^4  

sumA23 += (x[NR])*(y[NR])^3

sumA24 += (x[NR])*(y[NR])^2

sumA25 += (y[NR])^3

sumA26 += (y[NR])^2


#sumA31 will be sumA13

#sumA32 will be sumA23

sumA33 += (x[NR])^2*(y[NR])^2

sumA34 += (x[NR])^2*(y[NR])

sumA35 += (x[NR])*(y[NR])^2

sumA36 += (x[NR])*(y[NR])



#sumA41 will be sumA14 

#sumA42 will be sumA24 

#sumA43 will be sumA34 

sumA44 += (x[NR])^2

sumA45 += (x[NR])*(y[NR])

sumA46 += (x[NR])


#sumA51 will be sumA15 

#sumA52 will be sumA25 

#sumA53 will be sumA35 

#sumA54 will be sumA45 

sumA55 += (y[NR])^2

sumA56 += (y[NR])


#sumA61 will be sumA16 

#sumA62 will be sumA26 

#sumA63 will be sumA36 

#sumA64 will be sumA46 

#sumA65 will be sumA56 

sumA66 += 1 

}




END { 
sumA21 = sumA12 ; sumA31 = sumA13; sumA41 = sumA14 ; sumA51 = sumA15; sumA61 = sumA16
                  sumA32 = sumA23; sumA42 = sumA24 ; sumA52 = sumA25; sumA62 = sumA26
                                   sumA43 = sumA34 ; sumA53 = sumA35; sumA63 = sumA36
                                                     sumA54 = sumA45; sumA64 = sumA46
                                                                      sumA65 = sumA56


printf "%.20f \t %.20f \t %.20f \t %.20f \t %.20f \t %.20f \n", sumA11, sumA12, sumA13, sumA14, sumA15, sumA16 

printf "%.20f \t %.20f \t %.20f \t %.20f \t %.20f \t %.20f \n", sumA21, sumA22, sumA23, sumA24, sumA25, sumA26 

printf "%.20f \t %.20f \t %.20f \t %.20f \t %.20f \t %.20f \n", sumA31, sumA32, sumA33, sumA34, sumA35, sumA36 

printf "%.20f \t %.20f \t %.20f \t %.20f \t %.20f \t %.20f \n", sumA41, sumA42, sumA43, sumA44, sumA45, sumA46 

printf "%.20f \t %.20f \t %.20f \t %.20f \t %.20f \t %.20f \n", sumA51, sumA52, sumA53, sumA54, sumA55, sumA56 

printf "%.20f \t %.20f \t %.20f \t %.20f \t %.20f \t %.20f \n", sumA61, sumA62, sumA63, sumA64, sumA65, sumA66 

}
+

  test -f matrix0.txt && rm matrix0.txt  
  awk -f matrixATA.awk  ENE > matrix0.txt 

  

  test -f matrixATB.awk && rm matrixATB.awk 

cat > matrixATB.awk <<+
{ x[NR] = 10.0*\$3/\$1; y[NR] = 10.0*\$2/\$1; z[NR] = (\$4 + level)*13.6058

sumB1 += (x[NR])^2*(z[NR])

sumB2 += (y[NR])^2*(z[NR])

sumB3 += (x[NR])*(y[NR])*(z[NR])

sumB4 += (x[NR])*(z[NR])

sumB5 += (y[NR])*(z[NR])

sumB6 += (z[NR])

}

END { 

printf "%.20f \n", sumB1
printf "%.20f \n", sumB2
printf "%.20f \n", sumB3
printf "%.20f \n", sumB4
printf "%.20f \n", sumB5
printf "%.20f \n", sumB6

} 
+

  test -f columnB.txt && rm columnB.txt 
  awk -f matrixATB.awk -v level=$level ENE > columnB.txt 


   test -f auxiliary.txt && rm auxiliary.txt 
   cut -f 2,3,4,5,6  matrix0.txt  > auxiliary.txt 
   test -f matrix1.txt && rm matrix1.txt
   paste columnB.txt auxiliary.txt > matrix1.txt 
   rm auxiliary.txt 

   
   test -f auxiliary1.txt && rm auxiliary1.txt 
   test -f auxiliary.txt && rm auxiliary.txt 
   cut -f 1  matrix0.txt > auxiliary1.txt 
   cut -f 3,4,5,6  matrix0.txt > auxiliary.txt 
   test -f matrix2.txt && rm matrix2.txt
   paste auxiliary1.txt columnB.txt auxiliary.txt > matrix2.txt 
   rm auxiliary1.txt auxiliary.txt 

   
   test -f auxiliary1.txt && rm auxiliary1.txt 
   test -f auxiliary.txt && rm auxiliary.txt 
   cut -f 1,2  matrix0.txt > auxiliary1.txt 
   cut -f 4,5,6  matrix0.txt > auxiliary.txt 
   test -f matrix3.txt && rm matrix3.txt
   paste auxiliary1.txt columnB.txt auxiliary.txt > matrix3.txt 
   rm auxiliary1.txt auxiliary.txt 

   
   test -f auxiliary1.txt && rm auxiliary1.txt 
   test -f auxiliary.txt && rm auxiliary.txt 
   cut -f 1,2,3  matrix0.txt > auxiliary1.txt 
   cut -f 5,6  matrix0.txt > auxiliary.txt 
   test -f matrix4.txt && rm matrix4.txt
   paste auxiliary1.txt columnB.txt auxiliary.txt > matrix4.txt 
   rm auxiliary1.txt auxiliary.txt 

   
   test -f auxiliary1.txt && rm auxiliary1.txt 
   test -f auxiliary.txt && rm auxiliary.txt 
   cut -f 1,2,3,4  matrix0.txt > auxiliary1.txt 
   cut -f 6  matrix0.txt > auxiliary.txt 
   test -f matrix5.txt && rm matrix5.txt
   paste auxiliary1.txt columnB.txt auxiliary.txt > matrix5.txt 
   rm auxiliary1.txt auxiliary.txt 

   
   test -f auxiliary.txt && rm auxiliary.txt 
   cut -f 1,2,3,4,5  matrix0.txt  > auxiliary.txt 
   test -f matrix6.txt && rm matrix6.txt
   paste  auxiliary.txt columnB.txt > matrix6.txt 
   rm auxiliary.txt 



   cd $ZDE
echo "in $PWD" 

echo "solving set of equations by Cramers rule" 

 test -f listOfSequences.txt  && rm listOfSequences.txt 
# begin listOfSequences 
cat > listOfSequences.txt <<+
1 	 	2		3		4		5		6	
1 	 	2		3		4		6		5	
1 	 	2		3		5		4		6	
1 	 	2		3		5		6		4	
1 	 	2		3		6		4		5	
1 	 	2		3		6		5		4	
1 	 	2		4		3		5		6	
1 	 	2		4		3		6		5	
1 	 	2		4		5		3		6	
1 	 	2		4		5		6		3	
1 	 	2		4		6		3		5	
1 	 	2		4		6		5		3	
1 	 	2		5		3		4		6	
1 	 	2		5		3		6		4	
1 	 	2		5		4		3		6	
1 	 	2		5		4		6		3	
1 	 	2		5		6		3		4	
1 	 	2		5		6		4		3	
1 	 	2		6		3		4		5	
1 	 	2		6		3		5		4	
1 	 	2		6		4		3		5	
1 	 	2		6		4		5		3	
1 	 	2		6		5		3		4	
1 	 	2		6		5		4		3	
1 	 	3		2		4		5		6	
1 	 	3		2		4		6		5	
1 	 	3		2		5		4		6	
1 	 	3		2		5		6		4	
1 	 	3		2		6		4		5	
1 	 	3		2		6		5		4	
1 	 	3		4		2		5		6	
1 	 	3		4		2		6		5	
1 	 	3		4		5		2		6	
1 	 	3		4		5		6		2	
1 	 	3		4		6		2		5	
1 	 	3		4		6		5		2	
1 	 	3		5		2		4		6	
1 	 	3		5		2		6		4	
1 	 	3		5		4		2		6	
1 	 	3		5		4		6		2	
1 	 	3		5		6		2		4	
1 	 	3		5		6		4		2	
1 	 	3		6		2		4		5	
1 	 	3		6		2		5		4	
1 	 	3		6		4		2		5	
1 	 	3		6		4		5		2	
1 	 	3		6		5		2		4	
1 	 	3		6		5		4		2	
1 	 	4		2		3		5		6	
1 	 	4		2		3		6		5	
1 	 	4		2		5		3		6	
1 	 	4		2		5		6		3	
1 	 	4		2		6		3		5	
1 	 	4		2		6		5		3	
1 	 	4		3		2		5		6	
1 	 	4		3		2		6		5	
1 	 	4		3		5		2		6	
1 	 	4		3		5		6		2	
1 	 	4		3		6		2		5	
1 	 	4		3		6		5		2	
1 	 	4		5		2		3		6	
1 	 	4		5		2		6		3	
1 	 	4		5		3		2		6	
1 	 	4		5		3		6		2	
1 	 	4		5		6		2		3	
1 	 	4		5		6		3		2	
1 	 	4		6		2		3		5	
1 	 	4		6		2		5		3	
1 	 	4		6		3		2		5	
1 	 	4		6		3		5		2	
1 	 	4		6		5		2		3	
1 	 	4		6		5		3		2	
1 	 	5		2		3		4		6	
1 	 	5		2		3		6		4	
1 	 	5		2		4		3		6	
1 	 	5		2		4		6		3	
1 	 	5		2		6		3		4	
1 	 	5		2		6		4		3	
1 	 	5		3		2		4		6	
1 	 	5		3		2		6		4	
1 	 	5		3		4		2		6	
1 	 	5		3		4		6		2	
1 	 	5		3		6		2		4	
1 	 	5		3		6		4		2	
1 	 	5		4		2		3		6	
1 	 	5		4		2		6		3	
1 	 	5		4		3		2		6	
1 	 	5		4		3		6		2	
1 	 	5		4		6		2		3	
1 	 	5		4		6		3		2	
1 	 	5		6		2		3		4	
1 	 	5		6		2		4		3	
1 	 	5		6		3		2		4	
1 	 	5		6		3		4		2	
1 	 	5		6		4		2		3	
1 	 	5		6		4		3		2	
1 	 	6		2		3		4		5	
1 	 	6		2		3		5		4	
1 	 	6		2		4		3		5	
1 	 	6		2		4		5		3	
1 	 	6		2		5		3		4	
1 	 	6		2		5		4		3	
1 	 	6		3		2		4		5	
1 	 	6		3		2		5		4	
1 	 	6		3		4		2		5	
1 	 	6		3		4		5		2	
1 	 	6		3		5		2		4	
1 	 	6		3		5		4		2	
1 	 	6		4		2		3		5	
1 	 	6		4		2		5		3	
1 	 	6		4		3		2		5	
1 	 	6		4		3		5		2	
1 	 	6		4		5		2		3	
1 	 	6		4		5		3		2	
1 	 	6		5		2		3		4	
1 	 	6		5		2		4		3	
1 	 	6		5		3		2		4	
1 	 	6		5		3		4		2	
1 	 	6		5		4		2		3	
1 	 	6		5		4		3		2	
2 	 	1		3		4		5		6	
2 	 	1		3		4		6		5	
2 	 	1		3		5		4		6	
2 	 	1		3		5		6		4	
2 	 	1		3		6		4		5	
2 	 	1		3		6		5		4	
2 	 	1		4		3		5		6	
2 	 	1		4		3		6		5	
2 	 	1		4		5		3		6	
2 	 	1		4		5		6		3	
2 	 	1		4		6		3		5	
2 	 	1		4		6		5		3	
2 	 	1		5		3		4		6	
2 	 	1		5		3		6		4	
2 	 	1		5		4		3		6	
2 	 	1		5		4		6		3	
2 	 	1		5		6		3		4	
2 	 	1		5		6		4		3	
2 	 	1		6		3		4		5	
2 	 	1		6		3		5		4	
2 	 	1		6		4		3		5	
2 	 	1		6		4		5		3	
2 	 	1		6		5		3		4	
2 	 	1		6		5		4		3	
2 	 	3		1		4		5		6	
2 	 	3		1		4		6		5	
2 	 	3		1		5		4		6	
2 	 	3		1		5		6		4	
2 	 	3		1		6		4		5	
2 	 	3		1		6		5		4	
2 	 	3		4		1		5		6	
2 	 	3		4		1		6		5	
2 	 	3		4		5		1		6	
2 	 	3		4		5		6		1	
2 	 	3		4		6		1		5	
2 	 	3		4		6		5		1	
2 	 	3		5		1		4		6	
2 	 	3		5		1		6		4	
2 	 	3		5		4		1		6	
2 	 	3		5		4		6		1	
2 	 	3		5		6		1		4	
2 	 	3		5		6		4		1	
2 	 	3		6		1		4		5	
2 	 	3		6		1		5		4	
2 	 	3		6		4		1		5	
2 	 	3		6		4		5		1	
2 	 	3		6		5		1		4	
2 	 	3		6		5		4		1	
2 	 	4		1		3		5		6	
2 	 	4		1		3		6		5	
2 	 	4		1		5		3		6	
2 	 	4		1		5		6		3	
2 	 	4		1		6		3		5	
2 	 	4		1		6		5		3	
2 	 	4		3		1		5		6	
2 	 	4		3		1		6		5	
2 	 	4		3		5		1		6	
2 	 	4		3		5		6		1	
2 	 	4		3		6		1		5	
2 	 	4		3		6		5		1	
2 	 	4		5		1		3		6	
2 	 	4		5		1		6		3	
2 	 	4		5		3		1		6	
2 	 	4		5		3		6		1	
2 	 	4		5		6		1		3	
2 	 	4		5		6		3		1	
2 	 	4		6		1		3		5	
2 	 	4		6		1		5		3	
2 	 	4		6		3		1		5	
2 	 	4		6		3		5		1	
2 	 	4		6		5		1		3	
2 	 	4		6		5		3		1	
2 	 	5		1		3		4		6	
2 	 	5		1		3		6		4	
2 	 	5		1		4		3		6	
2 	 	5		1		4		6		3	
2 	 	5		1		6		3		4	
2 	 	5		1		6		4		3	
2 	 	5		3		1		4		6	
2 	 	5		3		1		6		4	
2 	 	5		3		4		1		6	
2 	 	5		3		4		6		1	
2 	 	5		3		6		1		4	
2 	 	5		3		6		4		1	
2 	 	5		4		1		3		6	
2 	 	5		4		1		6		3	
2 	 	5		4		3		1		6	
2 	 	5		4		3		6		1	
2 	 	5		4		6		1		3	
2 	 	5		4		6		3		1	
2 	 	5		6		1		3		4	
2 	 	5		6		1		4		3	
2 	 	5		6		3		1		4	
2 	 	5		6		3		4		1	
2 	 	5		6		4		1		3	
2 	 	5		6		4		3		1	
2 	 	6		1		3		4		5	
2 	 	6		1		3		5		4	
2 	 	6		1		4		3		5	
2 	 	6		1		4		5		3	
2 	 	6		1		5		3		4	
2 	 	6		1		5		4		3	
2 	 	6		3		1		4		5	
2 	 	6		3		1		5		4	
2 	 	6		3		4		1		5	
2 	 	6		3		4		5		1	
2 	 	6		3		5		1		4	
2 	 	6		3		5		4		1	
2 	 	6		4		1		3		5	
2 	 	6		4		1		5		3	
2 	 	6		4		3		1		5	
2 	 	6		4		3		5		1	
2 	 	6		4		5		1		3	
2 	 	6		4		5		3		1	
2 	 	6		5		1		3		4	
2 	 	6		5		1		4		3	
2 	 	6		5		3		1		4	
2 	 	6		5		3		4		1	
2 	 	6		5		4		1		3	
2 	 	6		5		4		3		1	
3 	 	1		2		4		5		6	
3 	 	1		2		4		6		5	
3 	 	1		2		5		4		6	
3 	 	1		2		5		6		4	
3 	 	1		2		6		4		5	
3 	 	1		2		6		5		4	
3 	 	1		4		2		5		6	
3 	 	1		4		2		6		5	
3 	 	1		4		5		2		6	
3 	 	1		4		5		6		2	
3 	 	1		4		6		2		5	
3 	 	1		4		6		5		2	
3 	 	1		5		2		4		6	
3 	 	1		5		2		6		4	
3 	 	1		5		4		2		6	
3 	 	1		5		4		6		2	
3 	 	1		5		6		2		4	
3 	 	1		5		6		4		2	
3 	 	1		6		2		4		5	
3 	 	1		6		2		5		4	
3 	 	1		6		4		2		5	
3 	 	1		6		4		5		2	
3 	 	1		6		5		2		4	
3 	 	1		6		5		4		2	
3 	 	2		1		4		5		6	
3 	 	2		1		4		6		5	
3 	 	2		1		5		4		6	
3 	 	2		1		5		6		4	
3 	 	2		1		6		4		5	
3 	 	2		1		6		5		4	
3 	 	2		4		1		5		6	
3 	 	2		4		1		6		5	
3 	 	2		4		5		1		6	
3 	 	2		4		5		6		1	
3 	 	2		4		6		1		5	
3 	 	2		4		6		5		1	
3 	 	2		5		1		4		6	
3 	 	2		5		1		6		4	
3 	 	2		5		4		1		6	
3 	 	2		5		4		6		1	
3 	 	2		5		6		1		4	
3 	 	2		5		6		4		1	
3 	 	2		6		1		4		5	
3 	 	2		6		1		5		4	
3 	 	2		6		4		1		5	
3 	 	2		6		4		5		1	
3 	 	2		6		5		1		4	
3 	 	2		6		5		4		1	
3 	 	4		1		2		5		6	
3 	 	4		1		2		6		5	
3 	 	4		1		5		2		6	
3 	 	4		1		5		6		2	
3 	 	4		1		6		2		5	
3 	 	4		1		6		5		2	
3 	 	4		2		1		5		6	
3 	 	4		2		1		6		5	
3 	 	4		2		5		1		6	
3 	 	4		2		5		6		1	
3 	 	4		2		6		1		5	
3 	 	4		2		6		5		1	
3 	 	4		5		1		2		6	
3 	 	4		5		1		6		2	
3 	 	4		5		2		1		6	
3 	 	4		5		2		6		1	
3 	 	4		5		6		1		2	
3 	 	4		5		6		2		1	
3 	 	4		6		1		2		5	
3 	 	4		6		1		5		2	
3 	 	4		6		2		1		5	
3 	 	4		6		2		5		1	
3 	 	4		6		5		1		2	
3 	 	4		6		5		2		1	
3 	 	5		1		2		4		6	
3 	 	5		1		2		6		4	
3 	 	5		1		4		2		6	
3 	 	5		1		4		6		2	
3 	 	5		1		6		2		4	
3 	 	5		1		6		4		2	
3 	 	5		2		1		4		6	
3 	 	5		2		1		6		4	
3 	 	5		2		4		1		6	
3 	 	5		2		4		6		1	
3 	 	5		2		6		1		4	
3 	 	5		2		6		4		1	
3 	 	5		4		1		2		6	
3 	 	5		4		1		6		2	
3 	 	5		4		2		1		6	
3 	 	5		4		2		6		1	
3 	 	5		4		6		1		2	
3 	 	5		4		6		2		1	
3 	 	5		6		1		2		4	
3 	 	5		6		1		4		2	
3 	 	5		6		2		1		4	
3 	 	5		6		2		4		1	
3 	 	5		6		4		1		2	
3 	 	5		6		4		2		1	
3 	 	6		1		2		4		5	
3 	 	6		1		2		5		4	
3 	 	6		1		4		2		5	
3 	 	6		1		4		5		2	
3 	 	6		1		5		2		4	
3 	 	6		1		5		4		2	
3 	 	6		2		1		4		5	
3 	 	6		2		1		5		4	
3 	 	6		2		4		1		5	
3 	 	6		2		4		5		1	
3 	 	6		2		5		1		4	
3 	 	6		2		5		4		1	
3 	 	6		4		1		2		5	
3 	 	6		4		1		5		2	
3 	 	6		4		2		1		5	
3 	 	6		4		2		5		1	
3 	 	6		4		5		1		2	
3 	 	6		4		5		2		1	
3 	 	6		5		1		2		4	
3 	 	6		5		1		4		2	
3 	 	6		5		2		1		4	
3 	 	6		5		2		4		1	
3 	 	6		5		4		1		2	
3 	 	6		5		4		2		1	
4 	 	1		2		3		5		6	
4 	 	1		2		3		6		5	
4 	 	1		2		5		3		6	
4 	 	1		2		5		6		3	
4 	 	1		2		6		3		5	
4 	 	1		2		6		5		3	
4 	 	1		3		2		5		6	
4 	 	1		3		2		6		5	
4 	 	1		3		5		2		6	
4 	 	1		3		5		6		2	
4 	 	1		3		6		2		5	
4 	 	1		3		6		5		2	
4 	 	1		5		2		3		6	
4 	 	1		5		2		6		3	
4 	 	1		5		3		2		6	
4 	 	1		5		3		6		2	
4 	 	1		5		6		2		3	
4 	 	1		5		6		3		2	
4 	 	1		6		2		3		5	
4 	 	1		6		2		5		3	
4 	 	1		6		3		2		5	
4 	 	1		6		3		5		2	
4 	 	1		6		5		2		3	
4 	 	1		6		5		3		2	
4 	 	2		1		3		5		6	
4 	 	2		1		3		6		5	
4 	 	2		1		5		3		6	
4 	 	2		1		5		6		3	
4 	 	2		1		6		3		5	
4 	 	2		1		6		5		3	
4 	 	2		3		1		5		6	
4 	 	2		3		1		6		5	
4 	 	2		3		5		1		6	
4 	 	2		3		5		6		1	
4 	 	2		3		6		1		5	
4 	 	2		3		6		5		1	
4 	 	2		5		1		3		6	
4 	 	2		5		1		6		3	
4 	 	2		5		3		1		6	
4 	 	2		5		3		6		1	
4 	 	2		5		6		1		3	
4 	 	2		5		6		3		1	
4 	 	2		6		1		3		5	
4 	 	2		6		1		5		3	
4 	 	2		6		3		1		5	
4 	 	2		6		3		5		1	
4 	 	2		6		5		1		3	
4 	 	2		6		5		3		1	
4 	 	3		1		2		5		6	
4 	 	3		1		2		6		5	
4 	 	3		1		5		2		6	
4 	 	3		1		5		6		2	
4 	 	3		1		6		2		5	
4 	 	3		1		6		5		2	
4 	 	3		2		1		5		6	
4 	 	3		2		1		6		5	
4 	 	3		2		5		1		6	
4 	 	3		2		5		6		1	
4 	 	3		2		6		1		5	
4 	 	3		2		6		5		1	
4 	 	3		5		1		2		6	
4 	 	3		5		1		6		2	
4 	 	3		5		2		1		6	
4 	 	3		5		2		6		1	
4 	 	3		5		6		1		2	
4 	 	3		5		6		2		1	
4 	 	3		6		1		2		5	
4 	 	3		6		1		5		2	
4 	 	3		6		2		1		5	
4 	 	3		6		2		5		1	
4 	 	3		6		5		1		2	
4 	 	3		6		5		2		1	
4 	 	5		1		2		3		6	
4 	 	5		1		2		6		3	
4 	 	5		1		3		2		6	
4 	 	5		1		3		6		2	
4 	 	5		1		6		2		3	
4 	 	5		1		6		3		2	
4 	 	5		2		1		3		6	
4 	 	5		2		1		6		3	
4 	 	5		2		3		1		6	
4 	 	5		2		3		6		1	
4 	 	5		2		6		1		3	
4 	 	5		2		6		3		1	
4 	 	5		3		1		2		6	
4 	 	5		3		1		6		2	
4 	 	5		3		2		1		6	
4 	 	5		3		2		6		1	
4 	 	5		3		6		1		2	
4 	 	5		3		6		2		1	
4 	 	5		6		1		2		3	
4 	 	5		6		1		3		2	
4 	 	5		6		2		1		3	
4 	 	5		6		2		3		1	
4 	 	5		6		3		1		2	
4 	 	5		6		3		2		1	
4 	 	6		1		2		3		5	
4 	 	6		1		2		5		3	
4 	 	6		1		3		2		5	
4 	 	6		1		3		5		2	
4 	 	6		1		5		2		3	
4 	 	6		1		5		3		2	
4 	 	6		2		1		3		5	
4 	 	6		2		1		5		3	
4 	 	6		2		3		1		5	
4 	 	6		2		3		5		1	
4 	 	6		2		5		1		3	
4 	 	6		2		5		3		1	
4 	 	6		3		1		2		5	
4 	 	6		3		1		5		2	
4 	 	6		3		2		1		5	
4 	 	6		3		2		5		1	
4 	 	6		3		5		1		2	
4 	 	6		3		5		2		1	
4 	 	6		5		1		2		3	
4 	 	6		5		1		3		2	
4 	 	6		5		2		1		3	
4 	 	6		5		2		3		1	
4 	 	6		5		3		1		2	
4 	 	6		5		3		2		1	
5 	 	1		2		3		4		6	
5 	 	1		2		3		6		4	
5 	 	1		2		4		3		6	
5 	 	1		2		4		6		3	
5 	 	1		2		6		3		4	
5 	 	1		2		6		4		3	
5 	 	1		3		2		4		6	
5 	 	1		3		2		6		4	
5 	 	1		3		4		2		6	
5 	 	1		3		4		6		2	
5 	 	1		3		6		2		4	
5 	 	1		3		6		4		2	
5 	 	1		4		2		3		6	
5 	 	1		4		2		6		3	
5 	 	1		4		3		2		6	
5 	 	1		4		3		6		2	
5 	 	1		4		6		2		3	
5 	 	1		4		6		3		2	
5 	 	1		6		2		3		4	
5 	 	1		6		2		4		3	
5 	 	1		6		3		2		4	
5 	 	1		6		3		4		2	
5 	 	1		6		4		2		3	
5 	 	1		6		4		3		2	
5 	 	2		1		3		4		6	
5 	 	2		1		3		6		4	
5 	 	2		1		4		3		6	
5 	 	2		1		4		6		3	
5 	 	2		1		6		3		4	
5 	 	2		1		6		4		3	
5 	 	2		3		1		4		6	
5 	 	2		3		1		6		4	
5 	 	2		3		4		1		6	
5 	 	2		3		4		6		1	
5 	 	2		3		6		1		4	
5 	 	2		3		6		4		1	
5 	 	2		4		1		3		6	
5 	 	2		4		1		6		3	
5 	 	2		4		3		1		6	
5 	 	2		4		3		6		1	
5 	 	2		4		6		1		3	
5 	 	2		4		6		3		1	
5 	 	2		6		1		3		4	
5 	 	2		6		1		4		3	
5 	 	2		6		3		1		4	
5 	 	2		6		3		4		1	
5 	 	2		6		4		1		3	
5 	 	2		6		4		3		1	
5 	 	3		1		2		4		6	
5 	 	3		1		2		6		4	
5 	 	3		1		4		2		6	
5 	 	3		1		4		6		2	
5 	 	3		1		6		2		4	
5 	 	3		1		6		4		2	
5 	 	3		2		1		4		6	
5 	 	3		2		1		6		4	
5 	 	3		2		4		1		6	
5 	 	3		2		4		6		1	
5 	 	3		2		6		1		4	
5 	 	3		2		6		4		1	
5 	 	3		4		1		2		6	
5 	 	3		4		1		6		2	
5 	 	3		4		2		1		6	
5 	 	3		4		2		6		1	
5 	 	3		4		6		1		2	
5 	 	3		4		6		2		1	
5 	 	3		6		1		2		4	
5 	 	3		6		1		4		2	
5 	 	3		6		2		1		4	
5 	 	3		6		2		4		1	
5 	 	3		6		4		1		2	
5 	 	3		6		4		2		1	
5 	 	4		1		2		3		6	
5 	 	4		1		2		6		3	
5 	 	4		1		3		2		6	
5 	 	4		1		3		6		2	
5 	 	4		1		6		2		3	
5 	 	4		1		6		3		2	
5 	 	4		2		1		3		6	
5 	 	4		2		1		6		3	
5 	 	4		2		3		1		6	
5 	 	4		2		3		6		1	
5 	 	4		2		6		1		3	
5 	 	4		2		6		3		1	
5 	 	4		3		1		2		6	
5 	 	4		3		1		6		2	
5 	 	4		3		2		1		6	
5 	 	4		3		2		6		1	
5 	 	4		3		6		1		2	
5 	 	4		3		6		2		1	
5 	 	4		6		1		2		3	
5 	 	4		6		1		3		2	
5 	 	4		6		2		1		3	
5 	 	4		6		2		3		1	
5 	 	4		6		3		1		2	
5 	 	4		6		3		2		1	
5 	 	6		1		2		3		4	
5 	 	6		1		2		4		3	
5 	 	6		1		3		2		4	
5 	 	6		1		3		4		2	
5 	 	6		1		4		2		3	
5 	 	6		1		4		3		2	
5 	 	6		2		1		3		4	
5 	 	6		2		1		4		3	
5 	 	6		2		3		1		4	
5 	 	6		2		3		4		1	
5 	 	6		2		4		1		3	
5 	 	6		2		4		3		1	
5 	 	6		3		1		2		4	
5 	 	6		3		1		4		2	
5 	 	6		3		2		1		4	
5 	 	6		3		2		4		1	
5 	 	6		3		4		1		2	
5 	 	6		3		4		2		1	
5 	 	6		4		1		2		3	
5 	 	6		4		1		3		2	
5 	 	6		4		2		1		3	
5 	 	6		4		2		3		1	
5 	 	6		4		3		1		2	
5 	 	6		4		3		2		1	
6 	 	1		2		3		4		5	
6 	 	1		2		3		5		4	
6 	 	1		2		4		3		5	
6 	 	1		2		4		5		3	
6 	 	1		2		5		3		4	
6 	 	1		2		5		4		3	
6 	 	1		3		2		4		5	
6 	 	1		3		2		5		4	
6 	 	1		3		4		2		5	
6 	 	1		3		4		5		2	
6 	 	1		3		5		2		4	
6 	 	1		3		5		4		2	
6 	 	1		4		2		3		5	
6 	 	1		4		2		5		3	
6 	 	1		4		3		2		5	
6 	 	1		4		3		5		2	
6 	 	1		4		5		2		3	
6 	 	1		4		5		3		2	
6 	 	1		5		2		3		4	
6 	 	1		5		2		4		3	
6 	 	1		5		3		2		4	
6 	 	1		5		3		4		2	
6 	 	1		5		4		2		3	
6 	 	1		5		4		3		2	
6 	 	2		1		3		4		5	
6 	 	2		1		3		5		4	
6 	 	2		1		4		3		5	
6 	 	2		1		4		5		3	
6 	 	2		1		5		3		4	
6 	 	2		1		5		4		3	
6 	 	2		3		1		4		5	
6 	 	2		3		1		5		4	
6 	 	2		3		4		1		5	
6 	 	2		3		4		5		1	
6 	 	2		3		5		1		4	
6 	 	2		3		5		4		1	
6 	 	2		4		1		3		5	
6 	 	2		4		1		5		3	
6 	 	2		4		3		1		5	
6 	 	2		4		3		5		1	
6 	 	2		4		5		1		3	
6 	 	2		4		5		3		1	
6 	 	2		5		1		3		4	
6 	 	2		5		1		4		3	
6 	 	2		5		3		1		4	
6 	 	2		5		3		4		1	
6 	 	2		5		4		1		3	
6 	 	2		5		4		3		1	
6 	 	3		1		2		4		5	
6 	 	3		1		2		5		4	
6 	 	3		1		4		2		5	
6 	 	3		1		4		5		2	
6 	 	3		1		5		2		4	
6 	 	3		1		5		4		2	
6 	 	3		2		1		4		5	
6 	 	3		2		1		5		4	
6 	 	3		2		4		1		5	
6 	 	3		2		4		5		1	
6 	 	3		2		5		1		4	
6 	 	3		2		5		4		1	
6 	 	3		4		1		2		5	
6 	 	3		4		1		5		2	
6 	 	3		4		2		1		5	
6 	 	3		4		2		5		1	
6 	 	3		4		5		1		2	
6 	 	3		4		5		2		1	
6 	 	3		5		1		2		4	
6 	 	3		5		1		4		2	
6 	 	3		5		2		1		4	
6 	 	3		5		2		4		1	
6 	 	3		5		4		1		2	
6 	 	3		5		4		2		1	
6 	 	4		1		2		3		5	
6 	 	4		1		2		5		3	
6 	 	4		1		3		2		5	
6 	 	4		1		3		5		2	
6 	 	4		1		5		2		3	
6 	 	4		1		5		3		2	
6 	 	4		2		1		3		5	
6 	 	4		2		1		5		3	
6 	 	4		2		3		1		5	
6 	 	4		2		3		5		1	
6 	 	4		2		5		1		3	
6 	 	4		2		5		3		1	
6 	 	4		3		1		2		5	
6 	 	4		3		1		5		2	
6 	 	4		3		2		1		5	
6 	 	4		3		2		5		1	
6 	 	4		3		5		1		2	
6 	 	4		3		5		2		1	
6 	 	4		5		1		2		3	
6 	 	4		5		1		3		2	
6 	 	4		5		2		1		3	
6 	 	4		5		2		3		1	
6 	 	4		5		3		1		2	
6 	 	4		5		3		2		1	
6 	 	5		1		2		3		4	
6 	 	5		1		2		4		3	
6 	 	5		1		3		2		4	
6 	 	5		1		3		4		2	
6 	 	5		1		4		2		3	
6 	 	5		1		4		3		2	
6 	 	5		2		1		3		4	
6 	 	5		2		1		4		3	
6 	 	5		2		3		1		4	
6 	 	5		2		3		4		1	
6 	 	5		2		4		1		3	
6 	 	5		2		4		3		1	
6 	 	5		3		1		2		4	
6 	 	5		3		1		4		2	
6 	 	5		3		2		1		4	
6 	 	5		3		2		4		1	
6 	 	5		3		4		1		2	
6 	 	5		3		4		2		1	
6 	 	5		4		1		2		3	
6 	 	5		4		1		3		2	
6 	 	5		4		2		1		3	
6 	 	5		4		2		3		1	
6 	 	5		4		3		1		2	
6 	 	5		4		3		2		1	
+
# end listOfSequences 


function det() { 

# the columns of the determinant file must be separated by tabs 

if ! test -f $1 
then 
echo "usage: determinant  file"
echo "the columns of the determinant must be separated by tabulator" 
exit 1 
fi


determinant=$1

dimension=`wc -l $determinant  | awk ' { print $1 } ' `
#echo "dimension of determinant is $dimension" 

if test $dimension -le 1 
then 
echo "this determinant has dimension only $dimension"
exit 1
fi


function Factorial() { 

if test $1 = "0"
then 
factorial=1
else
i=$1
factorial=1
while test $i -gt 1 
do 
factorial=`echo "$factorial $i" | awk ' { printf "%d", $1*$2 }' `
let i=i-1
done
fi

printf "%d \n" $factorial 
} # function Factorial


bigDimension=`Factorial $dimension `
#echo "bigDimension is $bigDimension" 

#wc -l listOfSequences.txt 


 test -f bubbleSort.awk && rm bubbleSort.awk 

cat > bubbleSort.awk <<+
BEGIN { sum = 0 } 

FILENAME != "listOfSequences.txt" { cca = split(\$0, meadow); 
              for (k=1;k<=cca;k++)  a[NR, k] = meadow[k]  
              }
              
FILENAME == "listOfSequences.txt" { cca = split(\$0,field) 
    for(i=1;i<=cca;i++) 
      { j = field[i] 
       printf "%.20f  * ", a[i,j]  }

    transpositions = 0 
   for (ca=cca;ca>=1;ca--) 
    {   for(i=1; i<ca; i++) 
       { if (field[i] > field[i+1]) 
         { auxiliary = field[i]; field[i] = field[i+1]; field[i+1] = auxiliary 
           transpositions++ }
       }
    }
   
   if (FNR < $bigDimension) printf "%d  + \\\\\n", (-1)^transpositions
           else  printf "%d  \n", (-1)^transpositions
      
#sum += product*(-1)^transpositions
}

#END { printf "%.720g \n", sum }
+


awk  -f bubbleSort.awk  $1  listOfSequences.txt  |  bc -l 

rm bubbleSort.awk 
#rm listOfSequences.txt 

} # function det 


   det0=` det matrix0.txt ` ; echo "det0 is $det0"  
   det1=` det matrix1.txt ` ; echo "det1 is $det1"
   det2=` det matrix2.txt ` ; echo "det2 is $det2" 
   det3=` det matrix3.txt ` ; echo "det3 is $det3"
   det4=` det matrix4.txt ` ; echo "det4 is $det4"
   det5=` det matrix5.txt ` ; echo "det5 is $det5"
   det6=` det matrix6.txt ` ; echo "det6 is $det6"
 

  isZero=`echo "$det0 == 0.0" | bc -l ` 
  echo "isZero je $isZero"

  if test $isZero = "1"
  then 
   echo "matrix0 is singular" 
 else

  coeff1=` echo "$det1 / $det0 " | bc -l | awk ' { printf "%.20f", $1 } ' ` 
echo "coeff1 je $coeff1" 
  
  coeff2=` echo "$det2 / $det0 " | bc -l | awk ' { printf "%.20f", $1 } ' ` 
echo "coeff2 je $coeff2" 
  
  coeff3=` echo "$det3 / $det0 " | bc -l | awk ' { printf "%.20f", $1 } ' ` 
echo "coeff3 je $coeff3" 
  
  coeff4=` echo "$det4 / $det0 " | bc -l | awk ' { printf "%.20f", $1 } ' ` 
echo "coeff4 je $coeff4" 
  
  coeff5=` echo "$det5 / $det0 " | bc -l | awk ' { printf "%.20f", $1 } ' ` 
echo "coeff5 je $coeff5" 
  
  coeff6=` echo "$det6 / $det0 " | bc -l | awk ' { printf "%.20f", $1 } ' ` 
echo "coeff6 je $coeff6" 




 a2=$coeff1 
 b2=$coeff2 
  c=$coeff3 
 a1=$coeff4
 b1=$coeff5
 a0=$coeff6 
 
# denominator = 4*a2*b2 - c**2 
# nominatorX = c*b1 - 2*a1*b2 
# nominatorY = c*a1 - 2*a2*b1 

 denominator=` echo "4 * $a2 * $b2 - ${c}^2" | bc -l | awk ' { printf "%.20f", $1 } '`
echo "denominator je $denominator" 

  isZero=`echo "$denominator == 0.0" | bc -l ` 
  echo "isZero je $isZero"

  if test $isZero = "1"
  then 
   echo "some singularity in minimum" 
  else 
 nominatorX=`echo "$c * $b1 - 2 * $a1 * $b2 " | bc -l | awk ' { printf "%.20f", $1 } '` 
 nominatorY=`echo "$c * $a1 - 2 * $a2 * $b1 " | bc -l | awk ' { printf "%.20f", $1 } '` 

minX=` echo "$nominatorX  $denominator" | awk ' { printf "%.20f", $1/$2 } ' `
minY=` echo "$nominatorY  $denominator" | awk ' { printf "%.20f", $1/$2 } ' `
echo "minX je $minX"
echo "minY je $minY"
 
cAmin=`echo "$minX / 10.0" | bc -l | awk ' { printf "%.20f", $1 } ' `
bAmin=`echo "$minY / 10.0" | bc -l | awk ' { printf "%.20f", $1 } ' `

echo "cAmin je $cAmin" 
echo "bAmin je $bAmin" 
fi


# for gnuplot  
 a2=`echo "$coeff1 * 100.0 " | bc -l `
 b2=`echo "$coeff2 * 100.0 " | bc -l `
  c=`echo "$coeff3 * 100.0 " | bc -l `
 a1=`echo "$coeff4 * 10.0 " | bc -l `
 b1=`echo "$coeff5 * 10.0 " | bc -l `
 a0=$coeff6 

 gnuA=` echo "100 * ( $cAmin / $cAOriginal ) - 100.0" | bc -l  | awk ' { printf "%.10f", $1 } ' ` 
 gnuB=` echo "100 * ( $bAmin / $bAOriginal ) - 100.0" | bc -l  | awk ' { printf "%.10f", $1 } ' ` 



#  once more compute 
    parentDirectory=${mySCRATCH}  
    echo "parent directory: " 
    echo $parentDirectory 

   cd ${parentDirectory} 
   test -d ${parentDirectory}/ariel${case}Min && rm -rf ${parentDirectory}/ariel${case}Min 
   mkdir ${parentDirectory}/ariel${case}Min 

    cp -r $case  ariel${case}Min/   
    
     cd ${parentDirectory}/ariel${case}Min/${case}/  

   echo "in $PWD" 
     echo "erasing struct files except BACKUP.struct" 

      for i in *\.struct 
        do 
	 test $i = BACKUP.struct || rm $i 
	done 
	cp BACKUP.struct  ${case}.struct 
    

     cat > ariel${case}Min.txt <<+
3
1
$gnuA  
+
  x optimize < ariel${case}Min.txt ; rm ariel${case}Min.txt  
   mv  ${case}_coa_*\.struct  TEMPORARY.struct
      
      for i in *\.struct 
        do 
	if  test $i == BACKUP.struct  -o $i == TEMPORARY.struct 
	    then 
	      echo "not erasing $i" 
	    else 
	   rm $i 
	fi 
	done 

     mv TEMPORARY.struct ${case}.struct 
     cat > ariel${case}Min.txt <<+
4
1
$gnuB 
+
  x optimize < ariel${case}Min.txt ; rm ariel${case}Min.txt  
   mv  ${case}_boa_*\.struct  ${case}.struct 


   test -f *.broyd*  &&  rm *.broyd*
   test -f *.error*  &&  rm *.error* 
  Computing 
   echo y | clean_lapw -s 

  cd ${parentDirectory}/ariel${case}Min/${case} 
   echo "in $PWD" 
   newENE=`grep :ENE ${case}.scf | tail -1 | awk ' { print $9 } '` 
   echo "energy in $1 : $newENE " 
 
      Aa=` echo "$gnuA" | awk ' { printf "%.5f", $1 } ' ` 
      Bb=` echo "$gnuB" | awk ' { printf "%.5f", $1 } ' ` 

   echo "Aa in minimum is $Aa" 
   echo "Bb in minimum is $Bb" 

 #   cp ${parentDirectory}/ariel${case}Min/${case}/${case}.scf  ${parentDirectory}/${case}/A${Aa}B${Bb}.scf 
    cp ${parentDirectory}/ariel${case}Min/${case}/${case}.scf  ${parentDirectory}/${case}/C${Aa}D${Bb}.scf 
    
cp ${parentDirectory}/ariel${case}Min/${case}/${case}.scf  ${parentDirectory}/ariel${case}Min/${case}/C${Aa}D${Bb}.scf 



oldENE=`sed '/^$/d' ENE | sort -k4 -n | head -1 | awk ' { printf "%.8f", $4 } ' `


isLower=`  echo "$newENE < $oldENE " | bc -l ` 

   if test $isLower = "1" 
 then 
  echo "energy in fitted minimum is lower than any other energy" 
  rm -rf ${parentDirectory}/${case} 
  mv ${parentDirectory}/ariel${case}Min/${case} ${parentDirectory}/ 
  rmdir ${parentDirectory}/ariel${case}Min 
 else 
  echo "Warning: there is a lower energy than that in the fitted minimum" 
  #rm -rf ${parentDirectory}/ariel${case}Min 

  rm -rf ${parentDirectory}/${case} 
  mv ${parentDirectory}/ariel${case}Min/${case} ${parentDirectory}/ 
  rmdir ${parentDirectory}/ariel${case}Min 
  fi 



fi # matrix0 is not singular 

 
  cd ${parentDirectory}/${case}
echo "once more in  $PWD"
echo " to make final file ENE and a graph"
 
 
   test -f ENE && rm ENE 

  for i in C*D*\.scf 
   do 

     grep :LAT $i | tail -1 | awk ' { printf "%.6f \t %.6f \t %.6f \t", $5, $6, $7 } '  
	grep :ENE $i | tail -1 | awk ' { printf "%.6f \n", $9 } '   
done > ENE

cat ENE


  export GDFONTPATH=/usr/share/fonts/bitstream-vera
# for Gnuplot true type fonts 

 test -f ridiciProGnuplot && rm ridiciProGnuplot 

# ridici pro gnuplot means driver for gnuplot 

 cat > ridiciProGnuplot <<+ 
 pocetAtomu = 1 

 set terminal x11 font "rk16"
 
 auToAng = 0.529177249 
  

 set encoding iso 
 set pointsize 2 

hladina =  `sed '/^\$/d' ENE | sort -k4 -n | head -1 | awk ' { printf "%.6f", -\$4 } ' ` 
  print "hladina = ",  hladina

set title "`pwd | awk -F '/' ' { split(\$0,pole,"/") ; print pole[NF] } '`"

  set xlabel "c/a"
  set ylabel "b/a"
  set zlabel "E (eV/cell)"
  set ticslevel 0.02

 set grid 

 splot "ENE.cellShape" using (\$3/\$1):(\$2/\$1):((\$4 + hladina)*13.6058/pocetAtomu) w p pt 7  ti "" 
 a2 = $a2
 b2 = $b2
  c = $c 
 a1 = $a1
 b1 = $b1
 a0 = $a0 

 f(x,y) =  a0 + a1*x + a2*x**2 + b1*y + b2*y**2 + c*x*y 
replot f(x,y)

# replot "ENEpath" using (\$3/\$1):(\$2/\$1):((\$4 + hladina)*13.6058/pocetAtomu) w p pt 4  ti "ENEpath" 

replot "ENEactual" using (\$3/\$1):(\$2/\$1):((\$4 + hladina)*13.6058/pocetAtomu) w p pt 7  ti "" 

+


# gnuplot -persist ridiciProGnuplot  
cp ridiciProGnuplot  showPlot 
 

test -f ${case}_initial.struct &&  rm ${case}_initial.struct 

 hostname 



   echo y | clean_lapw  1> /dev/null  2> /dev/null 

             
   rm ${mySCRATCH}/toDoList.txt 

    cd ${parentDirectory}/${case}  

   echo "in $PWD" 

  if test -d hiddenBox -a -f hiddenBox/BACKUPvol.struct 
  then 
echo "At last "
echo "changing the orthorhombic cell shape for the initial reference volume"  
echo " The initial volume will be referred to later "  

    mv ${case}.struct  hiddenBox/ 
    mv BACKUP.struct  hiddenBox/  
    mv hiddenBox/BACKUPvol.struct $PWD/BACKUP.struct 
 
     echo "erasing struct files except BACKUP.struct" 

      for i in *\.struct 
        do 
	 test $i = BACKUP.struct || rm $i 
	done 
	cp BACKUP.struct  ${case}.struct 

    
 test -f ariel${case}Min.txt && rm ariel${case}Min.txt 

     cat > ariel${case}Min.txt <<+
3
1
$gnuA  
+
  x optimize < ariel${case}Min.txt ; rm ariel${case}Min.txt  
   mv  ${case}_coa_*\.struct  TEMPORARY.struct
      
      for i in *\.struct 
        do 
	if  test $i == BACKUP.struct  -o $i == TEMPORARY.struct 
	    then 
	      echo "not erasing $i" 
	    else 
	   rm $i 
	fi 
	done 

     mv TEMPORARY.struct ${case}.struct 
     cat > ariel${case}Min.txt <<+
4
1
$gnuB 
+
  x optimize < ariel${case}Min.txt ; rm ariel${case}Min.txt  
   mv  ${case}_boa_*\.struct  BACKUPvol.struct 

 rm BACKUP.struct  

 mv hiddenBox/${case}.struct $PWD/ 
 
 mv ${case}.scf hiddenBox/ 
 cd hiddenBox 
  cp ${case}.scf A${step}.scf 
 cd ..
 echo "After running cellShapeOrtho hiddenBox contains: " 
 ls hiddenBox
  
  echo "erasing all scf files and replacing them by scf files from hiddenBox" 
  rm *.scf 
  cd hiddenBox 
  mv * ../
  cd ..
 echo "back from hiddenBox in $PWD" 
  rmdir hiddenBox 

 cp ENE ENE.cellShape 
 cp showPlot showPlotCellShape 

 else 
 cp ENE ENE.cellShape 

 fi  # test -d hiddenBox -a -f hiddenBox/BACKUPvol.struct  

 rm matrix*\.awk  
 rm matrix*\.txt 
 rm columnB\.txt 
 rm ridiciProGnuplot 


 test -f ENEactual && rm ENEactual 
( grep :LAT ${case}.scf | tail -1 | awk ' { printf "%.5f \t %.5f \t %.5f \t", $5, $6, $7 } '   
  grep :ENE ${case}.scf | tail -1 | awk ' { print $9 } ' ) > ENEactual 


 echo "script cellShapeOrtho in $PWD ends" 
 hostname 

      
  


