Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Several bugs in latest github version #40

Open
aardizzi opened this issue Dec 1, 2022 · 3 comments
Open

Several bugs in latest github version #40

aardizzi opened this issue Dec 1, 2022 · 3 comments

Comments

@aardizzi
Copy link

aardizzi commented Dec 1, 2022

Hi. First off, thank you for making Aestimo, it seems very very useful for what I am trying to do. Unfortunately, I cannot get it to run properly. There seem to be a few bugs at the moment. Here is a list of some I have come across (I have tested in both PyCharm and Jupyter environments):

1. The "material" arrays given in the examples have too few columns. I know this because aestimo.py expects 7 columns, and only 5 are listed in the examples. I have determined that one missing column is for the "y alloy composition" in the case of multiple alloys. The other missing column is the last one, which has something to do with a variable called "matRole" (defined as matRole = layer[6]). I don't know what this means, it does not seem to be documented anywhere. How do I properly define the material layer arrays?

2. There seems to be no way at present to use solver methods 1, 3, 4, 5, and 6. The error "Aestimo doesn't currently include exchange interactions in its valence band calculations." or "Aestimo doesn't currently include nonparabolicity effects in its valence band calculations." always gets thrown for these methods. Is there no way to disable valence band calculations at the moment?

3. Several necessary variables are defined at the bottom of aestimo.py, particularly the variables "logger", "inputFile", and "drawFigures", but they are called before they are defined. I believe these should be defined at the top.

4. Importing aeslibs, config, and database does not work properly. This may be because something strange happened with my pip install, but I found that I needed to import, for example, "aestimo.config", "aestimo.database", etc. I had to change this formatting in each python file where they are imported to get things to work.

In the end I managed to get aestimo.py to run, but I got nonsensical results. I suspect this is due to a combo of issues 1. and 2. listed above.

Thank you in advance for any help you can provide!
Anthony

@sblisesivdin
Copy link
Collaborator

Dear Anthony. Thank you for your interest in Aestimo. Unfortunately, I am the only active developer of Aestimo and my current study subjects are diverse from Aestimo with time. After a few years of no development, this year I simplify the Aestimo and release it as version 3.0. Of course, there may be many bugs.

If you have bug fixes, you may suggest these fixes as "pull request". I will investigate them and merge them if necessary. Otherwise, I am quite busy and it will take time to do those corrections.

If you are good with Python, we always welcome new active developers.

@aardizzi
Copy link
Author

aardizzi commented Dec 1, 2022

EDIT: After scouring through more of the examples, I think I have found the answer to question 1. It seems that the last column defines whether the layer is a "barrier" or "well" ... I think. Please tell me if this is correct.

Hi Sefer, thanks for your prompt reply! This totally makes sense. I am working on submitting a pull request for the bugfixes I have made.

I wonder if you have an answer to questions 1. and 2. I asked above. I may be able to fix these issues as well.

I suspect 2. may be more challenging to solve, if indeed the valence band solver functionality has changed, and it is not as simple as just getting rid of the error flags.

Some more detail on 1., note that in the "Tutorial 1" for Aestimo, the example Structure file defines a material layer array which is formatted as:

|         | Thickness (nm) | Material | Alloy fraction | Doping(cm^-3) | n or p type |
| Layer 0 |      250.0     |    Si    |        0       |      1e16     |      n      |
| Layer 0 |      250.0     |    Si    |        0       |      1e16     |      p      |

I propose that the Aestimo 3.0 seems to require a material layer array that is formatted as:

|         | Thickness (nm) | Material | Alloy fraction X | Alloy fraction Y | Doping(cm^-3) | n or p type | Column 7 |
| Layer 0 |      250.0     |    Si    |         0        |         0        |      1e16     |      n      |   "w"    |
| Layer 1 |      250.0     |    Si    |         0        |         0        |      1e16     |      p      |    ???   |

I am note sure what information is supposed to go in the last column, but it seems important. In aestimo.py it gets defined as a variable called "matRole" which gets used as:
if matRole == "w":
N_wells_real2 += 1
Well_boundary2[N_wells_real2, 0] = startindex
Well_boundary2[N_wells_real2, 1] = finishindex

Thanks for any info you can provide!!!

@h-hebal
Copy link
Collaborator

h-hebal commented Dec 1, 2022

Hi,
i am sorry for late replay, me too i am very busy due to my job witch is in an other field, thank you for using Aestimo.

1- quick answer to Column 7:
it define the role of the layer as well or barrier in quantum well structure and we base QW counter on them to use in wavefunctions limits and the QW region calculations and other dependencies.

2-to work with the program it is better to use scheme:

2: Schrodinger-Poisson

7: Schrodinger-Poisson-Drift_Diffusion (Schrodinger solved with poisson then poisson and DD)

8: Schrodinger-Poisson-Drift_Diffusion (Schrodinger solved with poisson and DD)

9: Schrodinger-Poisson-Drift_Diffusion (Schrodinger solved with poisson and DD) using Gummel & Newton map)

Best regards

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants