Differences

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

bulk_optimization [2011/02/18 13:13]
127.0.0.1 external edit
bulk_optimization [2014/02/09 11:23] (current)
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 by dani
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki