# TODO

From OctopusWiki

### Short term

- Add the Hartree-Fock pseudopotentials used by CASINO. The information contained in the file is basically the same as in the psf format, so the integration should be easy.

- Parallelization in k-points: the main functionality is implemented but there are several loops that should be modified and some reductions included. The output also needs to be fixed.

- Fix and check the calculation of total energies and forces for periodic systems, mainly the ionic term.

- Correct the time propagation for periodic systems.

### Medium term

- The LOBPCG eigensolver still need some work to improve reliability and improve performance.

- Fix the multigrid solver to work with curvilinear coordinates.

- Fix Modine curvilinear coordinates. This involves adding the restrictions on the Jacobian close to the atoms, and then debug.

- Non simple-cubic unit cells for periodic systems. Besides the changes in the generation of the k-points (we can get the code from ABINIT or PWSCF), this would require using a non-orthogonal mesh, with the points along the unit-cell directions. The weights of the derivatives will be constant, but we will not be able to use the star stencil, of course.

- There are several conjugate gradients routines lying around in the code, namely for the SCF cycle, for the poisson solver, and for the linear response. At maximum, we need *2* of standard cg routines, one for the solution of the eigenvalue equation, and the other to solve linear systems (several of this latter kind may exists, e.g., for non-hermitian operators). Furthermore, not all CG solvers are preconditioned. We should clean up this mess!

- The multigrid solver in parallel works but converges slower than in serial runs, this is because Gauss-Seidel is tricky to apply in parallel. This could be fixed by dividing relaxation and boundary updates in parts and applying them simultaneously.

- Finish the multigrid eigensolver.

### Long term

- Projector Augmented Wavefunctions.

- Solution of the Dirac equation.