Next: 6. Software Development Toolkit
Up: NWCHEM Programmer's Guide, Release
Previous: 4. Molecular Modeling Toolkit
Contents
Subsections
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.
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:
- initialization, integral accuracy and termination,
- memory requirements,
- integral routines (both shell based and blocked),
- derivative integral routines,
- property integral routines,
- periodic integral routines,
- Internal API Routines
Details of the API spcification are in appendix A.
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: 6. Software Development Toolkit
Up: NWCHEM Programmer's Guide, Release
Previous: 4. Molecular Modeling Toolkit
Contents
Dunyou Wang
2009-03-13