Overview
Draco is an object-oriented component library designed for numerically intensive radiation (particle) transport applications. It is built for parallel computing hardware and consists of semi-independent packages and a robust build system. Draco provides a set of components that can be used to build transport codes for multiple clients.
Features
- c4: A communications library for message passing interfaces (MPI). It provides a wrapper to libquocdi and offers the option for builds without MPI.
- cdi: Access to material data through the Common Data Interface (CDI). It includes components for analytic models, stopping power models for charged particles, equation-of-state data, gray and multigroup opacities, and wrapper around LANL's Nuclear Data Interface (NDI) library.
- compton_interface: Provides access to Compton scattering models and data as provided by the CSK library. Also includes performant converter, reader, and interpolation tools for Compton data.
- device: Wrapper for heterogeneous device communication, providing access to DaCS and CUDA calls for use on heterogeneous architecture platforms (GPU machines).
- diagnostics: CPP macros that provide additional diagnostic verbosity during calculations.
- ds++: Basic services and data structures library, including array containers, assertion and Design-by-Contract features, access to low level OS functions, file and path manipulation, and a unit test system.
- experimental: Implementations of C++ features that are not yet available to all compilers used when installing Draco libraries.
- fc4: Fortran wrapper around portions of c4.
- fit: Least squares fitting routines.
- fpe_trap: Capability to catch IEEE floating point exceptions.
- FortranCheck: Component that tests Fortran compatibility and interoperability.
Summary
Draco is a powerful object-oriented component library built for parallel computing hardware. It provides a set of components that offer access to various functionalities for numerically intensive, radiation transport applications. The library's robust build system and support for parallel computing make it a valuable tool for developing transport codes for multiple clients.