Draco

screenshot of Draco

An object-oriented component library supporting radiation transport applications.

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.