effmass icon indicating copy to clipboard operation
effmass copied to clipboard

Segment selection

Open MariaEstRo opened this issue 3 years ago • 4 comments

Hi, I'm using effmass with FHI-AIMS inputs/outputs and I would like to extract the effective mass for specific segments. I am aware there is an option called "extrema.generate_segments" that performs that task. However, I'm struggling with this since I don't know how to use the argument "bk" properly. Could you, please, provide some examples using the "extrema.generate_segments" option with the bk argument?

Best regards, María

MariaEstRo avatar Mar 29 '22 11:03 MariaEstRo

Hello @MariaEstRo, apologies for lateness (!) of reply. I'll give a short reply here, if you are still working on this and need more guidance then let me know.

There are two ways you could approach this. You could use extrema.generate_segments without the bk argument to generate a list of segments, visualise the generated segments and then select the segment that is of interest to you from the list. This is the approach that is followed in the tutorial: https://nbviewer.org/github/lucydot/effmass/blob/master/Tutorial.ipynb.

The bk argument is useful if effmass can't automatically find the part of the bandstructure you are interested in. In this case, you can set the bk keyword:

bk (list(int)): To manually set an extrema point, in format [bands index, kpoint index].

The API documentation can be useful if you want to use settings that are not covered in the tutorial. For example, the API documentation for extrema.generate_segments is here: https://effmass.readthedocs.io/en/latest/extrema.html#effmass.extrema.generate_segments

lucydot avatar May 24 '23 09:05 lucydot

Hi Lucy, Thank you so much for your reply. I tried what you suggested and although the first approach works well for me I am still struggling with the bk option. I read through the link you posted but I have not managed to use bk yet. I tried these 2 formats based on the API documentation: bk=[x,[kx,ky,kz]] bk=(x,[kx,ky,kz]) being x an integer number corresponding the band index and kx,ky,kz being integer numbers corresponding to the kpoint index.

Regards, María

MariaEstRo avatar May 24 '23 14:05 MariaEstRo

Hi @MariaEstRo, I think bk=[x,y] where x is an integer number corresponding to the band index and y is an integer number corresponding to the kpoint index should work. kpoints are stored as a 2d array (https://effmass.readthedocs.io/en/latest/inputs.html#effmass.inputs.Data.kpoints), so it will be the row index corresponding to the kpoint of interest.

Can I ask why you want to use the bk option rather than the first option - is it because it suits your workflow better? It is useful for me to understand how people are using effmass, so I can work out ways to improve (though of course getting the time to actually work on this is another matter 😅 ).

lucydot avatar May 24 '23 15:05 lucydot

Hi, Lucy. Sorry for the delay. I wanted to use the bk option rather than the "extrema.generate.segment" as the latter did not find the segment I was interested in. Best regards, María

MariaEstRo avatar Oct 17 '23 08:10 MariaEstRo