With the addition of web-based geometry retrievals in #39, easy access to geometry optimizers in QDK/Chemistry will be a massive UX improvement. This algorithm, at its simplest, should meet the following requirements:
- Given a
Structure instance, produce an optimized Structure instance
- Configurability of the underlying electronic structure method used to treat electronic energies and gradients
The ideal API would look similar to the current MultiConfigurationScf implementation, where the Hamiltonian constructor, etc are passed as customization points. This would require the development of Algorithm constructs which produce an energy gradient given a Wavefunction instance.
The simplest solution would be to leave the API as Structure -> Structure and handle the configuration of the underlying electronic structure method to the Settings instance. This leaves a bit to be desired, but is the fastest to implement as GO would become a black box.
In any case, we can look to the reference implementation in PySCF as the first Algorithm implementation.
With the addition of web-based geometry retrievals in #39, easy access to geometry optimizers in QDK/Chemistry will be a massive UX improvement. This algorithm, at its simplest, should meet the following requirements:
Structureinstance, produce an optimizedStructureinstanceThe ideal API would look similar to the current MultiConfigurationScf implementation, where the Hamiltonian constructor, etc are passed as customization points. This would require the development of Algorithm constructs which produce an energy gradient given a
Wavefunctioninstance.The simplest solution would be to leave the API as
Structure->Structureand handle the configuration of the underlying electronic structure method to theSettingsinstance. This leaves a bit to be desired, but is the fastest to implement as GO would become a black box.In any case, we can look to the reference implementation in PySCF as the first Algorithm implementation.