[a0bcf1] | 1 | #!/bin/sh
|
---|
| 2 |
|
---|
| 3 | if [ -z "$2" ]; then
|
---|
| 4 | echo "Usage: $0 <xyzfile> <path-to-target>"
|
---|
| 5 | exit 1
|
---|
| 6 | fi
|
---|
| 7 |
|
---|
| 8 | mol="${1}.xyz"
|
---|
| 9 | #pfad="${2}/`basename ${1}`"
|
---|
| 10 | pfad="$2"
|
---|
| 11 | molecuilder="/home/heber/workspace/pcp_alternate/bin/"
|
---|
| 12 | pseudopot="/home/heber/workspace/pcp_alternate/defaults/pseudopot"
|
---|
| 13 |
|
---|
| 14 | echo "Target dir is ${pfad}, using xyz file ${mol}."
|
---|
| 15 |
|
---|
| 16 | # Create path
|
---|
| 17 | mkdir -p "${pfad}"
|
---|
| 18 |
|
---|
| 19 | number=`wc $mol | awk -F' ' {'print $1-2'}`
|
---|
| 20 | MOL=( `tail $mol -n $number | awk -F" " {'print $1'}` )
|
---|
| 21 | X=( `tail $mol -n $number | awk -F" " {'print $2'}` )
|
---|
| 22 | Y=( `tail $mol -n $number | awk -F" " {'print $3'}` )
|
---|
| 23 | Z=( `tail $mol -n $number | awk -F" " {'print $4'}` )
|
---|
| 24 |
|
---|
| 25 | cd $molecuilder
|
---|
| 26 | ./molecuilder "${pfad}/main_pcp_linux" -p ${pfad}/${mol} 2>/dev/null
|
---|
| 27 |
|
---|
| 28 | echo "Scaling by 1.8897261 ..."
|
---|
| 29 | ./molecuilder "${pfad}/main_pcp_linux" -s 1.8897261
|
---|
| 30 |
|
---|
| 31 | echo "Translating within boundary box (5.,5.,5.) ..."
|
---|
| 32 | ./molecuilder "${pfad}/main_pcp_linux" -g 5. 5. 0.
|
---|
| 33 |
|
---|
| 34 | echo "changing path"
|
---|
| 35 | sed -i -e "s#defaultpath.*\# \(.*\)#defaultpath\t${pfad}/\t\# \1#" -e "s#pseudopotpath.*\# \(.*\)#pseudopotpath\t${pseudopot}/\t\# \1#" "${pfad}/main_pcp_linux"
|
---|
| 36 |
|
---|
| 37 | echo -n "Creating list of elements ... "
|
---|
| 38 | elements=( `more "${pfad}/main_pcp_linux" | grep -v ^# | grep -v 'Ion_Type.*_.*' | grep Ion_Type | awk -F"\t" {'print $3'}` )
|
---|
| 39 | factors=( `more "${pfad}/main_pcp_linux" | grep -v ^# | grep -v 'Ion_Type.*_.*' | grep Ion_Type | awk -F"\t" {'print $2'}` )
|
---|
| 40 | maxtypes=`more "${pfad}/main_pcp_linux" | grep MaxTypes | awk -F"\t" {'print $2'}`
|
---|
| 41 | echo "done."
|
---|
| 42 |
|
---|
| 43 | echo -n "Calculating number of orbitals needed ..."
|
---|
| 44 | orbitals=0
|
---|
| 45 | i=0
|
---|
| 46 | while [ "$i" -lt "$maxtypes" ]; do
|
---|
| 47 | #echo "Checking on element ${elements[$i]}"
|
---|
| 48 | if [ "${elements[$i]}" -lt "10" ]; then
|
---|
| 49 | zahl=`head -n 1 $pseudopot/pseudo.0${elements[$i]} | awk -F" " {'print $1'}`
|
---|
| 50 | zahl=`awk "BEGIN { print $zahl; }"`
|
---|
| 51 | else
|
---|
| 52 | zahl=`head -n 1 $pseudopot/pseudo.${elements[$i]} | awk -F" " {'print $1'}`
|
---|
| 53 | zahl=`awk "BEGIN { print $zahl; }"`
|
---|
| 54 | fi
|
---|
| 55 | let zahl="$zahl*${factors[$i]}"
|
---|
| 56 | let orbitals="$orbitals+$zahl"
|
---|
| 57 | let i=$i+1
|
---|
| 58 | done
|
---|
| 59 | orbitalrest=`awk "BEGIN { print $orbitals % 2; }"`
|
---|
| 60 | orbitals=`awk "BEGIN { print $orbitals / 2; }"`
|
---|
| 61 | echo "done."
|
---|
| 62 | echo "Suggested SpinType: $orbitalrest"
|
---|
| 63 |
|
---|
| 64 | echo -n " changing ..."
|
---|
| 65 | if [ "$orbitalrest" == "0" ]; then
|
---|
| 66 | # even number: calculate with doubly occupied
|
---|
| 67 | sed -i -e "s#^PsiType\t\t.*#PsiType\t\t0#" "${pfad}/main_pcp_linux"
|
---|
| 68 | else
|
---|
| 69 | # odd number: calculate with single occupation (at least two Psi processes needed)
|
---|
| 70 | sed -i -e "s#^PsiType\t\t.*#PsiType\t\t1#" "${pfad}/main_pcp_linux"
|
---|
| 71 | sed -i -e "s#^ProcPEPsi\t\t.*#ProcPEPsi\t\t2#" "${pfad}/main_pcp_linux"
|
---|
| 72 | fi
|
---|
| 73 | sed -i -e "s#^PsiMaxNoDown\t.*#PsiMaxNoDown\t$orbitals#" "${pfad}/main_pcp_linux"
|
---|
| 74 | sed -i -e "s#^MaxPsiDouble\t.*#MaxPsiDouble\t$orbitals#" "${pfad}/main_pcp_linux"
|
---|
| 75 | sed -i -e "s#^MaxMinStopStep\t.*#MaxMinStopStep\t$orbitals#" "${pfad}/main_pcp_linux"
|
---|
| 76 | sed -i -e "s#^InitMaxMinStopStep\t.*#InitMaxMinStopStep\t$orbitals#" "${pfad}/main_pcp_linux"
|
---|
| 77 | # add odd rest upon SpinUp state number
|
---|
| 78 | let orbitals=$orbitals+$orbitalrest
|
---|
| 79 | sed -i -e "s#^PsiMaxNoUp\t.*#PsiMaxNoUp\t$orbitals#" "${pfad}/main_pcp_linux"
|
---|
| 80 |
|
---|
| 81 | echo "done."
|
---|