Skip to content

Improvements  #2

Description

@ambmax00

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions