Orthonormalize rasscf
Science:
 Implemented Löwdin and Canonical Orthonormalization (ON) in the
readvc
step ofRASSCF
. User has full control over ON scheme.  Small bugfixes + maintenance in NECI interface
 No busy waiting for the
newcycle
file.
 No busy waiting for the
Infrastructure for developers:
 Implemented sorting procedures in a different, more flexible, manner. They are not sorting the arrays directly, but rather the index of an array by using a comparison function
compare
supplied by the user. The array is sorted, so thatcompare(v(i), v(i + 1))
is true for all i.
If you want to sort an array increasingly, just use
logical pure function le(i, j)
integer, intent(in) :: i, j
le = i <= j
end function
The real power of the routines shines, when the array is treated as an index array of other matrices or tensors. If you want to sort a 2Dmatrix according to the column sum, just use:
integer :: col_idx(lbound(matrix, 2):ubound(matrix, 2))
col_idx = [(i, i = lbound(col_idx, 1), ubound(col_idx, 1))]
call sort(col_idx, col_sum)
contains
logical pure function col_sum(i, j)
integer, intent(in) :: i, j
col_sum = sum(abs(matrix(:, i))) <= sum(abs(matrix(:, j)))
end function
 Introduced
typed enum
like structure for selfdocumenting and compiler testable selection of options.
type :: t_ON_scheme_values
integer ::
& no_ON = 1,
& Grahm_Schmidt = 2,
& Lowdin = 3
end type
 Introduced a type for blockdiagonal matrices, that have the same memory footprint as the manual calculation of offsets in raw memory.
 Documentation updated or not needed.
 Test created or not needed.

Attribution in source files and
CONTRIBUTORS.md
updated if necessary.