This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
band_structure [2012/11/30 10:16] dani |
band_structure [2014/10/20 12:42] (current) |
||
|---|---|---|---|
| Line 18: | Line 18: | ||
| Fermi Level = -4.33045968490834 | Fermi Level = -4.33045968490834 | ||
| - | In next step, we run the ''FIREBALL'' code again, but now with fixed charges (**''ifixcharge = 1''**) and with a new set of k-points in desired high-symmetry directions in the first Brillouin zone. Remember we need having **''CHARGES''** file in a working directory for a restart. In this particular case,we have chosen a direction ''L-Γ-X-Γ'' stored in a **''lgxg.kpts''** file (see also fig. 1). | + | In next step, we run the ''FIREBALL'' code again, but now with fixed charges (**''ifixcharge = 1''**) and with a new set of k-points in desired high-symmetry directions in the first Brillouin zone. Remember we need having **''CHARGES''** file in a working directory for a restart. In this particular case,we have chosen a direction ''L-Γ-X-Γ'' stored in a **''{{:lgxg.kpts|lgxg.kpts}}''** file (see also fig. 1). |
| Line 59: | Line 59: | ||
| | | ||
| + | |||
| ===== DOS ===== | ===== DOS ===== | ||
| Line 97: | Line 98: | ||
| {{:si-bulk:pdos-si_bulk.png?400|DOS Si Bulk}} | {{:si-bulk:pdos-si_bulk.png?400|DOS Si Bulk}} | ||
| - | |||
| - | ===== 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 | ||