Skip to content

v5.0.0-dev.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@balos1 balos1 released this 28 Mar 17:13
· 563 commits to develop since this release

Changes to SUNDIALS in release 5.0.0-dev.0

An additional N_Vector implementation, NVECTOR_MANYVECTOR, was
created to support flexible partitioning of solution data among
different processing elements (e.g., CPU + GPU) or for multi-physics
problems that couple distinct MPI-based simulations together (see
the NVECTOR_MANYVECTOR section in the user guides for more details).
This implementation is accompanied by additions to user documentation
and SUNDIALS examples.

Eleven new optional vector operations have been added to the N_Vector API to
support the new NVECTOR_MANYVECTOR implementation (see N_Vector chapter is the
user guides for more details). Two of the operations, N_VGetCommunicator and
N_VGetLength, must be implemented by subvectors that are combined to create an
NVECTOR_MANYVECTOR, but are not used outside of this context. The remaining nine
operations are optional local reduction operations intended to eliminate
unnecessary latency when performing vector reduction operations (norms, etc.) on
distributed memory systems. The optional local reduction vector operations are
N_VDotProdLocal, N_VMaxNormLocal, N_VMinLocal, N_VL1NormLocal, N_VWSqrSumLocal,
N_VWSqrSumMaskLocal, N_VInvTestLocal, N_VConstrMaskLocal, and
N_VMinQuotientLocal. If an N_Vector implementation defines any of the local
operations as NULL, then the NVECTOR_MANYVECTOR will call standard N_Vector
operations to complete the computation.

Additionally this release includes the following changes:

  • A new SUNMatrix and SUNLinearSolver implementation was added to facilitate
    the use of the SuperLU_DIST library with SUNDIALS.

  • A new operation, SUNMatMatvecSetup, was added to the SUNMatrix API. Users
    who have implemented custom SUNMatrix modules will need to at least update
    their code to set the corresponding ops structure member, matvecsetup, to NULL.

  • The generic SUNMatrix API now defines error codes to be returned by SUNMatrix operations.
    Operations which return an integer flag indiciating success/failure may return different
    values than previously.

  • The MRIStep module has been updated to support explicit, implicit, or IMEX
    methods as the fast integrator using the ARKStep module. As a result some
    function signatures have been changed including MRIStepCreate which now
    takes an ARKStep memory structure for the fast integration as an input.