Probe-Particle / PPSTM

Code simulating variousSTM techniques, especially for tilting tip (dependent on https://github.com/Probe-Particle/ppafm)l)
MIT License
8 stars 1 forks source link

GUI error on win11 python32bit: MemoryError #19

Closed lycheehoo closed 6 months ago

lycheehoo commented 10 months ago

Dear developers, I tried using this software on my win11 computer. Firstly, I compiled these codes with python 64bit, but it came error with “ not a valid Win32 application”. So I complied using python 32bit later, the GUI.py can run successfully, and I check it out running the examples in “tests”. But when I want to run my CP2K output file as input file, the error came as “ Memory Error”. I have searched the solution, when using python32, the program will automatically terminate when the memory exceeds 2G. So how can I using the PPSTM-GUI on my win11 computer? Thanks!

ondrejkrejci commented 10 months ago

Hello, great that you are using the code,

I have a bad knews for you - I have tried to run the code on my Win64 and did not succeed in the time, that I can put into it (I have moved to a different field ,,,). Thus you have 2 possibilities:

  1. get a virtual linux environment or linux or mac computer to try to run the code there.
  2. learn what you can do with the GUI.py and PPSTM_simple.py script on any small example, that you can run on your computer (may I ask you, which CP2K example crashed for you? we have 3 there). The PPSTM_simple.py is allowing to calculate more modes and more voltages at the same time. But it produces images, that needs to be analyzed afterwards. Then you can run the PPSTM code on your supercomputer and then download the output data (images) on your local machine.

There is also a 3rd option that you will join our developer team (2-3 people) and try to find a way, how you can compile PPSTM on Win64. In this direction, the ppafm code is way ahead and the idea would be that in the future PPSTM should be developed to the same state.

Sorry, that I could not help you easily this time.

lycheehoo commented 10 months ago

Thank you very much for your detailed instruction! I have tested the examples in folder "tests", here are some errors:

  1. "4N-Coronene" ValueError: invalid literal for int() with base 10: 'phik_example_s.dat' 2."FePc_Au" IndexError: index 0 is out of bounds for axis 0 with size 0 Other examples ran successfully. And I think the GUI is suitable for the projects that are not that big. Because for my CP2K input file, the .MOLog file is 2.54G, containing 252 atoms! By the way, I get some questions on the input parameters:
  2. The input file "input.xyz" is the same as the file "name_structure.xyz"? I see that they are the same, what is the diference?
  3. For the parameters "Vmin" and "Vmax", is there some limits for them? I find that I cannot set them like "-3" or "3".

Finally, I would appreciate it if you can tell me the way to compile this software on Linux using g++ compiler, so that I can using PPSTM_simple.py on my supercomputer. Wish you everything goes well!

ondrejkrejci commented 10 months ago

Hi,

Add 1. I cannot reproduce any of yours errors. If you get over one, please could you printscreen the whole step that you were doing? Thank you!

But yes, the GUI is just for small examples and getting to understand the code, which being memory heavy at some points is not suitable for large calculations as such. There is still lack of GPU development on this code, which would be heavily useful for fast GUI calculations. The main idea is to get know the parameters in GUI and then rather work with PPSTM_simple.py for the production runs.

Add 2. - input_plot.xyz has generally just the top atoms, as you in your image want to see, where the top-most atoms are and not all the X layers bellow. All the other geometry files (input.xyz, geometry.in ... ) came to the folders from historical reasons, they have inside the same information. Add 3. Vmin and Vmax are fixed to <-2,+2> ; Any DFT is normally very wrong, when its comes to empty=unoccupied states more than 2eV above Fermi Level. Also generally speaking STM simulations beyond this is not very common. Also the GUI has some other parameters fixed, so that anything beyond this area can have a really big mistakes inside. I am speaking about cut_min and cut_max parameters (see here) which are there to take care only those electronic states, that can affect the image. This is very important to make the calculation feasible as very large (and all electron) DFT calculations can contains hundred of thousands of states that do not contribute to STM at all, but the inner sum of the code could easily go over them.

As for the compilation on any supercomputer - just try if you have any g++ compiler availabe (e.g. through which g++), they are normally part of any linux/unix distribution. If so, the compilation is automatical during the run of the python code. So you should use your PPSTM_simple.py straightly.

lycheehoo commented 10 months ago

Okay, I have learned a lot. Thank you very much :)

lycheehoo commented 10 months ago

Hi Ondřej Krejčí, I performed a series of constant height didv mapping, so if I want to acquire the simulated constant height mapping, what should I do?

ondrejkrejci commented 10 months ago

By constant height mapping you mean constant height STM ? Please have a look at our wiki about PPSTM_simple.py . Use the keyword V-scan in the script - it will always calculate you both dIdV and STMs. Is it what you are looking for?

lycheehoo commented 10 months ago

I see that many papers are using the simulated didv mapping to compare their experimental constant current didv mapping. I performed constant height didv mapping in my experiments, so I wonder is it suitable to compare in the same way?

ondrejkrejci commented 10 months ago

Well, it is a very bad habit of experimentalists these days. The problem is, non of STM simulating softwares and approaches has ever get a quantitative agreement with the experiment what-so-ever (qualitative yes), thus there is no way, you can simulate the same "constant current" iso-surface as it is in the experiment and then calculate the dIdV on the exact surface. You can try to do it @LauriKurki has some experience with it. The problem is that the dIdV map is heavily height dependent and thus changing the z-coordinate, while taking it is very much affecting the image. There are several parameters, that can be tuned, but in fact they are unknown and it is not a scientifically right.

If you have any connection to experimentalists, please try to ask them not to do that anymore. Can they run STM constant-current scan, then adjust the height to the maximum of the height and do the dIdV scan? Is it that hard? They are not obtaining double amount of information at the same time. Really not. They get the STM information (fair enough) and then a mish-mash of convuleted double information, where you have no right key, how to exact it.

ondrejkrejci commented 6 months ago

No more solutions, thus closing.