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