Infrastructure¶
Celeritas is built using modern CMake. It has multiple dependencies to operate as a full-featured code, but each dependency can be individually disabled as needed.
Installation¶
This project requires external dependencies to build with full functionality. However, any combination of these requirements can be omitted to enable limited development on personal machines with fewer available components.
Component |
Category |
Description |
---|---|---|
Runtime |
GPU computation |
|
Runtime |
Preprocessing physics data for a problem input |
|
Runtime |
EM physics model data |
|
Runtime |
Event input |
|
Runtime |
GPU computation |
|
Runtime |
Simple text-based I/O for diagnostics and program setup |
|
Runtime |
Shared-memory parallelism |
|
Runtime |
Input and output |
|
Runtime |
Low-level Python wrappers |
|
Runtime |
On-device navigation of GDML-defined detector geometry |
|
Docs |
Generating code documentation inside user docs |
|
Docs |
Code documentation |
|
Docs |
User documentation |
|
Docs |
Reference generation for user documentation |
|
Development |
Code formatting enforcement |
|
Development |
Build system |
|
Development |
Repository management |
|
Development |
Test harness |
Downstream usage as a library¶
The Celeritas library is most easily used when your downstream app is built with CMake. It should require a single line to initialize:
find_package(Celeritas REQUIRED CONFIG)
and if VecGeom or CUDA are disabled a single line to link:
target_link_libraries(mycode PUBLIC Celeritas::Core)
Because of complexities involving CUDA Relocatable Device Code, linking when
using both CUDA and VecGeom requires an additional include and the replacement
of target_link_libraries
with a customized version:
include(CeleritasLibrary)
celeritas_target_link_libraries(mycode PUBLIC Celeritas::Core)
Developing¶
See the Development Guide section for additional development guidelines.