User Tools

Site Tools


bulk_optimization

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
bulk_optimization [2010/05/05 17:36]
jelen
bulk_optimization [2014/02/09 11:23]
dani
Line 122: Line 122:
  
 {{:​si-bulk:​etot-alat.png|}} {{:​si-bulk:​etot-alat.png|}}
 +===== The bulk modulus =====
 +
 +  $ ls
 +  Fdata  uno.bas ​ uno.kpts ​ uno.lvs ​ vol.sh
 +  ​
 +  $ head uno.bas
 +  2
 +  14      0.000000 ​     0.000000 ​     0.000000
 +  14      0.250000 ​     0.250000 ​     0.250000
 +  ​
 +  $ head uno.kpts
 +  32 
 +  -2.35619449 ​        ​-2.35619449 ​        ​-2.35619449 ​       0.03125000
 +  -3.92699081 ​        ​-0.78539816 ​        ​-0.78539816 ​       0.03125000
 +  -5.49778713 ​         0.78539816 ​         0.78539816 ​       0.03125000
 +  -7.06858347 ​         2.35619449 ​         2.35619449 ​       0.03125000
 +  -0.78539816 ​        ​-3.92699081 ​        ​-0.78539816 ​       0.03125000
 +  -2.35619449 ​        ​-2.35619449 ​         0.78539816 ​       0.03125000
 +  -3.92699081 ​        ​-0.78539816 ​         2.35619449 ​       0.03125000
 +  -5.49778713 ​         0.78539816 ​         3.92699081 ​       0.03125000
 +   ​0.78539816 ​        ​-5.49778713 ​         0.78539816 ​       0.03125000 ​
 +  ​
 +  $ head  uno.lvs
 +  0.5000 ​   0.5000 ​   0.0000
 +  0.5000 ​   0.0000 ​   0.5000
 +  0.0000 ​   0.5000 ​   0.5000
 +
 +The script to calculate the bulk modulus
 +  $ cat vol.sh ​
 +  #!/bin/bash
 +   
 +  ##----- Parametros de control (el parametro de red tiene que encontrase entre ini fin  --------##
 +  N=10
 +  ini=5.0
 +  fin=6.0 ​
 +   
 +  ##​----------Funcion analisis para dos atomos/​celda-----------------------------------------##​
 +  function analisis {
 +  ETOT=$(grep '​ETOT'​ salida.out|cut -d'​='​ -f2)
 +  sigma=$(grep sigma salida.out | cut -d'​='​ -f16 | tail -1)
 +  charge=$(head -2 uno.bas | tail -1 | tr -s ' ' | cut -d' ' -f2)' -> '​$(head -2 CHARGES | tail -1)
 +  charge=$charge'​ ;'​$(head -3 uno.bas | tail -1 | tr -s ' ' | cut -d' ' -f2)' -> '
 +  charge=$charge$(tail -1 CHARGES)
 +  echo $rescal$'​\t'​$ETOT$'​\t'​$sigma$'​\t'​$charge$'​\t'>>​salida
 +  }
 +  ##​------------------------------------------------------------------------------------------##​
 +  function start {
 +  rm -fr salida
 +  for((i=0;​i<​=N;​i++))
 +  do
 +  rescal=$(python -c "print '​%.6f'​ % ($i*1.0*($fin-$ini)/​$N+$ini)"​)
 +  echo "&​option
 +  basisfile = uno.bas
 +  lvsfile = uno.lvs
 +  kptpreference = uno.kpts
 +  rescal = $rescal
 +  sigmatol = 0.000001
 +  nstepf = 1
 +  &end
 +  &output
 +  iwrtxyz = 1
 +  &​end"​ > fireball.in ​
 +  ../​progs/​fireball.x > salida.out ​   ​
 +  ​
 +  analisis
 +  done
 +  }
 +  ##​----------------------------------1º start  ----------------------------------------------##​
 +  start
 +  ##​-----------------------------buscamos el minimo ------------------------------------------##​
 +  min=$(python -c "
 +  x0 = []
 +  y0 = []
 +  for line in file(\"​salida\"​):​
 +     line = line.split()
 +     x = line[0]
 +     y = line[1]
 +     ​x0.append(x)
 +     ​y0.append(y)  ​
 +  ​
 +  j=0
 +  for i in range(len(x0)):​
 +    if y0[j]< y0[i]:
 +      j=i
 +  print x0[j]"​)
 +  cp salida borrar
 +  rm -fr aux.py  ​       ​
 +  ​
 +  ##​----------------------------------2º start -----------------------------------------------##​
 +  N=40
 +  d=0.4
 +  ini=$(python -c "print '​%.6f'​ % (1.0*($min-$d))"​)
 +  fin=$(python -c "print '​%.6f'​ % (1.0*($min+$d))"​)
 +  start
 +  mv salida Vol.dat
 +  ##​------------------------------------------------------------------------------------------##  ​
 +
 +In the 1º start of the script "​vol.sh"​ takes 10 points between 5-6:
 +
 +{{:​bulk-si-10.png|}}
 +
 +In the 2º start of the script "​vol.sh"​ takes 40 points between the minimum of the 1º start
 +
 +{{:​si-bulk-40.png|}}
 +
 +The scripts uses the parameter rescal in fireball.in and unitary positions and lattice vectors with 2 atoms/cell
 +to obtain the kpts points we used xeo:
 +
 +{{:​xeo-menu-kpts.png|}}
 +
 +{{:​xeo-kpts.png|}}
 +
 +The bulk mudulus can be calculed also with xeo (Utilities->​Bulk modulus), in the in line command:
 +
 +  $ xeo -Bulk Vol.dat zincblende
 +  E_min =     ​-214.35239 ​   eV
 +  a_min =        5.43719 ​   angs 
 +  Volumen =       ​40.18518 ang**3 ​
 +  Bulk modulus =      100.79399 ​ GPa
 +
 +
  
bulk_optimization.txt · Last modified: 2014/02/09 11:23 (external edit)