QuantumATK Forum

QuantumATK => General Questions and Answers => Topic started by: huckelbuckel on January 7, 2012, 11:33

Title: Silicene nanoribbon configuration
Post by: huckelbuckel on January 7, 2012, 11:33
Hi,

I have used the out of plane geometry of silicon atoms and created a silicene nanoribbon.(see image attached).I want to know what appropriate k-points and mesh cut off i need to use for this arrangement??...generally i have seen something like (1X1X100).As this  arrangement is periodic in Z direction and i want to simulate isolated ribbons what value should i select  for 'x' in primitive vectors of unit cell??.Do i have to keep it large say(10A to 20A) so that there is minimum interaction between them.

Now in order to get a minima point in energy-vs-vol curve i want to set 'x'  primitive vector to a large value and select all atoms in fractional coordinates mode and stretch them to a proper value of 'y' so that Si-Si bond lengths are approximately matched with my previous 'bulk silicene crystal' calculation .Once this is done i will vary 'z' primitive vector and calculate energy at each of those z-points(or volume) to get correct structure of unit cell lattice having minimum energy.Then i will go ahead and perform force optimization (to a low value 0.005eV/A or something..) keeping x,y,z all "ticked". This should give me the stable structure of ribbon.Is this method ok?? OR should i do force optimization first and then play with lattice?

Please comment and advice on k-points,mesh cut off and above methodology of obtaining energetically favorable configuration of ribbons.
Title: Re: Silicene nanoribbon configuration
Post by: Anders Blom on January 7, 2012, 21:54
1x1x100 k-points should be fine, and also the type of cell size (vacuum space) you have in the picture seems reasonable. The default mesh cut-off should also be ok.

I doubt there will be much rearrangement of the coordinates if you based the nanoribbon on the optimized silicene already. But if you do the optimization, certainly you need a rather high accuracy of the self-consistent loop (1-2 orders magnitude than the default, I would say) and a low force tolerance and stress tolerance. You can try to do the direct force+stress optimization in one run.

I can imagine in this case, however, actually doing a small loop over lattice constants might be simpler and faster.

In general, the optimal fractional coordinates are quite insensitive to the size of the cell, since they are pretty much constrained by symmetry, at least in the Z direction for sure. So the force optimization is probably quite superfluous, you are only looking for the proper cell - and in fact I'm sure that the end results (the current and transmission spectrum) are not very sensitive to this size as long as it's reasonably accurate.
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 9, 2012, 07:33
This means that for the stable minimum energy cell if i try to use a loop i have to deal with 2 variables?????? 'y' and 'z'.(Since x is kept fixed at 10A).OR just variation in 'y' will do.Please comment.
I am only working with Cartesian coordinates.By selecting all the atoms in fractional coordinates  i just stretch the atoms and again revert back to Cartesian mode in order to check if bond lengths are approximately matched.
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 12, 2012, 12:00
Hi,

i am trying to calculate the bandgap of nanoribbons accurately.The Bandstructure plot can be zoomed (see image attached )but it doesn't contain vertical minor grid lines so i am unable to read out the exact values.Can you please suggest some remedy for this.I saw the tutorial for (Si) band gap calculation and tried to use the code  by calculating minima and maxima of conduction and valence band respectively but i am getting absurd results as i increase the width of ribbons.I am getting  negative bandgap values?? for eg, -1.03292958 -1.19040904 -1.03755011 in (all in eV) :o

here are the lines from tutorial:

energies = bandstructure.evaluate()
e_valence_max = energies[0][3]
e_conduction_min = energies[0][4]
i_valence_max=0
i_conduction_min=0

# Locate extrema
for i in range(energies.shape[0]):
    #find maximum of valence band
    if (energies[3] > e_valence_max):
        e_valence_max=energies[3]
        i_valence_max=i
    #find minimum of conduction band
    if (energies[4] < e_conduction_min):
        e_conduction_min=energies[4]
        i_conduction_min=i

# Print out results   
print 'Valence band maximum (eV) ',e_valence_max, 'at ',
print bandstructure.kpoints()[i_valence_max]
print 'Conduction band minimum (eV)',e_conduction_min, 'at ',
print bandstructure.kpoints()[i_conduction_min]
print 'Band gap = %7.4f eV ' % (e_conduction_min-e_valence_max)




Please help me in calculating exact values of band gap.Considering accuracy of bandgaps what number of points per segment i should use??? 400 ..800 or something else ???
Title: Re: Silicene nanoribbon configuration
Post by: Anders Blom on January 12, 2012, 14:39
Considering the shape of the bands you only need 1 point to calculate the band gap accurate, since it occurs at the Gamma point.

The easiest way to get the band gap at least by hand is to just zoom in very far (use the mouse to draw a rectangle) around the CB minimum/VB maximum and read the energy values from the vertical axis.

Which tutorial did you get that script from? It looks very primitive, probably it's designed only to work for a specific system. Have you tried the Analyzer at http://quantumwise.com/forum/index.php?topic=918.msg5114#msg5114 ?
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 13, 2012, 06:29
i must say..that was extremely helpful  ;D
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 13, 2012, 10:43
I used this band gap finder analyzer script for 'buckled silicene' using (GGA-PBE) for bandstructure calculations

This is the log:

Analyzing bandstructure number 0 Spin.Up
Valence band maximum    -0.0009 eV at [0.3332, 0.3334,0.0000]   
Conduction band minimum -0.0004 eV at [0.3332, 0.3334,0.0000]   
Band gap                 0.0004 eV

Direct Band gap          0.0027 eV at [0.3332, 0.3334,0.0000]
 

A band gap in general is the difference between (C.B min and V.B max) and a direct band gap is the one where the 'k' momentum space points remain the same during transition but here i am getting confused as the log file says 'direct' and 'normal' band gaps have different values at the same 'k' points(0.3,0.3,0)..

i.e, at the same k points the band gap is 0.4meV and again at the same k point the direct band gap is 2.7meV

how is this possible???.Can you please explain the difference here.  ??? ???

Title: Re: Silicene nanoribbon configuration
Post by: Anders Blom on January 13, 2012, 11:58
Any chance you can send me the NC file with the band structure? (And, ideally, also the Python input script for it.) Then I can test it myself. It's wrong that it finds the CB min with a negative energy.

NOTE: Please don't email me the NC file if it's above 1 MB. Use Crate (http://letscrate.com) instead.
Title: Re: Silicene nanoribbon configuration
Post by: Anders Blom on January 13, 2012, 12:13
On the other hand, if you know that the band gap is direct at the Gamma point, it's overkill to use the Custom Analyzer.

In that case you can use this script:

Code: python
import sys
b = nlread(sys.argv[1], BulkConfiguration)[0]
t = Bandstructure(b, route=['G','G'], points_per_segment=2)
vbmax_ix = numpy.where(t.evaluate()[0]<=0.*eV)[0][-1]
cbmin_ix = numpy.where(t.evaluate()[0]>=0.*eV)[0][0]
bandgap = t.evaluate()[0][cbmin_ix]-t.evaluate()[0][vbmax_ix]
print "Direct band gap at Gamma point", bandgap

Save it as bandgap_at_G.py and run

Quote
atkpython bandgap_at_G.py silicene.nc

where silicene.nc is the assumed filename of your calculation, which furthermore is assumed to contain only one BulkConfiguration. If you have more than one, change the first line of the script to read e.g. the specific object ID (which you can see in VNL). You could do

Code: python
import sys
b = nlread(sys.argv[1], object_id=sys.argv[2])[0]
t = Bandstructure(b, route=['G','G'], points_per_segment=2)
vbmax_ix = numpy.where(t.evaluate()[0]<=0.*eV)[0][-1]
cbmin_ix = numpy.where(t.evaluate()[0]>=0.*eV)[0][0]
bandgap = t.evaluate()[0][cbmin_ix]-t.evaluate()[0][vbmax_ix]
print "Direct band gap at Gamma point", bandgap

and run as

Quote
atkpython bandgap_at_G.py silicene.nc gID001

if you have run an optimization and gID001 is the relevant config in the NC file you want to compute the band gap for.
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 13, 2012, 12:31
actually the bandstructure is of buckled silicene crystal and not of a nanoribbon.The bandgap is obtained at K point.I have attached the script.
the concerned nc file is here: http://lts.cr/i/02f8f8
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 13, 2012, 12:47
Thanks for the code...i have run this script ... if the  bandgap is at 'K' point  can i use it by changing the route to [K,K]????
Title: Re: Silicene nanoribbon configuration
Post by: Anders Blom on January 13, 2012, 12:54
I don't see a band gap, the structure appears to be metallic, like graphene. Any small "gap" you see if more likely a numerical artifact of insufficient k-point sampling or similar.
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 13, 2012, 13:01
yes thats why the custom bandgap finder finds a very low 0.4meV  but iam still confused b/w the different values of normal band gap and direct band gap at the same K point!!
Title: Re: Silicene nanoribbon configuration
Post by: Anders Blom on January 13, 2012, 13:03
It's not confusing if you read how the code works ;) It actually fits a parabola to find a more accurate minimum, whereas the other value is the computed energy points subtracted.

But under any circumstance the script/analyzer doesn't work for metallic systems.
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 13, 2012, 13:10
thanks :)
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 16, 2012, 06:26
Hi, i have some basic questions to ask (Please forgive if questions look repetitive  :P)

Considering decent accuracy of results

1)What value of MonkhorstPackGrid(?,?,?)  points should be used when i want to calculate 'density of states' of a graphene or silicene nanoribbon.

2)What value of MonkhorstPackGrid(?,?,?)  points should be used when i want to calculate 'Device density of states' of a graphene or silicene FET junction.

3)What value of MonkhorstPackGrid(?,?,?)  points should be used when i want to calculate 'transmission spectrum' of a graphene or silicene nanoribbon.

4)What value of MonkhorstPackGrid(?,?,?)  points should be used when i want to calculate 'transmission spectrum' of a graphene/silicene junction.

5)How a gate region must be designed?? , (Considering Z-A-Z...image attached) by default in graphene junction enabling the gate spreads the gate region only in middle of armchair region. i.e, Gate covers only the '-A-' portion of Z-A-Z junction.When i design the gate for silicene or graphene FET should i use this default spread of gate?? or the gate should ideally span all the three (Z-A-Z) regions??? :o

Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 16, 2012, 06:44
Ok, one more question to the list  :)

6) In some papers i have seen people working on tunable band gaps i.e, by increasing the perpendicular GATE electric field (by varying gate voltage) the band gap of the material in question starts to open up or show some variation.When i create a graphene junction  and apply the required bias i didn't see any available 'Bandstructure' calculation module in the analysis tab of script generator.Is there a way (direct or indirect)in ATK-VNL by which i can calculate the bandgap at various gate voltages.

Thanks
Title: Re: Silicene nanoribbon configuration
Post by: Nordland on January 16, 2012, 14:49
I can answer 1-4 in a single reply.

If your system is a 1 dimensional, you must use (1,1,X), where X is a parameter you will to check for convergence.


Create a small test calculation, and then I would try with x=51, and compare it to x=101. If these are almost identical I would go with 51. If they differ, try to compare 101 to 151, and if they are identical, use 101. If these also differ, continue adding 50 until convergence is satisfied.
Title: Re: Silicene nanoribbon configuration
Post by: Nordland on January 16, 2012, 14:55
5)How a gate region must be designed?? , (Considering Z-A-Z...image attached) by default in graphene junction enabling the gate spreads the gate region only in middle of armchair region. i.e, Gate covers only the '-A-' portion of Z-A-Z junction.When i design the gate for silicene or graphene FET should i use this default spread of gate?? or the gate should ideally span all the three (Z-A-Z) regions??? :o

It depends on what you want kind of experiment you want to simulate. If you want to simulate a gate under the armchair region only, you should the structure you have. If you want to simulate the entire device being layered on a gate, then you should extend the gate into the Z-A-Z region.

From a physical point of view the two system should be somewhat identical, since the Z regions are metallic and therefore the effect of the gate should be very limited, while the A region is semi-conducting and here the energy bands would be altered.

If you are aiming for showing the FET effect in this junction, I would personally choose the the first system you present.
Title: Re: Silicene nanoribbon configuration
Post by: Nordland on January 16, 2012, 15:02
Ok, one more question to the list  :)

6) In some papers i have seen people working on tunable band gaps i.e, by increasing the perpendicular GATE electric field (by varying gate voltage) the band gap of the material in question starts to open up or show some variation.When i create a graphene junction  and apply the required bias i didn't see any available 'Bandstructure' calculation module in the analysis tab of script generator.Is there a way (direct or indirect)in ATK-VNL by which i can calculate the bandgap at various gate voltages.

Thanks

Calculating the bandstructure is, no offence intended, a poor man choice in this case, but it can be good for understanding the physics. If you want to model the FET effect of the systems, you should calculate an IV curve for the the system using different gate voltages, and you will have your final result.

If you are eager to get some bandstructures to show the physics of the system in a simple view, I would build an periodic armchair in the builder with a gate under it, and for this periodic structures you are able to calculate bandstructure in ATK directly.

Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 17, 2012, 11:18
Hey Nordland!...thanks for this useful info  :D
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 18, 2012, 13:36
In some of the technical papers it is written that graphene nano ribbons with spin polarized edges have much lower energy than non-spin polarized.Also anti ferromagnetic spins have lower energy than parallel spins.But in ATK-VNL whenever we give initial spin the optimization routine goes to preferred intrinsic spins of atoms and the total energy of the ribbon always comes out same (with or without spin)  :-[

Is there a way through which i can find the energy difference between non-spin and spin polarization of edge states of ribbon??? ::)

Thanks in advance!
Title: Re: Silicene nanoribbon configuration
Post by: kstokbro on January 18, 2012, 16:04
There is a tutorial on how to perform a spin polarized graphene nanoribbon calculation.
http://www.quantumwise.com/documents/tutorials/latest/GrapheneBloch/index.html/

(The anti-ferromagnetic edge state has the lowest energy, as shown in the tutorial)
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 19, 2012, 09:42
Hi I have gone through this and replicated the same for silicene zigzag nanoribbons but i want to calculate 'TotalEnergy' for both spin polarised (Antispin case) and without spin and calculate the energy difference that exists in two cases as i vary the width of ribbon . but my problem is i am getting same total energy for both schemes??
Title: Re: Silicene nanoribbon configuration
Post by: kstokbro on January 19, 2012, 11:51
I attach a script with no spin on the graphene and antiferromagnetic spin,
the total energies are:
no spin: -1293.28226 eV
anti ferromagnetic -1293.30601 eV
Thus, spinpolarization lower the energy by 0.024 eV

Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 20, 2012, 09:01
Hi, Thanks i have done the energy analysis of 'no spin','anti' and 'parallel' spins
yes, the energy difference is there although very small.
I have given spin to the edges i.e, one edge  has parallel spin while the other has opposite spin.
Thanks for the help.
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 20, 2012, 09:10
I was trying to calculate the band gap variation with electric field of silicene armchair ribbon with gates.
Here are the two metallic regions defined in the script:

metallic_region_0 = BoxRegion(
      0*Volt,
      xmin = 8*Angstrom, xmax = 23*Angstrom,
      ymin = 4*Angstrom, ymax = 4.5*Angstrom,
      zmin = 0*Angstrom, zmax = 26.2*Angstrom
   )

metallic_region_1 = BoxRegion(
      0*Volt,
      xmin = 8*Angstrom, xmax = 23*Angstrom,
      ymin = 21.5*Angstrom, ymax = 22*Angstrom,
      zmin = 0*Angstrom, zmax = 26.2*Angstrom
   )

After giving the gate voltage the perpendicular electric field is defined as the ratio of:
 
             (Gate voltage)
     -- -----------------------------
(distance between two metallic plates)

Looking at the dimensions of metallic region in code what value should i choose for denominator??

is it (ymax_of_1 - ymin_of_0)=(22-4)=18A
or
is it (ymin_of_1 - ymax_of_0)=(21.5-4.5)=17A
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 24, 2012, 09:32
Hi,

Can someone please ;) answer me about the distance between metallic plates so that i can know the value of electric fields.
Title: Re: Silicene nanoribbon configuration
Post by: Anders Blom on January 24, 2012, 23:42
The potential is constant within the metal, so it's the dimensions towards the structure which matter. From this you can compute the field - provided you have vacuum between the electrodes. You don't, I guess, you have some structure, and this will partly screen the field. So the field will be position-dependent and can be computed via the gradient of the electrostatic potential.
Title: Re: Silicene nanoribbon configuration
Post by: huckelbuckel on January 25, 2012, 09:31
thanks for clarification.