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
