8. Vector Data Structures
The SUNDIALS library comes packaged with a variety of NVECTOR implementations, designed for simulations in serial, shared-memory parallel, and distributed-memory parallel environments, as well as interfaces to vector data structures used within external linear solver libraries. All native implementations assume that the process-local data is stored contiguously, and they in turn provide a variety of standard vector algebra operations that may be performed on the data.
In addition, SUNDIALS provides a simple interface for generic vectors (akin to a C++ abstract base class). All of the major SUNDIALS solvers (CVODE(s), IDA(s), KINSOL, ARKODE) in turn are constructed to only depend on these generic vector operations, making them immediately extensible to new user-defined vector objects. The only exceptions to this rule relate to the dense, banded and sparse-direct linear system solvers, since they rely on particular data storage and access patterns in the NVECTORS used.
- 8.1. Description of the NVECTOR Modules
- 8.2. Description of the NVECTOR operations
- 8.3. NVECTOR functions required by ARKODE
- 8.4. NVECTOR functions used by CVODE
- 8.5. NVECTOR functions used by CVODES
- 8.6. NVECTOR functions used by IDA
- 8.7. NVECTOR functions used by IDAS
- 8.8. NVECTOR functions used by KINSOL
- 8.9. The NVECTOR_SERIAL Module
- 8.10. The NVECTOR_PARALLEL Module
- 8.11. The NVECTOR_OPENMP Module
- 8.12. The NVECTOR_PTHREADS Module
- 8.13. The NVECTOR_PARHYP Module
- 8.14. The NVECTOR_PETSC Module
- 8.15. The NVECTOR_CUDA Module
- 8.16. The NVECTOR_HIP Module
- 8.17. The NVECTOR_SYCL Module
- 8.18. The NVECTOR_RAJA Module
- 8.19. The NVECTOR_KOKKOS Module
- 8.20. The NVECTOR_OPENMPDEV Module
- 8.21. The NVECTOR_TRILINOS Module
- 8.22. The NVECTOR_MANYVECTOR Module
- 8.23. The NVECTOR_MPIMANYVECTOR Module
- 8.24. The NVECTOR_MPIPLUSX Module
- 8.25. NVECTOR Examples