This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
how_to_prepare_the_new_tip_and_sample_for_stm_simulations [2009/11/25 14:27] vroz |
how_to_prepare_the_new_tip_and_sample_for_stm_simulations [2011/02/18 13:13] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
\\ | \\ | ||
- | ==== I. The geometry ==== | + | ==== The geometry ==== |
First of all we need the “*.bas” file of the tip and sample geometry | First of all we need the “*.bas” file of the tip and sample geometry | ||
Line 23: | Line 23: | ||
- | ==== II. The files we need ==== | + | ==== The files we need ==== |
Line 107: | Line 107: | ||
modify in dependence what output format you expect (read the “README” file of | modify in dependence what output format you expect (read the “README” file of | ||
this script). | this script). | ||
- | The “run_hops.com” script: | + | |
- | #!/bin/bash | + | == II.II.I. The “run_hops.com” script: == |
- | #mv -f interactions.dat interactions.dat.old | + | |
- | echo 1 > lockfile | + | #!/bin/bash \\ |
- | tipo1="`cat lista`" | + | #mv -f interactions.dat interactions.dat.old \\ |
- | for i in $tipo1; do | + | echo 1 > lockfile \\ |
- | tipo2="`cat lockfile`" | + | tipo1="`cat lista`" \\ |
- | if [ $tipo2 == "2" ]; then | + | for i in $tipo1; \\ |
- | echo 1 > lockfile | + | do \\ |
- | name2="`echo $i`"; | + | tipo2="`cat lockfile`" \\ |
- | sed "s/AAAAAAA/$name2/g" tip_sample_aux >> | + | if [ $tipo2 == "2" ]; \\ |
- | interactions.dat; | + | then \\ |
- | echo $i | + | echo 1 > lockfile\\ |
- | else | + | name2="`echo $i`"; \\ |
- | echo 2 > lockfile | + | sed "s/AAAAAAA/$name2/g" tip_sample_aux >> interactions.dat; \\ |
- | name1="`echo $i`"; | + | echo $i \\ |
- | sed "s/AAAAAAA/$name1/g" model.bas > tmp.bas; | + | else \\ |
- | ./fireball.k.x > out_tmp; | + | echo 2 > lockfile \\ |
- | fi | + | name1="`echo $i`"; \\ |
- | done | + | sed "s/AAAAAAA/$name1/g" model.bas > tmp.bas; \\ |
- | cat header.dat > interaction_X_Y.dat | + | ./fireball.k.x > out_tmp; \\ |
- | cat interactions.dat >> interaction_X_Y.dat | + | fi \\ |
- | rm -f lockfile | + | done \\ |
- | rm -f inter_aux.dat | + | cat header.dat > interaction_X_Y.dat \\ |
+ | cat interactions.dat >> interaction_X_Y.dat \\ | ||
+ | rm -f lockfile \\ | ||
+ | rm -f inter_aux.dat \\ | ||
rm -f tip_sample_aux | rm -f tip_sample_aux | ||
- | The “README” file: | + | |
- | ************a short description how to generate hopping data | + | == II.II.II. The “README” file: == |
- | files we need: | + | |
- | fireball.in | + | a short description how to generate hopping data \\ |
- | model.bas | + | files we need: \\ |
- | lista | + | fireball.in \\ |
- | header.dat | + | model.bas \\ |
- | =======A. edit: | + | lista \\ |
- | CHARGES | + | header.dat \\ |
- | model.bas | + | |
- | =======B. edit run_hops.com | + | =======A. edit: \\ |
- | if you need the fireball output format, than to the | + | CHARGES \\ |
- | interactions.dat you have to write | + | model.bas \\ |
- | the inter_aux.dat | + | |
- | if you need the STM code output format, than to the | + | =======B. edit run_hops.com \\ |
- | interactions.dat you have to write | + | If you need the **fireball output format**, than to the |
- | the tip_sample_aux | + | "interactions.dat" you have to write |
- | *****The difference is amount of some writen informations at | + | the inter_aux.dat \\ |
- | the header of interaction (hopping) file,***** | + | If you need the **STM code output format**, than to the |
- | *****number of interactions and even the length units. For | + | "interactions.dat" you have to write |
- | STM format it is a.u. when for the fireball***** | + | the tip_sample_aux. \\ |
- | *****format it is Angstroms. | + | |
- | ***** | + | The difference is amount of some writen informations at |
- | =======C. launch | + | the header of interaction (hopping) file, number of interactions and even the length units. For |
- | ./run_hop.com | + | STM format it is a.u. when for the fireball format it is Angstroms. |
- | =======D. modify header of interacti_X_Y.dat file | + | |
- | ***************** Interactions for W(spd)-C(sp) using | + | =======C. launch \\ |
- | FIREBALL program ******* | + | ./run_hop.com \\ |
- | 57 !number of distances | + | |
- | 2.00000 30.00000 !dist_min dist_max | + | =======D. modify header of interacti_X_Y.dat file \\ |
- | 10 !number of interactions | + | !*Interactions for W(spd)-C(sp) using FIREBALL program*! \\ |
- | in the case you choose the STM output format, don't forget | + | 57 !number of distances \\ |
+ | 2.00000 30.00000 !dist_min, dist_max \\ | ||
+ | 10 !number of interactions \\ | ||
+ | |||
+ | //In the case you choose the STM output format, don't forget | ||
to remove duplicate (symmetric) interactions | to remove duplicate (symmetric) interactions | ||
- | from the interactions_X_Y.inp file. You have to write there | + | from the "interactions_X_Y.inp" file. You have to write there |
even the line of 3 more numbers (2 3 10) | even the line of 3 more numbers (2 3 10) | ||
which gives us the number of the shells of the tip and | which gives us the number of the shells of the tip and | ||
- | sample respectively. | + | sample respectively.// |
- | ***************** Interactions for W(spd)-C(sp) using | + | |
- | FIREBALL program ******* | + | !*Interactions for W(spd)-C(sp) using FIREBALL program*! \\ |
- | 57 !number of distances | + | 57 !number of distances \\ |
- | 2.00000 30.00000 !dist_min dist_max | + | 2.00000 30.00000 !dist_min, dist_max \\ |
2 3 10 !number of shells of the tip, of the | 2 3 10 !number of shells of the tip, of the | ||
- | sample, number of interactions | + | sample, number of interactions \\ |
- | If we put the hoppings for all the distances in a file, we will have the basis | + | |
- | for the tip_sample_i_j.inp (or interaction_i_j.dat) files (see the example in the STM | + | //If we put the hoppings for all the distances in a file, we will have the basis |
+ | for the "tip_sample_i_j.inp" (or "interaction_i_j.dat") files (see the example in the **STM** | ||
code). Then we have to complete the file with the parameters for the long | code). Then we have to complete the file with the parameters for the long | ||
- | distances approximation. See the header: | + | distances approximation.// \\ |
- | * Interactions for W‐Tid using FIREBALL program * | + | Look at the header: |
- | 57 | + | |
- | 2.000000 30.00000 | + | !*Interactions for W‐Tid using FIREBALL program*! \\ |
- | 3 3 14 | + | 57 \\ |
- | 0 0 0 ‐21.0000 1.0000 0.5738 1 1 14.5000 | + | 2.000000 30.00000 \\ |
- | 0 1 0 95.0000 1.0000 0.5738 1 1 16.5000 | + | 3 3 14 \\ |
- | …. | + | 0 0 0 ‐21.0000 1.0000 0.5738 1 1 14.5000 \\ |
+ | 0 1 0 95.0000 1.0000 0.5738 1 1 16.5000 \\ | ||
+ | . \\ | ||
+ | . \\ | ||
+ | . \\ | ||
where 57 is the number of distance steps, from 2 au to 30 ua. 3 and 3 are | where 57 is the number of distance steps, from 2 au to 30 ua. 3 and 3 are | ||
the number of shells for each kind of atom on the tip and the sample respectively. | the number of shells for each kind of atom on the tip and the sample respectively. | ||
14 is the total number of interactions for each distance. Finally, the 14 next rows | 14 is the total number of interactions for each distance. Finally, the 14 next rows | ||
are related with the long‐range approximation. 0,0,0 means orbital s (0)in the tip | are related with the long‐range approximation. 0,0,0 means orbital s (0)in the tip | ||
- | and orbital s (0) in the sample and a interaction sigma (0). Orbitals p will be 1 | + | and orbital s (0) in the sample and an interaction sigma (0). Orbitals p will be 1 |
- | and d 2, the interaction pi will be 1 and delta 2. | + | and d 2, the interaction pi will be 1 and delta 2. \\ |
For long distances, we do the parallel planes approximation using | For long distances, we do the parallel planes approximation using | ||
- | the expression: . The A (4th value in the row) is the independent value we | + | the expression: \\ |
- | have to find. α (5th value) depends on the orbitals you have in the hoppings, the | + | |
+ | A.e<sup>-W.r</sup> | ||
+ | |||
+ | The "A" (4th value in the row) is the independent value we | ||
+ | have to find. "α" (5th value) depends on the orbitals you have in the hoppings, the | ||
expression used is: α=l1+l2+1, but sometimes it could be changed depending on | expression used is: α=l1+l2+1, but sometimes it could be changed depending on | ||
- | the fix conditions. Finally, the W (6th) is related with the work function of the | + | the fix conditions. The "W" (6th) is related with the work function of the |
- | materials in the hopping: where ω’s are the work function for | + | materials in the hopping: |
- | each kind of atom. There is no function as BEGIN or CREATE to calculate these | + | |
- | long‐distance parameters, but there is a tool in the XEO program made by Daniel | + | W = ((ω<sub>T</sub> + ω<sub>S</sub>) / 2)<sup>1/2</sup> |
- | Gonzalez. Here you have to change by hand the values of A till you “see” (with the | + | |
+ | where ω’s are the work function for | ||
+ | each kind of atom. There is no function as **BEGIN** or **CREATE** to calculate these | ||
+ | long‐distance parameters, but there is a tool in the **XEO** program made by Daniel | ||
+ | Gonzalez. Here you have to change by hand the values of "A" till you “see” (with the | ||
eyes) a coincidence in the value and the derivative. Finally, let’s mention that the | eyes) a coincidence in the value and the derivative. Finally, let’s mention that the | ||
7th and 8th values in the row are related with the simple basis or double basis | 7th and 8th values in the row are related with the simple basis or double basis | ||
case. When you have a double basis you need an extra parameter to differentiate | case. When you have a double basis you need an extra parameter to differentiate | ||
- | from the simple basis orbital. The last value is the cut‐off radius. | + | from the simple basis orbital. \\ |
- | II.III. tip_g_str.inp | + | The last value is the cut‐off radius. |
+ | |||
+ | Here you can download : \\ | ||
+ | ========================. \\ | ||
+ | ="run_hops.com" script \\ | ||
+ | ="README" file \\ | ||
+ | ========================. | ||
+ | |||
+ | \\ | ||
+ | |||
+ | === II.III. tip_g_str.inp === | ||
Last thing which we have to do is to write the “tip_g_str.inp” file. This file | Last thing which we have to do is to write the “tip_g_str.inp” file. This file | ||
contains the geometrical structure of the tip. The xyz atom coordinates should be | contains the geometrical structure of the tip. The xyz atom coordinates should be | ||
written there at the same order as we used for the “tip_e_str.inp” file, with the | written there at the same order as we used for the “tip_e_str.inp” file, with the | ||
- | apex atom at first position. The file could looks like this: | + | apex atom at first position. The file could looks like this: \\ |
- | 1 5 ! natoms_tip_contributing, natoms_tip | + | |
- | 0.000000 0.000000 0.400000 1 9 ! x, y, z, atomic type, # of orbitals | + | 1 5 ! natoms_tip_contributing, natoms_tip \\ |
- | 1.590800 1.590800 1.590800 1 9 ! x, y, z, atomic type, # of orbitals | + | 0.000000 0.000000 0.400000 1 9 ! x, y, z, atomic type, # of orbitals \\ |
- | 1.590800 ‐1.59080 1.59080 1 9 ! x, y, z, atomic type, # of orbitals | + | 1.590800 1.590800 1.590800 1 9 ! x, y, z, atomic type, # of orbitals \\ |
- | ‐1.590800 1.59080 1.59080 1 9 ! x, y, z, atomic type, # of orbitals | + | 1.590800 ‐1.59080 1.59080 1 9 ! x, y, z, atomic type, # of orbitals \\ |
- | ‐1.590800 ‐1.59080 1.59080 1 9 ! x, y, z, atomic type, # of orbitals | + | ‐1.590800 1.59080 1.59080 1 9 ! x, y, z, atomic type, # of orbitals \\ |
- | 3 ! number of shells in each type of atom | + | ‐1.590800 ‐1.59080 1.59080 1 9 ! x, y, z, atomic type, # of orbitals \\ |
- | 0 1 2 ! l for each shell in atom type=1 | + | 3 ! number of shells in each type of atom \\ |
- | ‐2.0 4.0 81 ! energy initial, range and steps in dos file | + | 0 1 2 ! l for each shell in atom type=1 \\ |
+ | ‐2.0 4.0 81 ! energy initial, range and steps in dos file \\ | ||
+ | |||
+ | // But be carefull, the energy in the STM code is related to the Fermi level. When Fermi level is -2 eV from FIREBALL in the "tip_g_str.inp" in it's last line the first value has to be 0.0 (energy initial - Fermi level)// |