This shows you the differences between two versions of the page.
how_to_prepare_the_new_tip_and_sample_for_stm_simulations [2009/11/25 15:23] vroz |
how_to_prepare_the_new_tip_and_sample_for_stm_simulations [2011/02/18 13:13] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | \\ | ||
- | ==== I. The geometry ==== | ||
- | First of all we need the “*.bas” file of the tip and sample geometry | ||
- | (separately). We can use the Jmol to view the “*.xyz” file. Tip should have tip | ||
- | apex at 0.0 0.0 xy position. | ||
- | We have even to prepare the “Fdata” of given properties of elements of tip | ||
- | and sample we will use. | ||
- | For followings we should run the fireball to relax these structures. If you | ||
- | are using new FIREBALL input format, set up followings at the “fireball.in” file: | ||
- | |||
- | __&OPTION__ part | ||
- | |||
- | ‐ basisfile = <filename> \\ | ||
- | ‐ lvsfile = <filename> \\ | ||
- | ‐ kptpreference = <filename> \\ | ||
- | ‐ nstepf = 1 \\ | ||
- | |||
- | Than you have the “CHARGES” of both the systems tip and sample | ||
- | |||
- | \\ | ||
- | |||
- | |||
- | |||
- | ==== II. The files we need ==== | ||
- | |||
- | |||
- | We need several files before we can simulate the STM scanning for both | ||
- | tip and sample. For sample it is “Atomo_i” and "struc.inp files", hopping file | ||
- | “tip_sample_i_j.inp” (“interaction_i_j.dat”), “tip_e_str.inp” and “tip_g_str.inp” with | ||
- | the densities and geometry of the tip. | ||
- | |||
- | \\ | ||
- | |||
- | === II.I. Atomo_i, struc.inp === | ||
- | |||
- | Once we have the “CHARGES” we can produce the "Atomo_i" files by the | ||
- | FIREBALL. “CHARGES” file has to be at the same directory when you are running | ||
- | the FIREBALL. To the “fireball.in” we will write: | ||
- | |||
- | __&OPTION__ part | ||
- | |||
- | ‐ nstepf = 1 \\ | ||
- | ‐ ifixcharge = 1 \\ | ||
- | |||
- | __&OUTPUT__ part | ||
- | |||
- | ‐ iwrtatom = 1 | ||
- | |||
- | Than you obtained “Atomo_i” files and the “struc.inp” file, which should be | ||
- | modified to work properly when you run the STM simulation. How to do that: | ||
- | The “struc.inp” file contains some information about the sample: | ||
- | |||
- | 1 !number. of atoms in unit cell \\ | ||
- | 1 !initial and final atom which is contributing to the tunneling current \\ | ||
- | 12 ! number maximum of neighbours \\ | ||
- | //!! you have to modify this upper part// | ||
- | |||
- | 0.000000 0.000000 0.000000 1 ! coordinates and type of each atom \\ | ||
- | . \\ | ||
- | . \\ | ||
- | . \\ | ||
- | |||
- | //!! Next part (up to the lattice vectors) must be added// \\ | ||
- | 4 !number of orbitals in each type of atom (in a row) \\ | ||
- | 2 !number of shells of each atom type (in a row) \\ | ||
- | 0 1 !l of each shell type atom=1 (each atom type in a row) \\ | ||
- | 16 !nkprl: no. of k's in one row (nk=nkprl2), =0 read a samplek.kpts file \\ | ||
- | 1 1 !index_cell1, index_cell2 (ncell = (2*index_cell1+1)*(2*index_cell1+1) \\ | ||
- | |||
- | 0.866025 , 0.5 , 0. !Horizontal lattice vector (x‐axis) \\ | ||
- | 0.866025 , ‐0.5 , 0. !Horizontal lattice vector (y‐axis) \\ | ||
- | //!! We have to delete the last row of Lattice vector// | ||
- | |||
- | The fixing the "nkprl" value to 0 and using the fireball k-points (with the | ||
- | opposite to complete the Brouilloin) is strongly reccomended. | ||
- | The "index_cell1" and "index_cell2" are relative to the number of cells we | ||
- | need in each direction x and y to avoid the border problems. The product of them | ||
- | gives us number of repetition unit which influence is involved to the | ||
- | computation. | ||
- | |||
- | \\ | ||
- | |||
- | === II.II. tip_sample_i_j.inp file === | ||
- | |||
- | |||
- | In our approximation, we use a dimer formed by one kind of atom from | ||
- | the tip and another kind from the sample. We have to generate a | ||
- | "tip_sample_i_j.inp" (or "interaction_i_j.dat") for each pair of kinds. As we want | ||
- | interactions for bigger distances than we have in a crystal relaxation, we need to | ||
- | generate these wave-functions by the **BEGIN** with a cut‐off radius of about 10‐15 au. | ||
- | When we have the wave‐functions we generate the interactions (Fdata) with | ||
- | **CREATE**. After that, we run with **FIREBALL** the dimer, mentioned before, for | ||
- | several distances (normally from 2 au to 20 or 30 au). To obtain the hoppings in | ||
- | the STM format we need (“fireball.in”): | ||
- | |||
- | __&OPTION__ part \\ | ||
- | |||
- | ‐ ifixcharges = 1 \\ | ||
- | ‐ nstepf = 1 \\ | ||
- | |||
- | __&OUTPUT__ part \\ | ||
- | |||
- | ‐ iwrthop = 1 | ||
- | |||
- | To do this, we can use the script “run_hops.com” which is necessary to | ||
- | modify in dependence what output format you expect (read the “README” file of | ||
- | this script). | ||
- | |||
- | == I.II.I. The “run_hops.com” script: == | ||
- | |||
- | #!/bin/bash \\ | ||
- | #mv -f interactions.dat interactions.dat.old \\ | ||
- | echo 1 > lockfile \\ | ||
- | tipo1="`cat lista`" \\ | ||
- | for i in $tipo1; \\ | ||
- | do \\ | ||
- | tipo2="`cat lockfile`" \\ | ||
- | if [ $tipo2 == "2" ]; \\ | ||
- | then \\ | ||
- | echo 1 > lockfile\\ | ||
- | name2="`echo $i`"; \\ | ||
- | sed "s/AAAAAAA/$name2/g" tip_sample_aux >> interactions.dat; \\ | ||
- | echo $i \\ | ||
- | else \\ | ||
- | echo 2 > lockfile \\ | ||
- | name1="`echo $i`"; \\ | ||
- | sed "s/AAAAAAA/$name1/g" model.bas > tmp.bas; \\ | ||
- | ./fireball.k.x > out_tmp; \\ | ||
- | fi \\ | ||
- | done \\ | ||
- | 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 | ||
- | |||
- | == I.II.II. The “README” file: == | ||
- | |||
- | a short description how to generate hopping data \\ | ||
- | files we need: \\ | ||
- | fireball.in \\ | ||
- | model.bas \\ | ||
- | lista \\ | ||
- | header.dat \\ | ||
- | |||
- | =======A. edit: \\ | ||
- | CHARGES \\ | ||
- | model.bas \\ | ||
- | |||
- | =======B. edit run_hops.com \\ | ||
- | If you need the **fireball output format**, than to the | ||
- | "interactions.dat" you have to write | ||
- | the inter_aux.dat \\ | ||
- | If you need the **STM code output format**, than to the | ||
- | "interactions.dat" you have to write | ||
- | the tip_sample_aux. \\ | ||
- | |||
- | The difference is amount of some writen informations at | ||
- | the header of interaction (hopping) file, number of interactions and even the length units. For | ||
- | STM format it is a.u. when for the fireball format it is Angstroms. | ||
- | |||
- | =======C. launch \\ | ||
- | ./run_hop.com \\ | ||
- | |||
- | =======D. modify header of interacti_X_Y.dat file \\ | ||
- | == Interactions for W(spd)-C(sp) using FIREBALL program == \\ | ||
- | 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 | ||
- | from the "interactions_X_Y.inp" file. You have to write there | ||
- | even the line of 3 more numbers (2 3 10) | ||
- | which gives us the number of the shells of the tip and | ||
- | sample respectively.// | ||
- | |||
- | == Interactions for W(spd)-C(sp) using FIREBALL program == \\ | ||
- | 57 !number of distances \\ | ||
- | 2.00000 30.00000 !dist_min, dist_max \\ | ||
- | 2 3 10 !number of shells of the tip, of the | ||
- | 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** | ||
- | code). Then we have to complete the file with the parameters for the long | ||
- | distances approximation.// \\ | ||
- | Look at the header: | ||
- | |||
- | == Interactions for W‐Tid using FIREBALL program == \\ | ||
- | 57 \\ | ||
- | 2.000000 30.00000 \\ | ||
- | 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 | ||
- | 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 | ||
- | 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 an interaction sigma (0). Orbitals p will be 1 | ||
- | and d 2, the interaction pi will be 1 and delta 2. \\ | ||
- | For long distances, we do the parallel planes approximation using | ||
- | the expression: A.e 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 | ||
- | the fix conditions. Finally, the W (6th) is related with the work function of the | ||
- | materials in the hopping: 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 | ||
- | 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 | ||
- | from the simple basis orbital. The last value is the cut‐off radius. | ||
- | |||
- | \\ | ||
- | |||
- | ==== II.III. tip_g_str.inp ==== | ||
- | |||
- | 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 | ||
- | 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: | ||
- | 1 5 ! natoms_tip_contributing, natoms_tip | ||
- | 0.000000 0.000000 0.400000 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 | ||
- | 3 ! number of shells in each type of atom | ||
- | 0 1 2 ! l for each shell in atom type=1 | ||
- | ‐2.0 4.0 81 ! energy initial, range and steps in dos file |