1. Introduction

The CASE toolkit is a collection of a number of programming libraries which fall under the general theme of function optimization. CASE can be described as a library that includes force fields and geometry optimization. Stated more accurately, CASE is an extensible programming library which provides an interchangeable framework of components that can optimize any arbitrary function. For those who are simply interested in geometry optimization of molecles, the CASE toolkit may appear unnecessarily complex and gratuitous in its use of object-oriented language features. In reality, the CASE toolkit is a simple and powerful framework for optimizing unique combinations of functions in a dizzying array of coordinate spaces while maintaining a exquisite level of user control.

The architecture of CASE can be broken in to three levels. The first level is the interface for optimizers (Section 4), functions(Section 6), and adaptors(Section 5). At this level, the classes define how they interoperate. The interface defined by these classes provides a high degree of interchangeability. Any type of optimizer should be able to work with any function as long as they adhere to the defined interface. Functions at this level are completely independant of molecules and coordinates. Molecule specific functions are introduced in the second level.

Although optimizers do not require information about molecules, functions and adaptors that work with molecules can be made more general with the addition of a molecule specific interface. The second programming level in CASE is a set of classes which define interfaces for molecule specific functions and adaptors. Perception of molecular features is a common task that must precede efficient computations. Again, the definition of a generic programming interface for molecule specific functions and adaptors provides a high level of interchangeability, and the ability to combine disparate functions in unique ways.

The top level in CASE is composed of implementations - a number of gradient and non-gradient optimizers are provided. Force fields, solvation corrections, and grid-based fields are among the molecule functions provided. Adaptors which subset, convert, and transform Cartesian coordinates extend the ability of molecule functions in a number of very powerful ways. Of course, the pre-defined classes provided with CASE may be augmented and extended with user-defined classes that adhere to the standard interface.