J. Appl. Cryst. (2011), 44, 52-59. [ doi:10.1107/S0021889810042470 ]
One of the requirements for the next generation of small-molecule crystallographers is a mathematical programming infrastructure. It should provide a modelling design process, where the model formulation is kept separate from the optimization process to provide gains in reliability, scalability and extensibility, enabling the application of optimization components in general, and refinement-based applications in particular, as applied to crystallographic problems. A research project has been undertaken to design and implement an innovative toolkit library – a small-molecule toolkit (SMTK) – for crystallographic modelling and refinement. This paper provides an overview of SMTK and its object-oriented implementation. As a practical illustration, it also shows the context of use for a set of classes and discusses how the toolkit enables the user rapidly to develop, maintain and explore the full capabilities of crystallography and so create new applications. SMTK reduces the degree of effort required to construct and develop new algorithms and provides users with an easy and efficient means to test ideas, as well as to build large and maintainable models which can readily be adapted to any new situation.