Freq.s: Difference between revisions

From Wiki
Jump to navigation Jump to search
New page: # # Gerard Novell Leruth # Conversion archivos OUTCAR de frecuencias VASP 4.6 a molden format # Uso: freq46 OUTCAR # file=$1 echo [MOLDEN FORMAT] > MOLCAR echo [FREQ] >> MOLCAR declare -...
 
Dkarhanek (talk | contribs)
mNo edit summary
 
(12 intermediate revisions by 3 users not shown)
Line 1: Line 1:
#
go back to [[Main Page]], [[Computational Resources]], [[Scripts]], [[Scripts for VASP]]
# Gerard Novell Leruth
# Conversion archivos OUTCAR de frecuencias VASP 4.6 a molden format
# Uso: freq46 OUTCAR
#


file=$1
Execute this script (freq.s OUTCAR) will generate a file called MOLCAR. This file is legible for MOLDEN, and includes all the vibrations.
echo [MOLDEN FORMAT] > MOLCAR


echo [FREQ] >> MOLCAR
#!/bin/bash
declare -a typ_freq
# Gerard Novell Leruth
declare -a list_freq
# Conversion archivos OUTCAR de frecuencias VASP 4.6 a molden format
declare -a num_ions_type
# Uso: freq.s OUTCAR
 
#
num_freq=$(grep cm-1 $file | awk '{print $1}' | tail -1)
list_freq=($(grep cm-1 $file | cut -b 10- | awk '{print $5}' | tail -$num_freq))
file=$1
typ_freq=($(grep cm-1 $file |  awk '{print $2}' ))
echo [MOLDEN FORMAT] > MOLCAR
 
let k=$num_freq-1
echo [FREQ] >> MOLCAR
for i in $(seq 0 $k); do
declare -a typ_freq
    if [[ ${typ_freq[$i]} = "f/i=" ]];then
declare -a list_freq
declare -a num_ions_type
num_freq=$(grep cm-1 $file | awk '{print $1}' | tail -1)
list_freq=($(grep cm-1 $file | cut -b 10- | awk '{print $5}' | tail -$num_freq))
typ_freq=($(grep cm-1 $file |  awk '{print $2}' ))
let k=$num_freq-1
for i in $(seq 0 $k); do
  <nowiki>if [[ ${typ_freq[$i]} = "f/i=" ]];then</nowiki>
         list_freq[$i]=-${list_freq[$i]}
         list_freq[$i]=-${list_freq[$i]}
     fi
     fi
     echo ${list_freq[$i]} >> MOLCAR  
     echo ${list_freq[$i]} >> MOLCAR  
done
done
 
num_ions_type=($(grep "ions per type" $file | cut -b 20- ))
num_ions_type=($(grep "ions per type" $file | cut -b 20- ))
let j=$(grep -c POTCAR $file)/2
let j=$(grep -c POTCAR $file)/2
for i in $(seq 1 $j); do
for i in $(seq 1 $j); do
  let k=$i-1
    let k=$i-1
  ions_type[$k]=$(grep POTCAR $file | awk '{print $3}' | head -$i | tail -1  )
    ions_type[$k]=$(grep POTCAR $file | awk '{print $3}' | head -$i | tail -1  )
done
done
num_ions=$(grep IONS $file | awk '{print $12}')
num_ions=$(grep IONS $file | awk '{print $12}')
 
echo [FR-COORD] >> MOLCAR
echo [FR-COORD] >> MOLCAR
let k=$num_ions
let k=$num_ions
p=0
p=0
j=${num_ions_type[$p]}
j=${num_ions_type[$p]}
cap=0
cap=0
for i in $(seq 1 $k); do
for i in $(seq 1 $k); do
    atom=${ions_type[$p]}
    atom=${ions_type[$p]}
    if [[ $j = $i && $j != $k ]]; then
    <nowiki>if [[ $j = $i && $j != $k ]]; then</nowiki>
         let p=$p+1
         let p=$p+1
         let j=$j+${num_ions_type[$p]}
         let j=$j+${num_ions_type[$p]}
Line 46: Line 50:
     let cap=$i+1
     let cap=$i+1
     b=1.8897
     b=1.8897
     X=$(echo "sacale=5; $(grep -$cap cm-1 $file | tail -1 | awk '{print $1}')*$b " | bc)
     X=$(echo "scale=5; $(grep -$cap cm-1 $file | tail -1 | awk '{print $1}')*$b " | bc)
     Y=$(echo "sacale=5;  $(grep -$cap cm-1 $file | tail -1 | awk '{print $2}')*$b " | bc)
     Y=$(echo "scale=5;  $(grep -$cap cm-1 $file | tail -1 | awk '{print $2}')*$b " | bc)
     Z=$(echo "sacale=5;  $(grep -$cap cm-1 $file | tail -1 | awk '{print $3}')*$b " | bc)
     Z=$(echo "scale=5;  $(grep -$cap cm-1 $file | tail -1 | awk '{print $3}')*$b " | bc)
     echo $atom $X $Y $Z >> MOLCAR
     echo $atom $X $Y $Z >> MOLCAR
done
done
 
echo [FR-NORM-COORD] >> MOLCAR
echo [FR-NORM-COORD] >> MOLCAR
 
for i in $(seq 1 $num_freq); do
for i in $(seq 1 $num_freq); do
     echo vibration  $i >> MOLCAR
     echo vibration  $i >> MOLCAR
     cap=1
     cap=1
Line 61: Line 65:
         let cap=$cap+1
         let cap=$cap+1
         b=1.8897
         b=1.8897
         dX=$(echo "sacale=5; $(grep -$cap "$txt" $file | tail -1 | awk '{print $4}')*$b " | bc)
         dX=$(echo "scale=5; $(grep -$cap "$txt" $file | tail -1 | awk '{print $4}')*$b " | bc)
         dY=$(echo "sacale=5;  $(grep -$cap "$txt" $file | tail -1 | awk '{print $5}')*$b " | bc)
         dY=$(echo "scale=5;  $(grep -$cap "$txt" $file | tail -1 | awk '{print $5}')*$b " | bc)
         dZ=$(echo "sacale=5;  $(grep -$cap "$txt" $file | tail -1 | awk '{print $6}')*$b " | bc)
         dZ=$(echo "scale=5;  $(grep -$cap "$txt" $file | tail -1 | awk '{print $6}')*$b " | bc)
         echo $dX $dY $dZ >> MOLCAR
         echo $dX $dY $dZ >> MOLCAR
     done
     done
done
done
 
molden MOLCAR
molden MOLCAR
 
#rm MOLCAR
#rm MOLCAR

Latest revision as of 13:56, 21 September 2010

go back to Main Page, Computational Resources, Scripts, Scripts for VASP

Execute this script (freq.s OUTCAR) will generate a file called MOLCAR. This file is legible for MOLDEN, and includes all the vibrations.

#!/bin/bash
# Gerard Novell Leruth
# Conversion archivos OUTCAR de frecuencias VASP 4.6 a molden format
# Uso: freq.s OUTCAR
#

file=$1
echo [MOLDEN FORMAT] > MOLCAR

echo [FREQ] >> MOLCAR
declare -a typ_freq
declare -a list_freq
declare -a num_ions_type

num_freq=$(grep cm-1 $file | awk '{print $1}' | tail -1)
list_freq=($(grep cm-1 $file | cut -b 10- | awk '{print $5}' | tail -$num_freq))
typ_freq=($(grep cm-1 $file |  awk '{print $2}' ))

let k=$num_freq-1
for i in $(seq 0 $k); do
 if [[ ${typ_freq[$i]} = "f/i=" ]];then
       list_freq[$i]=-${list_freq[$i]}
   fi
   echo ${list_freq[$i]} >> MOLCAR 
done

num_ions_type=($(grep "ions per type" $file | cut -b 20- ))
let j=$(grep -c POTCAR $file)/2
for i in $(seq 1 $j); do
   let k=$i-1
   ions_type[$k]=$(grep POTCAR $file | awk '{print $3}' | head -$i | tail -1  )
done
num_ions=$(grep IONS $file | awk '{print $12}')

echo [FR-COORD] >> MOLCAR
let k=$num_ions
p=0
j=${num_ions_type[$p]}
cap=0
for i in $(seq 1 $k); do
    atom=${ions_type[$p]}
    if [[ $j = $i && $j != $k ]]; then 
       let p=$p+1
       let j=$j+${num_ions_type[$p]}
   fi
   let cap=$i+1
   b=1.8897
   X=$(echo "scale=5; $(grep -$cap cm-1 $file | tail -1 | awk '{print $1}')*$b " | bc)
   Y=$(echo "scale=5;  $(grep -$cap cm-1 $file | tail -1 | awk '{print $2}')*$b " | bc)
   Z=$(echo "scale=5;  $(grep -$cap cm-1 $file | tail -1 | awk '{print $3}')*$b " | bc)
   echo $atom $X $Y $Z >> MOLCAR
done

echo [FR-NORM-COORD] >> MOLCAR

for i in $(seq 1 $num_freq); do
   echo vibration  $i >> MOLCAR
   cap=1
   txt=$i" f" 
   for t in $(seq 1 $num_ions); do
       let cap=$cap+1
        b=1.8897
        dX=$(echo "scale=5; $(grep -$cap "$txt" $file | tail -1 | awk '{print $4}')*$b " | bc)
        dY=$(echo "scale=5;  $(grep -$cap "$txt" $file | tail -1 | awk '{print $5}')*$b " | bc)
        dZ=$(echo "scale=5;  $(grep -$cap "$txt" $file | tail -1 | awk '{print $6}')*$b " | bc)
        echo $dX $dY $dZ >> MOLCAR
   done
done

molden MOLCAR

#rm MOLCAR