Chapter 5: Weeks 7 and 8

By week 7, the GSoC evaluation was going to begin, so I was focused on meeting deadlines to make sure that I wouldn’t be failed. I spent day and night making sure everything was working perfectly, while also adding new stuff and improving documentation in my code and benchmarking notebook.

The evaluation lasted for five days, from 25th to 29th of July. To be honest, those five days were quite stressful, with the anticipation of results and the “Mentor Evaluation” tab on the GSoC webpage. And alas, came the moment of truth. The moment I was dreading. My midterm evaluation results…

I passed !!!

Phew! It was so relieving to see the positive result on the webpage! I also took note of my mentor, Mr. Gagan’s feedback. He appreciated the work I’d put in thus far, but advised me to be more consistent and have a more transparent communication with my mentors. I accepted the generous feedback, and promised to put in greated efforts.

I also began looking at implementing chunksize in an “automatic” mode. This means that if the user would calculate spectra using chunksize="auto" as a parameter, RADIS would automatically calculate the user memory and available RAM, and assign a chunksize based on what would give the best performance during calculations.

However, there was a problem. We didn’t know exactly when the chunksize feature would function best; this would have to be carried out as tests by the community. Hence, I tried scratching my head over it a bit in Week-8, but didn’t find anything to my liking.

I also started implementing the Caching of non-equilibrium parameters. This was a feature that would make spectrum calculations with non-equilibrium conditions much faster than before. The idea is to save some important parameters used in the non-equilibrium (or non-LTE) calculations in an HDF5 file, which could then be looked up at any time. This was a much better option than having to load up and calculate the parameters each time.

The logic seemed simple. However, this was my first time implementing something like this, so naturally I sought to take references from elsewhere; luckily the codebase was my friend (it always is ;D)! This sort of a thing had already been implemented earlier, in many places in the code. And so, I got to work.