* MP2: Split mp2_ri_get_sizes
* Split mp2_ri_create_group
* MP2: Call mp2_ri_get_integ_group_size outside of the loops
The determined parameters are only calculated once
* Split mp2_ri_allocate
* Check replication explicitly
This step prepares larger replication group sizes for open shell systems
* Move some deallocation outside of the loop
* Move Postprocessing of Gamma_P_ia outside of the loop
* Interchange loops
* Move more routines outside of the loops
* Carry out dereplication at the end
* Collect bits of P_ab afterwards
* Interchange order of case in open-shell systems
* Carry out replication only once
* Remove unused variable
* Save a dereplication step in the open-shell case
* Split two lines
* Correctly determine an adequate integral replication size
* Set lower limit to integration group size
Reduces communication from replication
* Extend open-shell MP2 to block sizes larger than one
* Chose a more suitable block size than just 1
* Several fixes
* Consider more memory
* Fix open-shell systems
* Allocate memory for exchange of Y_i_aP only once
* Preallocate buffers instad of reallocating them
Reduces the memoryfootprint because it takes some time for the operating system to know that freed memory is actually free.
* Use the same block size everywhere
* Allocate memory only if necessary
* Make pointers contiguous
* Use for MP2+ADMM and double hybrid tests an automatic block size
* Further adjustment memory management
* Improve description of group size and abort if it is not a divisor of the number of MPI ranks
* Use one central buffer for recv and send operations
* Use automatic block sizes with single-node benchmark
* Minor adjustments to memory management
* MP2: Use available buffer for nearly degenerate occ-occ pairs
* Skip estimation of left computation time in MP2 for the very first step