Author Topic: Silicene nanoribbon configuration  (Read 15094 times)

0 Members and 1 Guest are viewing this topic.

Offline huckelbuckel

  • Heavy QuantumATK user
  • ***
  • Posts: 53
  • Country: in
  • Reputation: 0
    • View Profile
Silicene nanoribbon configuration
« 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.

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5418
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: Silicene nanoribbon configuration
« Reply #1 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.

Offline huckelbuckel

  • Heavy QuantumATK user
  • ***
  • Posts: 53
  • Country: in
  • Reputation: 0
    • View Profile
Re: Silicene nanoribbon configuration
« Reply #2 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.

Offline huckelbuckel

  • Heavy QuantumATK user
  • ***
  • Posts: 53
  • Country: in
  • Reputation: 0
    • View Profile
Re: Silicene nanoribbon configuration
« Reply #3 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 ???

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5418
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: Silicene nanoribbon configuration
« Reply #4 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 ?
« Last Edit: January 13, 2012, 11:58 by Anders Blom »

Offline huckelbuckel

  • Heavy QuantumATK user
  • ***
  • Posts: 53
  • Country: in
  • Reputation: 0
    • View Profile
Re: Silicene nanoribbon configuration
« Reply #5 on: January 13, 2012, 06:29 »
i must say..that was extremely helpful  ;D

Offline huckelbuckel

  • Heavy QuantumATK user
  • ***
  • Posts: 53
  • Country: in
  • Reputation: 0
    • View Profile
Re: Silicene nanoribbon configuration
« Reply #6 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.  ??? ???


Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5418
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: Silicene nanoribbon configuration
« Reply #7 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 instead.

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5418
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: Silicene nanoribbon configuration
« Reply #8 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.

Offline huckelbuckel

  • Heavy QuantumATK user
  • ***
  • Posts: 53
  • Country: in
  • Reputation: 0
    • View Profile
Re: Silicene nanoribbon configuration
« Reply #9 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

Offline huckelbuckel

  • Heavy QuantumATK user
  • ***
  • Posts: 53
  • Country: in
  • Reputation: 0
    • View Profile
Re: Silicene nanoribbon configuration
« Reply #10 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]????

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5418
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: Silicene nanoribbon configuration
« Reply #11 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.

Offline huckelbuckel

  • Heavy QuantumATK user
  • ***
  • Posts: 53
  • Country: in
  • Reputation: 0
    • View Profile
Re: Silicene nanoribbon configuration
« Reply #12 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!!

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5418
  • Country: dk
  • Reputation: 89
    • View Profile
    • QuantumATK at Synopsys
Re: Silicene nanoribbon configuration
« Reply #13 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.
« Last Edit: January 13, 2012, 13:06 by Anders Blom »

Offline huckelbuckel

  • Heavy QuantumATK user
  • ***
  • Posts: 53
  • Country: in
  • Reputation: 0
    • View Profile
Re: Silicene nanoribbon configuration
« Reply #14 on: January 13, 2012, 13:10 »
thanks :)