Difference between revisions of "NECI Re-write"

From CUC3
Jump to navigation Jump to search
import>Jss43
import>Ajwt3
Line 17: Line 17:
 
* Rewrite the test suite (I'll do this). --[[User:jss43|james]] 15:21, 6 December 2007 (GMT)
 
* Rewrite the test suite (I'll do this). --[[User:jss43|james]] 15:21, 6 December 2007 (GMT)
 
* Create a branch for this work on svn (ditto). --[[User:jss43|james]] 15:24, 6 December 2007 (GMT)
 
* Create a branch for this work on svn (ditto). --[[User:jss43|james]] 15:24, 6 December 2007 (GMT)
  +
* Rewrite the main structure (neci.F). This will be painful, but a good opportunity to document/excise old code and to modularise (I suppose I've got the knowledge for that, but less the inclination) --[[User:ajwt3|alex]] 16:36, 11 December 2007 (GMT)
  +
* Add 'dated' input default sets -- we've talked about this but never quite got round to it --[[User:ajwt3|alex]] 16:36, 11 December 2007 (GMT)
  +
* Modularize the input. By this I think it would be useful to be able to add options to the input without having to add things to include files. --[[User:ajwt3|alex]] 16:36, 11 December 2007 (GMT)
  +
* Modularize the system-specific data. I think it would be useful to have some sort of global 'system' object which contains details specifying the system (e.g. for Hubbard the size, t and U values etc. Other data for CPMD. For read-in integrals, this could just be symmetry info.) --[[User:ajwt3|alex]] 16:36, 11 December 2007 (GMT)
  +
* Modularize the basis. Again this will include lists of basis functions, energies and symmetries. Probably also the interfaces to access the 1- and 2-electron integrals. --[[User:ajwt3|alex]] 16:36, 11 December 2007 (GMT)
  +
* Modularize the many-electron system. By this I'm thinking of how we deal with determinants. The initial code used just lists of electrons in the determinants. As number of electrons increases, this will mean large amounts of copying essentially redundant data (very few electrons actually change in a particular process). I've already hacked some of the code (the star I think) to deal with 'excitation-based' determinants - i.e. excitations with respect to the Hartree-Fock determinant. This sort of thing should be transparent to the actual users (i.e. subroutines) of the determinants. --[[User:ajwt3|alex]] 16:36, 11 December 2007 (GMT)

Revision as of 16:36, 11 December 2007

Issues

  • Code has been hacked together over time, with an emphasis on just getting it to work. Rarely have we gone back to tidy up.
  • The code base has become increasingly harder to deal with, maintain and develop.

Alex, George and James have all agreed to spend time cleaning it up. We need to apportion tasks and decide on the code structure. We will set aside time for this when Alex is in Cambridge 19th-20th December. To best make use of this time, we should think about what changes we need to make and how.

Please sign contributions!

Proposals

  • Use the only specifier when declaring modules (for me, this is non-negotiable). --james 15:21, 6 December 2007 (GMT)
  • Transfer include files to modules? How far do we want to go on this? --james 15:21, 6 December 2007 (GMT)

Tasks

  • Rewrite the test suite (I'll do this). --james 15:21, 6 December 2007 (GMT)
  • Create a branch for this work on svn (ditto). --james 15:24, 6 December 2007 (GMT)
  • Rewrite the main structure (neci.F). This will be painful, but a good opportunity to document/excise old code and to modularise (I suppose I've got the knowledge for that, but less the inclination) --alex 16:36, 11 December 2007 (GMT)
  • Add 'dated' input default sets -- we've talked about this but never quite got round to it --alex 16:36, 11 December 2007 (GMT)
  • Modularize the input. By this I think it would be useful to be able to add options to the input without having to add things to include files. --alex 16:36, 11 December 2007 (GMT)
  • Modularize the system-specific data. I think it would be useful to have some sort of global 'system' object which contains details specifying the system (e.g. for Hubbard the size, t and U values etc. Other data for CPMD. For read-in integrals, this could just be symmetry info.) --alex 16:36, 11 December 2007 (GMT)
  • Modularize the basis. Again this will include lists of basis functions, energies and symmetries. Probably also the interfaces to access the 1- and 2-electron integrals. --alex 16:36, 11 December 2007 (GMT)
  • Modularize the many-electron system. By this I'm thinking of how we deal with determinants. The initial code used just lists of electrons in the determinants. As number of electrons increases, this will mean large amounts of copying essentially redundant data (very few electrons actually change in a particular process). I've already hacked some of the code (the star I think) to deal with 'excitation-based' determinants - i.e. excitations with respect to the Hartree-Fock determinant. This sort of thing should be transparent to the actual users (i.e. subroutines) of the determinants. --alex 16:36, 11 December 2007 (GMT)