Putting up a list for things that would need to be changed and/or added.
I started to write this software when I barely had two years of experience in C++. For this reason, there are some poor design decisions that need to addressed.
Before adding new modules, or new functionalities, at least some of the issues should be solved.
Important:
- Add extensive testing for each module. As an inexperienced developer, I did not know the power of test-driven development...
- (Done) Fix the SAD guess in Docker container
- Add testing for important classes.
- Make the J/K/Z kernels and ADC routines external, i.e. they can be used as external routines in other quantum chemistry software.
- Work on the QR-DF method to make it faster.
Less important:
- Write a better MPI logger which uses a
printf-type style.
- Do not make everything a shared pointer...
- Get rid of the macro magic for the builder classes. It was fun to write, but will be difficult to maintain
- Use constexpr instead of macros
- Write a better interface for dbcsr, especially for batch mode: Handling complicated series of tensor contractions nearly drove me insane.
- The "disk" mode in tensor batching is practically unexplored. It is working, but I have no idea how fast it is, as I never got around to test it.
- Get rid of exceptions and use error codes (Yes, I am that kind of person now)
- Make i/o less cumbersome. We have a json input, a hdf5 output, and the program also outputs to console...
- Make initialization less complicated. You have to take care of a million things before you can use any module in your program.
Not so important:
- Change the coding style. Probably wont be using clang-format in the future, and just write down the rules somewhere
- Fix ugly code, rename variables, and do not use any abbreviations except obvious ones (HF, MP2, ADC...)
More stuff might be added
Putting up a list for things that would need to be changed and/or added.
I started to write this software when I barely had two years of experience in C++. For this reason, there are some poor design decisions that need to addressed.
Before adding new modules, or new functionalities, at least some of the issues should be solved.
Important:
Less important:
printf-type style.Not so important:
More stuff might be added