next up previous contents
Next: 6. Software Development Toolkit Up: NWCHEM Programmer's Guide, Release Previous: 4. Molecular Modeling Toolkit   Contents

Subsections

5. Integral Application Programmer's Interface

The integral (INT) Application Programmer's Interface (API) is the interface to the base integral technology available in the NWChem application software. The INT-API interfaces currently three integral codes, the sp rotated axis code (from GAMESS-UK), the McMurchie-Davidson code (PNNL, Stave, Früchtl, and Kendall), and the Texas 93/95 Integral code (Wolinski and Pulay). The API is currently limited to the requisite functionality of NWChem. Further functionality will be added over time as requirements are determined, prioritized and implemented.

5.1 Overview

The integral code operates as a single threaded suite and all parallelization is achieved at the level of the routines that call the API or above. The API requires a collective initialization phase to determine operating parameters for the particular run based on both user input and the basis set specification. The API will select the appropriate base integral code for the requested integrals at the time of each request. Once all integral computations have completed for the module the termination routines should be called (in a collective fashion).

Coupled initialization and termination can be executed as many times as required. It is imperative that the basis set object, ECP object, and the geometry object are constant between initialization and termination, e.g., normalization must occur prior to initialization. If this data must be modified then a termination and re-initialization of the integral API is required.

The INT-API has the following kinds of routines:

Details of the API spcification are in appendix A.

5.2 Adding a new base integral code to the NWChem INT-API

This is a straightforward but non-trivial task. Requirements include a set of APIs for the base integral code to marry it to the NWChem style. The computation of integral batches (e.g., in shell quartets or groups of shell quartets, i.e., blocks) must be autonomous and use a scratch buffer passed at the time integral batch request for unified memory management. Any precomputation must be done in the initialization phase and stored for later use. The initialization routines must be based on using the NWChem basis set and geomtry data. This may be translated and stored for later use in the base integral code format but it must not require significant amounts of memory. A memory estimate routine that tells the application code the amount of scratch memory and buffer memory that is required. This should be dynamic in nature and not be a fixed dimension. In other words, the memory utilization should scale with the size of the problem. Termination routines should completely cleanup all temporary memory storage that is done in the Memory Allocator.


next up previous contents
Next: 6. Software Development Toolkit Up: NWCHEM Programmer's Guide, Release Previous: 4. Molecular Modeling Toolkit   Contents
Dunyou Wang 2009-03-13