Hello again,

Thank you Nick very much for you advice. I increased the K points up to 90 90 1 
and to great extent it worked. Much better than I had before.

El-ABed


 El-abed Haidar | Doctor of Philosophy (Science)
 Condensed Matter Theory (CMT) Group
 | School of Physics
 THE UNIVERSITY OF SYDNEY  | NSW | 2006

________________________________
From: [email protected] <[email protected]> on behalf of Nick 
Papior <[email protected]>
Sent: Thursday, 21 June 2018 6:32:23 AM
To: [email protected]
Subject: Re: [SIESTA-L] Issues with pDOS in SIESTA

Dear,

I don't get a couple of things you question?

A) What exactly have you done in your calculations is unclear to me
B) What does "weird" mean? You haven't shown a plot.
C) What is "job method"?

For graphene you typically need a decent number of k-points to capture the 
Dirac cone. See e.g. https://doi.org/10.1088/1361-648X/aac4dd which details out 
some PDOS calculations with graphene.


%block ProjectedDensityOfStates
-20.00  6.00  0.1  5000  eV
%endblock ProjectedDensityOfStates
%block PDOS.kgrid_Monkhorst_Pack
 96 0 0 0.0
 0 96 0 0.0
 0 0 1 0.0
%endblock PDOS.kgrid_Monkhorst_Pack

Then you subsequently need to post-process the PDOS.xml files using the pdosxml 
utility.
Alternatively you may use https://github.com/zerothi/sisl to extract PDOS 
information, see 
http://zerothi.github.io/sisl/docs/latest/api-generated/sisl.io.siesta.pdosSileSiesta.html#sisl.io.siesta.pdosSileSiesta
 which enables such interaction with siesta (you do need to use the development 
version of sisl for this to work).

For instance this small Python snippet will assume all atoms are equal and take 
out the first pz-orbital contribution
from all atoms in the unit-cell, you can easily adapt it to take out other 
orbitals as well.


##### code-snippet
import sisl as s

g, E, PDOS = s.get_sile('siesta.PDOS.xml').read_data()
# Find pz orbital on first atom
idx_pz = -1
for i, orb in enumerate(g.atoms[0]):
    if orb.l == 1 and orb.m == 0:
        idx_pz = i
        break

# Clever function to get all orbital indices in the geometry (and hence the 
orbital indices in the XML output)
all_pz = g.a2o(range(len(g))) + idx_pz

# Now extract PDOS (this is for an unpolarized calculation)
DOS = PDOS.sum(0)
pz = PDOS[all_pz, :].sum(0)
###


Hope this helped.

Den ons. 20. jun. 2018 kl. 22.01 skrev El-abed Haidar 
<[email protected]<mailto:[email protected]>>:

Good afternoon,

I am emailing you all to ask for assistance concerning finding the right pdos 
for graphene.

So far i have successfully done it in VASP similar to the paper result shown in 
dosgraphene.png.

However it did not work for me in SIESTA and getting weird dos plots.

I followed How to DOS properly was shown on slide 34 (also shown in DOS.png) 
from the following link:

http://personales.unican.es/junqueraj/JavierJunquera_files/Talks/Visualization.pdf


Despite that and following very carefully by deleting all files and keeping the 
original fdf and psf files, I still i did not get the results I am hoping for.

I am using job method since I am using high energy cut off and thus not losing 
the calculation.

I am not sure what to do next. I tried playing around with the numbers one 
factor at a time.

Any suggestions I am more than happy to listen to.

Thank you and looking forward to your reply.

EL-abed


 El-abed Haidar | Doctor of Philosophy (Science)
 Condensed Matter Theory (CMT) Group
 | School of Physics
 THE UNIVERSITY OF SYDNEY  | NSW | 2006






--
Kind regards Nick

Responder a