diff --git a/CMakeLists.txt b/CMakeLists.txt index c8138996dc..6bd5cc39fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,13 +30,13 @@ project(sundials C) # Set some variables with info on the SUNDIALS project set(PACKAGE_BUGREPORT "woodward6@llnl.gov") set(PACKAGE_NAME "SUNDIALS") -set(PACKAGE_STRING "SUNDIALS 5.1.0") +set(PACKAGE_STRING "SUNDIALS 5.2.0") set(PACKAGE_TARNAME "sundials") # set SUNDIALS version numbers # (use "" for the version label if none is needed) set(PACKAGE_VERSION_MAJOR "5") -set(PACKAGE_VERSION_MINOR "1") +set(PACKAGE_VERSION_MINOR "2") set(PACKAGE_VERSION_PATCH "0") set(PACKAGE_VERSION_LABEL "") @@ -63,37 +63,37 @@ mark_as_advanced(CLEAR # Specify the VERSION and SOVERSION for shared libraries -set(arkodelib_VERSION "4.1.0") +set(arkodelib_VERSION "4.2.0") set(arkodelib_SOVERSION "4") -set(cvodelib_VERSION "5.1.0") +set(cvodelib_VERSION "5.2.0") set(cvodelib_SOVERSION "5") -set(cvodeslib_VERSION "5.1.0") +set(cvodeslib_VERSION "5.2.0") set(cvodeslib_SOVERSION "5") -set(idalib_VERSION "5.1.0") +set(idalib_VERSION "5.2.0") set(idalib_SOVERSION "5") -set(idaslib_VERSION "4.1.0") +set(idaslib_VERSION "4.2.0") set(idaslib_SOVERSION "4") -set(kinsollib_VERSION "5.1.0") +set(kinsollib_VERSION "5.2.0") set(kinsollib_SOVERSION "5") set(cpodeslib_VERSION "0.0.0") set(cpodeslib_SOVERSION "0") -set(nveclib_VERSION "5.1.0") +set(nveclib_VERSION "5.2.0") set(nveclib_SOVERSION "5") -set(sunmatrixlib_VERSION "3.1.0") +set(sunmatrixlib_VERSION "3.2.0") set(sunmatrixlib_SOVERSION "3") -set(sunlinsollib_VERSION "3.1.0") +set(sunlinsollib_VERSION "3.2.0") set(sunlinsollib_SOVERSION "3") -set(sunnonlinsollib_VERSION "2.1.0") +set(sunnonlinsollib_VERSION "2.2.0") set(sunnonlinsollib_SOVERSION "2") # Specify the location of additional CMAKE modules diff --git a/README.md b/README.md index a2aa35104d..781dc4d75a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # SUNDIALS: SUite of Nonlinear and DIfferential/ALgebraic equation Solvers # -### Version 5.1.0 (Jan 2020) ### +### Version 5.2.0 (Mar 2020) ### **Center for Applied Scientific Computing, Lawrence Livermore National Laboratory** diff --git a/doc/arkode/ARKode.tex b/doc/arkode/ARKode.tex index d555bcfb82..15e11bb9bc 100644 --- a/doc/arkode/ARKode.tex +++ b/doc/arkode/ARKode.tex @@ -90,7 +90,7 @@ } -\title{User Documentation for ARKode v4.1.0 (SUNDIALS v5.1.0)} +\title{User Documentation for ARKode v4.2.0 (SUNDIALS v5.2.0)} \author{ Daniel R. Reynolds$^1$, David J. Gardner$^2$, \\ Carol S. Woodward$^2$, and Cody J. Balos$^2$\\\\ @@ -143,7 +143,7 @@ \chapter{Introduction} -\label{\detokenize{Introduction:introduction}}\label{\detokenize{Introduction:id1}}\label{\detokenize{Introduction::doc}}\label{\detokenize{Introduction:arkode-documentation}} +\label{\detokenize{Introduction:introduction}}\label{\detokenize{Introduction::doc}}\label{\detokenize{Introduction:arkode-documentation}}\label{\detokenize{Introduction:id1}} The ARKode infrastructure provides adaptive-step time integration modules for stiff, nonstiff and mixed stiff/nonstiff systems of ordinary differential equations (ODEs). ARKode itself is structured @@ -230,8 +230,8 @@ \chapter{Introduction} \section{Changes from previous versions} \label{\detokenize{Introduction:changes-from-previous-versions}} -\subsection{Changes in 4.x} -\label{\detokenize{Introduction:changes-in-4-x}} +\subsection{Changes in v4.2.0} +\label{\detokenize{Introduction:changes-in-v4-2-0}} Fixed a build system bug related to the Fortran 2003 interfaces when using the IBM XL compiler. When building the Fortran 2003 interfaces with an XL compiler it is recommended to set \sphinxcode{CMAKE\_Fortran\_COMPILER} to \sphinxcode{f2003}, \sphinxcode{xlf2003}, @@ -283,8 +283,8 @@ \subsection{Changes in 4.x} these have been deprecated and will be removed in a future release. -\subsection{Changes in 4.1.0} -\label{\detokenize{Introduction:changes-in-4-1-0}} +\subsection{Changes in v4.1.0} +\label{\detokenize{Introduction:changes-in-v4-1-0}} Fixed a build system bug related to finding LAPACK/BLAS. Fixed a build system bug related to checking if the KLU library works. @@ -1295,7 +1295,7 @@ \subsection{SUNDIALS Release Numbers} \chapter{Mathematical Considerations} -\label{\detokenize{Mathematics:mathematics}}\label{\detokenize{Mathematics::doc}}\label{\detokenize{Mathematics:mathematical-considerations}} +\label{\detokenize{Mathematics::doc}}\label{\detokenize{Mathematics:mathematical-considerations}}\label{\detokenize{Mathematics:mathematics}} ARKode solves ODE initial value problems (IVP) in \(\mathbb{R}^N\) posed in linearly-implicit form, @@ -1362,7 +1362,7 @@ \chapter{Mathematical Considerations} \section{Adaptive single-step methods} -\label{\detokenize{Mathematics:mathematics-singlestep}}\label{\detokenize{Mathematics:adaptive-single-step-methods}} +\label{\detokenize{Mathematics:adaptive-single-step-methods}}\label{\detokenize{Mathematics:mathematics-singlestep}} The ARKode infrastructure is designed to support single-step, IVP integration methods, i.e. \begin{equation*} @@ -1420,7 +1420,7 @@ \section{Adaptive single-step methods} \section{Interpolation} -\label{\detokenize{Mathematics:mathematics-interpolation}}\label{\detokenize{Mathematics:interpolation}} +\label{\detokenize{Mathematics:interpolation}}\label{\detokenize{Mathematics:mathematics-interpolation}} As mentioned above, the time-stepping modules in ARKode support interpolation of solutions \(y(t_\text{out})\) and derivatives \(y^{(d)}(t_\text{out})\), where \(t_\text{out}\) occurs @@ -1442,7 +1442,7 @@ \section{Interpolation} \subsection{Hermite interpolation module} -\label{\detokenize{Mathematics:mathematics-interpolation-hermite}}\label{\detokenize{Mathematics:hermite-interpolation-module}} +\label{\detokenize{Mathematics:hermite-interpolation-module}}\label{\detokenize{Mathematics:mathematics-interpolation-hermite}} For non-stiff problems, polynomial interpolants of Hermite form are provided. These interpolants are typically constructed using the data \(\left\{ y_{n-1}, f_{n-1}, y_{n}, f_{n} \right\}\), @@ -1678,7 +1678,7 @@ \section{ERKStep \textendash{} Explicit Runge-Kutta methods} \section{MRIStep \textendash{} Multirate infinitesimal step methods} -\label{\detokenize{Mathematics:mathematics-mristep}}\label{\detokenize{Mathematics:mristep-multirate-infinitesimal-step-methods}} +\label{\detokenize{Mathematics:mristep-multirate-infinitesimal-step-methods}}\label{\detokenize{Mathematics:mathematics-mristep}} The MRIStep time-stepping module in ARKode is designed for IVPs of the form @@ -1753,7 +1753,7 @@ \section{MRIStep \textendash{} Multirate infinitesimal step methods} \section{Error norms} -\label{\detokenize{Mathematics:error-norms}}\label{\detokenize{Mathematics:mathematics-error-norm}} +\label{\detokenize{Mathematics:mathematics-error-norm}}\label{\detokenize{Mathematics:error-norms}} In the process of controlling errors at various levels (time integration, nonlinear solution, linear solution), the methods in ARKode use a \index{weighted root-mean-square norm}weighted root-mean-square norm, denoted @@ -1920,7 +1920,7 @@ \subsection{Asymptotic error control} \subsubsection{PID controller} -\label{\detokenize{Mathematics:mathematics-adaptivity-errorcontrol-pid}}\label{\detokenize{Mathematics:pid-controller}} +\label{\detokenize{Mathematics:pid-controller}}\label{\detokenize{Mathematics:mathematics-adaptivity-errorcontrol-pid}} This is the default time adaptivity controller used by the ARKStep and ERKStep modules. It derives from those found in \phantomsection\label{\detokenize{Mathematics:id7}}{\hyperref[\detokenize{References:kc2003}]{\sphinxcrossref{{[}KC2003{]}}}}, \phantomsection\label{\detokenize{Mathematics:id8}}{\hyperref[\detokenize{References:s1998}]{\sphinxcrossref{{[}S1998{]}}}}, \phantomsection\label{\detokenize{Mathematics:id9}}{\hyperref[\detokenize{References:s2003}]{\sphinxcrossref{{[}S2003{]}}}} and \phantomsection\label{\detokenize{Mathematics:id10}}{\hyperref[\detokenize{References:s2006}]{\sphinxcrossref{{[}S2006{]}}}}, and uses all three of the local error estimates @@ -1950,7 +1950,7 @@ \subsubsection{PI controller} \subsubsection{I controller} -\label{\detokenize{Mathematics:i-controller}}\label{\detokenize{Mathematics:mathematics-adaptivity-errorcontrol-i}} +\label{\detokenize{Mathematics:mathematics-adaptivity-errorcontrol-i}}\label{\detokenize{Mathematics:i-controller}} This is the standard time adaptivity control algorithm in use by most publicly-available ODE solver codes. It bases the prospective time step estimate entirely off of the current local error estimate, @@ -2011,7 +2011,7 @@ \subsubsection{ImEx Gustafsson controller} \subsubsection{User-supplied controller} -\label{\detokenize{Mathematics:mathematics-adaptivity-errorcontrol-user}}\label{\detokenize{Mathematics:user-supplied-controller}} +\label{\detokenize{Mathematics:user-supplied-controller}}\label{\detokenize{Mathematics:mathematics-adaptivity-errorcontrol-user}} Finally, ARKode’s time-stepping modules allow the user to define their own time step adaptivity function, \begin{equation*} @@ -2022,7 +2022,7 @@ \subsubsection{User-supplied controller} \section{Explicit stability} -\label{\detokenize{Mathematics:mathematics-stability}}\label{\detokenize{Mathematics:explicit-stability}} +\label{\detokenize{Mathematics:explicit-stability}}\label{\detokenize{Mathematics:mathematics-stability}} For problems that involve a nonzero explicit component, i.e. \(f^E(t,y) \ne 0\) in ARKStep or for any problem in ERKStep, explicit and ImEx Runge-Kutta methods may benefit from @@ -2218,7 +2218,7 @@ \subsection{Nonlinear solver methods} \subsection{Linear solver methods} -\label{\detokenize{Mathematics:linear-solver-methods}}\label{\detokenize{Mathematics:mathematics-linear}} +\label{\detokenize{Mathematics:mathematics-linear}}\label{\detokenize{Mathematics:linear-solver-methods}} When a Newton-based method is chosen for solving each nonlinear system, a linear system of equations must be solved at each nonlinear iteration. For this solve ARKode provides several choices, including @@ -2280,7 +2280,7 @@ \subsection{Linear solver methods} \index{modified Newton iteration}\ignorespaces \subsubsection{Matrix-based linear solvers} -\label{\detokenize{Mathematics:matrix-based-linear-solvers}}\label{\detokenize{Mathematics:index-11}}\label{\detokenize{Mathematics:mathematics-linear-direct}} +\label{\detokenize{Mathematics:index-11}}\label{\detokenize{Mathematics:matrix-based-linear-solvers}}\label{\detokenize{Mathematics:mathematics-linear-direct}} In the case that a matrix-based linear solver is used, a \sphinxstyleemphasis{modified Newton iteration} is utilized. In a modified newton iteration, the matrix \({\mathcal A}\) is held fixed for multiple Newton iterations. @@ -2331,7 +2331,7 @@ \subsubsection{Matrix-based linear solvers} \index{inexact Newton iteration}\ignorespaces \subsubsection{Matrix-free iterative linear solvers} -\label{\detokenize{Mathematics:matrix-free-iterative-linear-solvers}}\label{\detokenize{Mathematics:mathematics-linear-iterative}}\label{\detokenize{Mathematics:index-12}} +\label{\detokenize{Mathematics:index-12}}\label{\detokenize{Mathematics:mathematics-linear-iterative}}\label{\detokenize{Mathematics:matrix-free-iterative-linear-solvers}} In the case that a matrix-free iterative linear solver is chosen, an \sphinxstyleemphasis{inexact Newton iteration} is utilized. Here, the matrix \({\mathcal A}\) is not itself constructed since the @@ -2439,10 +2439,10 @@ \subsubsection{Updating the linear solver} \subsection{Iteration Error Control} -\label{\detokenize{Mathematics:mathematics-error}}\label{\detokenize{Mathematics:iteration-error-control}} +\label{\detokenize{Mathematics:iteration-error-control}}\label{\detokenize{Mathematics:mathematics-error}} \subsubsection{Nonlinear iteration error control} -\label{\detokenize{Mathematics:nonlinear-iteration-error-control}}\label{\detokenize{Mathematics:mathematics-error-nonlinear}} +\label{\detokenize{Mathematics:mathematics-error-nonlinear}}\label{\detokenize{Mathematics:nonlinear-iteration-error-control}} The stopping test for all of the nonlinear solver algorithms is related to the temporal local error test, with the goal of keeping the nonlinear iteration errors from interfering with local error control. @@ -2494,7 +2494,7 @@ \subsubsection{Nonlinear iteration error control} \subsubsection{Linear iteration error control} -\label{\detokenize{Mathematics:linear-iteration-error-control}}\label{\detokenize{Mathematics:mathematics-error-linear}} +\label{\detokenize{Mathematics:mathematics-error-linear}}\label{\detokenize{Mathematics:linear-iteration-error-control}} When a Krylov method is used to solve the linear Newton systems \eqref{equation:Mathematics:Newton_system}, its errors must also be controlled. To this end, we approximate the linear iteration error in the solution vector @@ -2632,7 +2632,7 @@ \subsection{Implicit predictors} \subsubsection{Trivial predictor} -\label{\detokenize{Mathematics:trivial-predictor}}\label{\detokenize{Mathematics:mathematics-predictors-trivial}} +\label{\detokenize{Mathematics:mathematics-predictors-trivial}}\label{\detokenize{Mathematics:trivial-predictor}} The so-called “trivial predictor” is given by the formula \begin{equation*} \begin{split}p_0(t) = y_{n-1}.\end{split} @@ -2683,7 +2683,7 @@ \subsubsection{Cutoff order predictor} \end{equation*} \subsubsection{Bootstrap predictor} -\label{\detokenize{Mathematics:mathematics-predictors-bootstrap}}\label{\detokenize{Mathematics:bootstrap-predictor}} +\label{\detokenize{Mathematics:bootstrap-predictor}}\label{\detokenize{Mathematics:mathematics-predictors-bootstrap}} This predictor does not use any information from the preceding step, instead using information only within the current step \([t_{n-1},t_n]\). In addition to using the solution and ODE @@ -2721,7 +2721,7 @@ \subsubsection{Bootstrap predictor} \subsubsection{Minimum correction predictor} -\label{\detokenize{Mathematics:minimum-correction-predictor}}\label{\detokenize{Mathematics:mathematics-predictors-minimumcorrection}} +\label{\detokenize{Mathematics:mathematics-predictors-minimumcorrection}}\label{\detokenize{Mathematics:minimum-correction-predictor}} The last predictor is not interpolation based; instead it utilizes all existing stage information from the current step to create a predictor containing all but the current stage solution. @@ -2838,7 +2838,7 @@ \subsection{Mass matrix solver} \section{Rootfinding} -\label{\detokenize{Mathematics:mathematics-rootfinding}}\label{\detokenize{Mathematics:rootfinding}} +\label{\detokenize{Mathematics:rootfinding}}\label{\detokenize{Mathematics:mathematics-rootfinding}} Many of the time-stepping modules in ARKode also support a rootfinding feature. This means that, while integrating the IVP \eqref{equation:Mathematics:IVP}, these can also find the roots of a set of user-defined functions @@ -3176,7 +3176,7 @@ \chapter{Using ARKStep for C and C++ Applications} \section{Access to library and header files} -\label{\detokenize{ARKStep_c_interface/General:arkstep-cinterface-headers}}\label{\detokenize{ARKStep_c_interface/General:access-to-library-and-header-files}}\label{\detokenize{ARKStep_c_interface/General::doc}} +\label{\detokenize{ARKStep_c_interface/General:access-to-library-and-header-files}}\label{\detokenize{ARKStep_c_interface/General::doc}}\label{\detokenize{ARKStep_c_interface/General:arkstep-cinterface-headers}} At this point, it is assumed that the installation of ARKode, following the procedure described in the section {\hyperref[\detokenize{Install:installation}]{\sphinxcrossref{\DUrole{std,std-ref}{ARKode Installation Procedure}}}}, has been completed successfully. @@ -3226,7 +3226,7 @@ \section{Access to library and header files} \section{Data Types} -\label{\detokenize{ARKStep_c_interface/General:arkstep-cinterface-datatypes}}\label{\detokenize{ARKStep_c_interface/General:data-types}} +\label{\detokenize{ARKStep_c_interface/General:data-types}}\label{\detokenize{ARKStep_c_interface/General:arkstep-cinterface-datatypes}} The \sphinxcode{sundials\_types.h} file contains the definition of the variable type \sphinxcode{realtype}, which is used by the SUNDIALS solvers for all floating-point data, the definition of the integer type @@ -3458,7 +3458,7 @@ \section{Header Files} \section{A skeleton of the user’s main program} -\label{\detokenize{ARKStep_c_interface/Skeleton:arkstep-cinterface-skeleton}}\label{\detokenize{ARKStep_c_interface/Skeleton::doc}}\label{\detokenize{ARKStep_c_interface/Skeleton:a-skeleton-of-the-user-s-main-program}} +\label{\detokenize{ARKStep_c_interface/Skeleton::doc}}\label{\detokenize{ARKStep_c_interface/Skeleton:arkstep-cinterface-skeleton}}\label{\detokenize{ARKStep_c_interface/Skeleton:a-skeleton-of-the-user-s-main-program}} The following is a skeleton of the user’s main program (or calling program) for the integration of an ODE IVP using the ARKStep module. Most of the steps are independent of the NVECTOR, SUNMATRIX, SUNLINSOL @@ -3814,7 +3814,7 @@ \section{A skeleton of the user’s main program} \subsection{SUNDIALS linear solver interfaces and vector implementations that can be used for each} -\label{\detokenize{ARKStep_c_interface/Skeleton:sundials-linear-solver-interfaces-and-vector-implementations-that-can-be-used-for-each}}\label{\detokenize{ARKStep_c_interface/Skeleton:arkstep-cinterface-solver-vector}} +\label{\detokenize{ARKStep_c_interface/Skeleton:arkstep-cinterface-solver-vector}}\label{\detokenize{ARKStep_c_interface/Skeleton:sundials-linear-solver-interfaces-and-vector-implementations-that-can-be-used-for-each}} \begin{savenotes}\sphinxattablestart \centering @@ -4062,7 +4062,7 @@ \subsection{SUNDIALS linear solver interfaces and vector implementations that ca \section{User-callable functions} -\label{\detokenize{ARKStep_c_interface/User_callable::doc}}\label{\detokenize{ARKStep_c_interface/User_callable:user-callable-functions}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-usercallable}} +\label{\detokenize{ARKStep_c_interface/User_callable:user-callable-functions}}\label{\detokenize{ARKStep_c_interface/User_callable::doc}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-usercallable}} This section describes the functions that are called by the user to setup and then solve an IVP using the ARKStep time-stepping module. Some of these are required; however, starting with the section @@ -4534,7 +4534,7 @@ \subsubsection{Advice on controlling nonphysical negative values} \subsection{Linear solver interface functions} -\label{\detokenize{ARKStep_c_interface/User_callable:linear-solver-interface-functions}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-linearsolvers}} +\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-linearsolvers}}\label{\detokenize{ARKStep_c_interface/User_callable:linear-solver-interface-functions}} As previously explained, the Newton iterations used in solving implicit systems within ARKStep require the solution of linear systems of the form @@ -4684,7 +4684,7 @@ \subsection{Linear solver interface functions} \subsection{Mass matrix solver specification functions} -\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-massmatrixsolvers}}\label{\detokenize{ARKStep_c_interface/User_callable:mass-matrix-solver-specification-functions}} +\label{\detokenize{ARKStep_c_interface/User_callable:mass-matrix-solver-specification-functions}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-massmatrixsolvers}} As discussed in section {\hyperref[\detokenize{Mathematics:mathematics-masssolve}]{\sphinxcrossref{\DUrole{std,std-ref}{Mass matrix solver}}}}, if the ODE system involves a non-identity mass matrix \(M\ne I\), then ARKStep must solve linear systems of the form @@ -4826,7 +4826,7 @@ \subsection{Mass matrix solver specification functions} \subsection{Nonlinear solver interface functions} -\label{\detokenize{ARKStep_c_interface/User_callable:nonlinear-solver-interface-functions}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-nonlinearsolvers}} +\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-nonlinearsolvers}}\label{\detokenize{ARKStep_c_interface/User_callable:nonlinear-solver-interface-functions}} When changing the nonlinear solver in ARKStep, after the call to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepCreate}]{\sphinxcrossref{\sphinxcode{ARKStepCreate()}}}} but before any calls to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepEvolve}]{\sphinxcrossref{\sphinxcode{ARKStepEvolve()}}}}, the user’s program must create the @@ -4886,7 +4886,7 @@ \subsection{Nonlinear solver interface functions} \subsection{Rootfinding initialization function} -\label{\detokenize{ARKStep_c_interface/User_callable:rootfinding-initialization-function}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-rootfinding}} +\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-rootfinding}}\label{\detokenize{ARKStep_c_interface/User_callable:rootfinding-initialization-function}} As described in the section {\hyperref[\detokenize{Mathematics:mathematics-rootfinding}]{\sphinxcrossref{\DUrole{std,std-ref}{Rootfinding}}}}, while solving the IVP, ARKode’s time-stepping modules have the capability to find the roots of a set of user-defined functions. To activate the @@ -4947,7 +4947,7 @@ \subsection{Rootfinding initialization function} \subsection{ARKStep solver function} -\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-solver-function}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-integration}} +\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-integration}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-solver-function}} This is the central step in the solution process \textendash{} the call to perform the integration of the IVP. One of the input arguments (\sphinxstyleemphasis{itask}) specifies one of two modes as to where ARKStep is to return a @@ -5162,7 +5162,7 @@ \subsection{Optional input functions} \subsubsection{Optional inputs for ARKStep} -\label{\detokenize{ARKStep_c_interface/User_callable:optional-inputs-for-arkstep}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arkstepinputtable}} +\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arkstepinputtable}}\label{\detokenize{ARKStep_c_interface/User_callable:optional-inputs-for-arkstep}} \begin{savenotes}\sphinxattablestart \centering @@ -6063,7 +6063,7 @@ \subsubsection{Optional inputs for ARKStep} \subsubsection{Optional inputs for IVP method selection} -\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arkstepmethodinputtable}}\label{\detokenize{ARKStep_c_interface/User_callable:optional-inputs-for-ivp-method-selection}} +\label{\detokenize{ARKStep_c_interface/User_callable:optional-inputs-for-ivp-method-selection}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arkstepmethodinputtable}} \begin{savenotes}\sphinxattablestart \centering @@ -7007,7 +7007,7 @@ \subsubsection{Optional inputs for time step adaptivity} \subsubsection{Optional inputs for implicit stage solves} -\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arkstep-cinterface-arkstepsolverinputtable}}\label{\detokenize{ARKStep_c_interface/User_callable:optional-inputs-for-implicit-stage-solves}} +\label{\detokenize{ARKStep_c_interface/User_callable:optional-inputs-for-implicit-stage-solves}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arkstep-cinterface-arkstepsolverinputtable}} The mathematical explanation for the nonlinear solver strategies used by ARKStep, including how each of the parameters below is used within the code, is provided in the section {\hyperref[\detokenize{Mathematics:mathematics-nonlinear}]{\sphinxcrossref{\DUrole{std,std-ref}{Nonlinear solver methods}}}}. @@ -7661,7 +7661,7 @@ \subsubsection{Linear solver interface optional input functions} \paragraph{Optional inputs for matrix-based \sphinxstyleliteralintitle{SUNLinearSolver} modules} -\label{\detokenize{ARKStep_c_interface/User_callable:optional-inputs-for-matrix-based-sunlinearsolver-modules}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arklsinputs-matrixbased}} +\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arklsinputs-matrixbased}}\label{\detokenize{ARKStep_c_interface/User_callable:optional-inputs-for-matrix-based-sunlinearsolver-modules}} \begin{savenotes}\sphinxattablestart \centering @@ -7921,7 +7921,7 @@ \subsubsection{Linear solver interface optional input functions} \paragraph{Optional inputs for matrix-free \sphinxstyleliteralintitle{SUNLinearSolver} modules} -\label{\detokenize{ARKStep_c_interface/User_callable:optional-inputs-for-matrix-free-sunlinearsolver-modules}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arklsinputs-matrixfree}} +\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arklsinputs-matrixfree}}\label{\detokenize{ARKStep_c_interface/User_callable:optional-inputs-for-matrix-free-sunlinearsolver-modules}} \begin{savenotes}\sphinxattablestart \centering @@ -8652,7 +8652,7 @@ \subsection{Optional output functions} \subsubsection{SUNDIALS version information} -\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-sunversioninfo}}\label{\detokenize{ARKStep_c_interface/User_callable:sundials-version-information}} +\label{\detokenize{ARKStep_c_interface/User_callable:sundials-version-information}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-sunversioninfo}} The following functions provide a way to get SUNDIALS version information at runtime. \index{SUNDIALSGetVersion (C function)} @@ -9681,7 +9681,7 @@ \subsubsection{Implicit solver optional output functions} \subsubsection{Rootfinding optional output functions} -\label{\detokenize{ARKStep_c_interface/User_callable:rootfinding-optional-output-functions}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arksteprootoutputs}} +\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arksteprootoutputs}}\label{\detokenize{ARKStep_c_interface/User_callable:rootfinding-optional-output-functions}} \begin{savenotes}\sphinxattablestart \centering @@ -9780,7 +9780,7 @@ \subsubsection{Rootfinding optional output functions} \subsubsection{Linear solver interface optional output functions} -\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arklsoutputs}}\label{\detokenize{ARKStep_c_interface/User_callable:linear-solver-interface-optional-output-functions}} +\label{\detokenize{ARKStep_c_interface/User_callable:linear-solver-interface-optional-output-functions}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arklsoutputs}} The following optional outputs are available from the ARKLS modules: workspace requirements, @@ -10678,7 +10678,7 @@ \subsubsection{Linear solver interface optional output functions} \subsubsection{General usability functions} -\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arkstepextraoutputs}}\label{\detokenize{ARKStep_c_interface/User_callable:general-usability-functions}} +\label{\detokenize{ARKStep_c_interface/User_callable:general-usability-functions}}\label{\detokenize{ARKStep_c_interface/User_callable:arkstep-cinterface-arkstepextraoutputs}} The following optional routines may be called by a user to inquire about existing solver parameters, to retrieve stored Butcher tables, write the current Butcher table(s), or even to test a provided Butcher @@ -11018,7 +11018,7 @@ \subsubsection{Resizing the absolute tolerance array} \section{User-supplied functions} -\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-usersupplied}}\label{\detokenize{ARKStep_c_interface/User_supplied:user-supplied-functions}}\label{\detokenize{ARKStep_c_interface/User_supplied::doc}} +\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-usersupplied}}\label{\detokenize{ARKStep_c_interface/User_supplied::doc}}\label{\detokenize{ARKStep_c_interface/User_supplied:user-supplied-functions}} The user-supplied functions for ARKStep consist of: \begin{itemize} \item {} @@ -11133,7 +11133,7 @@ \subsection{ODE right-hand side} \subsection{Error message handler function} -\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-errorhandler}}\label{\detokenize{ARKStep_c_interface/User_supplied:error-message-handler-function}} +\label{\detokenize{ARKStep_c_interface/User_supplied:error-message-handler-function}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-errorhandler}} As an alternative to the default behavior of directing error and warning messages to the file pointed to by \sphinxtitleref{errfp} (see {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetErrFile}]{\sphinxcrossref{\sphinxcode{ARKStepSetErrFile()}}}}), the user may provide a function of type @@ -11270,7 +11270,7 @@ \subsection{Residual weight function} \subsection{Time step adaptivity function} -\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-adaptivityfn}}\label{\detokenize{ARKStep_c_interface/User_supplied:time-step-adaptivity-function}} +\label{\detokenize{ARKStep_c_interface/User_supplied:time-step-adaptivity-function}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-adaptivityfn}} As an alternative to using one of the built-in time step adaptivity methods for controlling solution error, the user may provide a function of type {\hyperref[\detokenize{ERKStep_c_interface/User_supplied:c.ARKAdaptFn}]{\sphinxcrossref{\sphinxcode{ARKAdaptFn}}}} to compute a target step size @@ -11334,7 +11334,7 @@ \subsection{Time step adaptivity function} \subsection{Explicit stability function} -\label{\detokenize{ARKStep_c_interface/User_supplied:explicit-stability-function}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-stabilityfn}} +\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-stabilityfn}}\label{\detokenize{ARKStep_c_interface/User_supplied:explicit-stability-function}} A user may supply a function to predict the maximum stable step size for the explicit portion of the ImEx system, \(f^E(t,y)\). While the accuracy-based time step adaptivity algorithms may be sufficient @@ -11386,7 +11386,7 @@ \subsection{Explicit stability function} \subsection{Implicit stage prediction function} -\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-stagepredictfn}}\label{\detokenize{ARKStep_c_interface/User_supplied:implicit-stage-prediction-function}} +\label{\detokenize{ARKStep_c_interface/User_supplied:implicit-stage-prediction-function}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-stagepredictfn}} A user may supply a function to update the prediction for each implicit stage solution. If supplied, this routine will be called \sphinxstyleemphasis{after} any existing ARKStep predictor algorithm completes, so that the predictor may be modified by the user as desired. @@ -11434,7 +11434,7 @@ \subsection{Implicit stage prediction function} \subsection{Rootfinding function} -\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-rootfindingfn}}\label{\detokenize{ARKStep_c_interface/User_supplied:rootfinding-function}} +\label{\detokenize{ARKStep_c_interface/User_supplied:rootfinding-function}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-rootfindingfn}} If a rootfinding problem is to be solved during the integration of the ODE system, the user must supply a function of type {\hyperref[\detokenize{MRIStep_c_interface/User_supplied:c.ARKRootFn}]{\sphinxcrossref{\sphinxcode{ARKRootFn}}}}. \index{ARKRootFn (C type)} @@ -11475,7 +11475,7 @@ \subsection{Rootfinding function} \subsection{Jacobian construction (matrix-based linear solvers)} -\label{\detokenize{ARKStep_c_interface/User_supplied:jacobian-construction-matrix-based-linear-solvers}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-jacobianfn}} +\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-jacobianfn}}\label{\detokenize{ARKStep_c_interface/User_supplied:jacobian-construction-matrix-based-linear-solvers}} If a matrix-based linear solver module is used (i.e., a non-NULL \sphinxcode{SUNMatrix} object was supplied to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetLinearSolver}]{\sphinxcrossref{\sphinxcode{ARKStepSetLinearSolver()}}}} in section {\hyperref[\detokenize{ARKStep_c_interface/Skeleton:arkstep-cinterface-skeleton}]{\sphinxcrossref{\DUrole{std,std-ref}{A skeleton of the user’s main program}}}}), the user may provide a function of type @@ -11818,7 +11818,7 @@ \subsection{Jacobian-vector product setup (matrix-free linear solvers)} \subsection{Preconditioner solve (iterative linear solvers)} -\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-precsolvefn}}\label{\detokenize{ARKStep_c_interface/User_supplied:preconditioner-solve-iterative-linear-solvers}} +\label{\detokenize{ARKStep_c_interface/User_supplied:preconditioner-solve-iterative-linear-solvers}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-precsolvefn}} If a user-supplied preconditioner is to be used with a SUNLinSol solver module, then the user must provide a function of type {\hyperref[\detokenize{ARKStep_c_interface/User_supplied:c.ARKLsPrecSolveFn}]{\sphinxcrossref{\sphinxcode{ARKLsPrecSolveFn}}}} to solve the linear system \(Pz=r\), @@ -11889,7 +11889,7 @@ \subsection{Preconditioner solve (iterative linear solvers)} \subsection{Preconditioner setup (iterative linear solvers)} -\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-precsetupfn}}\label{\detokenize{ARKStep_c_interface/User_supplied:preconditioner-setup-iterative-linear-solvers}} +\label{\detokenize{ARKStep_c_interface/User_supplied:preconditioner-setup-iterative-linear-solvers}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-precsetupfn}} If the user’s preconditioner routine requires that any data be preprocessed or evaluated, then these actions need to occur within a user-supplied function of type {\hyperref[\detokenize{ARKStep_c_interface/User_supplied:c.ARKLsPrecSetupFn}]{\sphinxcrossref{\sphinxcode{ARKLsPrecSetupFn}}}}. @@ -12068,7 +12068,7 @@ \subsection{Mass matrix construction (matrix-based linear solvers)} \subsection{Mass matrix-vector product (matrix-free linear solvers)} -\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-mtimesfn}}\label{\detokenize{ARKStep_c_interface/User_supplied:mass-matrix-vector-product-matrix-free-linear-solvers}} +\label{\detokenize{ARKStep_c_interface/User_supplied:mass-matrix-vector-product-matrix-free-linear-solvers}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-mtimesfn}} If a matrix-free linear solver is to be used for mass-matrix linear systems (i.e., a NULL-valued SUNMATRIX argument was supplied to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetMassLinearSolver}]{\sphinxcrossref{\sphinxcode{ARKStepSetMassLinearSolver()}}}} in the section @@ -12110,7 +12110,7 @@ \subsection{Mass matrix-vector product (matrix-free linear solvers)} \subsection{Mass matrix-vector product setup (matrix-free linear solvers)} -\label{\detokenize{ARKStep_c_interface/User_supplied:mass-matrix-vector-product-setup-matrix-free-linear-solvers}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-mtsetupfn}} +\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-mtsetupfn}}\label{\detokenize{ARKStep_c_interface/User_supplied:mass-matrix-vector-product-setup-matrix-free-linear-solvers}} If the user’s mass-matrix-times-vector routine requires that any mass matrix-related data be preprocessed or evaluated, then this needs to be done in a user-supplied function of type @@ -12204,7 +12204,7 @@ \subsection{Mass matrix preconditioner solve (iterative linear solvers)} \subsection{Mass matrix preconditioner setup (iterative linear solvers)} -\label{\detokenize{ARKStep_c_interface/User_supplied:mass-matrix-preconditioner-setup-iterative-linear-solvers}}\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-massprecsetupfn}} +\label{\detokenize{ARKStep_c_interface/User_supplied:arkstep-cinterface-massprecsetupfn}}\label{\detokenize{ARKStep_c_interface/User_supplied:mass-matrix-preconditioner-setup-iterative-linear-solvers}} If the user’s mass matrix preconditioner above requires that any problem data be preprocessed or evaluated, then these actions need to occur within a user-supplied function of type @@ -12580,7 +12580,7 @@ \subsubsection{ARKBANDPRE user-callable functions} \subsection{A parallel band-block-diagonal preconditioner module} -\label{\detokenize{ARKStep_c_interface/Preconditioners:a-parallel-band-block-diagonal-preconditioner-module}}\label{\detokenize{ARKStep_c_interface/Preconditioners:arkstep-cinterface-bbdpre}} +\label{\detokenize{ARKStep_c_interface/Preconditioners:arkstep-cinterface-bbdpre}}\label{\detokenize{ARKStep_c_interface/Preconditioners:a-parallel-band-block-diagonal-preconditioner-module}} A principal reason for using a parallel ODE solver (such as ARKode) lies in the solution of partial differential equations (PDEs). Moreover, Krylov iterative methods are used on many such @@ -13130,7 +13130,7 @@ \subsubsection{ARKBBDPRE user-callable functions} \chapter{Using ERKStep for C and C++ Applications} -\label{\detokenize{ERKStep_c_interface/index:using-erkstep-for-c-and-c-applications}}\label{\detokenize{ERKStep_c_interface/index::doc}}\label{\detokenize{ERKStep_c_interface/index:erkstep-cinterface}} +\label{\detokenize{ERKStep_c_interface/index:erkstep-cinterface}}\label{\detokenize{ERKStep_c_interface/index::doc}}\label{\detokenize{ERKStep_c_interface/index:using-erkstep-for-c-and-c-applications}} This chapter is concerned with the use of the ERKStep time-stepping module for the solution of nonstiff initial value problems (IVPs) in a C or C++ language setting. The following sections discuss the header @@ -13152,7 +13152,7 @@ \chapter{Using ERKStep for C and C++ Applications} \section{Access to library and header files} -\label{\detokenize{ERKStep_c_interface/General:access-to-library-and-header-files}}\label{\detokenize{ERKStep_c_interface/General:erkstep-cinterface-headers}}\label{\detokenize{ERKStep_c_interface/General::doc}} +\label{\detokenize{ERKStep_c_interface/General:erkstep-cinterface-headers}}\label{\detokenize{ERKStep_c_interface/General::doc}}\label{\detokenize{ERKStep_c_interface/General:access-to-library-and-header-files}} At this point, it is assumed that the installation of ARKode, following the procedure described in the section {\hyperref[\detokenize{Install:installation}]{\sphinxcrossref{\DUrole{std,std-ref}{ARKode Installation Procedure}}}}, has been completed successfully. @@ -13303,7 +13303,7 @@ \section{Header Files} \section{A skeleton of the user’s main program} -\label{\detokenize{ERKStep_c_interface/Skeleton::doc}}\label{\detokenize{ERKStep_c_interface/Skeleton:a-skeleton-of-the-user-s-main-program}}\label{\detokenize{ERKStep_c_interface/Skeleton:erkstep-cinterface-skeleton}} +\label{\detokenize{ERKStep_c_interface/Skeleton::doc}}\label{\detokenize{ERKStep_c_interface/Skeleton:erkstep-cinterface-skeleton}}\label{\detokenize{ERKStep_c_interface/Skeleton:a-skeleton-of-the-user-s-main-program}} The following is a skeleton of the user’s main program (or calling program) for the integration of an ODE IVP using the ERKStep module. Most of the steps are independent of the NVECTOR implementation used. @@ -13490,7 +13490,7 @@ \section{A skeleton of the user’s main program} \section{ERKStep User-callable functions} -\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-user-callable-functions}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-usercallable}}\label{\detokenize{ERKStep_c_interface/User_callable::doc}} +\label{\detokenize{ERKStep_c_interface/User_callable::doc}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-usercallable}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-user-callable-functions}} This section describes the functions that are called by the user to setup and then solve an IVP using the ERKStep time-stepping module. Some of these are required; however, starting with the section @@ -13868,7 +13868,7 @@ \subsection{Rootfinding initialization function} \subsection{ERKStep solver function} -\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-integration}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-solver-function}} +\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-solver-function}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-integration}} This is the central step in the solution process \textendash{} the call to perform the integration of the IVP. One of the input arguments (\sphinxstyleemphasis{itask}) specifies one of two modes as to where ERKStep is to return a @@ -14010,7 +14010,7 @@ \subsection{ERKStep solver function} \subsection{Optional input functions} -\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-optionalinputs}}\label{\detokenize{ERKStep_c_interface/User_callable:optional-input-functions}} +\label{\detokenize{ERKStep_c_interface/User_callable:optional-input-functions}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-optionalinputs}} There are numerous optional input parameters that control the behavior of the ERKStep solver, each of which may be modified from its default value through calling an appropriate input function. The following @@ -14888,7 +14888,7 @@ \subsubsection{Optional inputs for ERKStep} \subsubsection{Optional inputs for IVP method selection} -\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-erkstepmethodinputtable}}\label{\detokenize{ERKStep_c_interface/User_callable:optional-inputs-for-ivp-method-selection}} +\label{\detokenize{ERKStep_c_interface/User_callable:optional-inputs-for-ivp-method-selection}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-erkstepmethodinputtable}} \begin{savenotes}\sphinxattablestart \centering @@ -16646,7 +16646,7 @@ \subsubsection{Main solver optional output functions} \subsubsection{Rootfinding optional output functions} -\label{\detokenize{ERKStep_c_interface/User_callable:rootfinding-optional-output-functions}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-erksteprootoutputs}} +\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-erksteprootoutputs}}\label{\detokenize{ERKStep_c_interface/User_callable:rootfinding-optional-output-functions}} \begin{savenotes}\sphinxattablestart \centering @@ -16851,7 +16851,7 @@ \subsubsection{General usability functions} \subsection{ERKStep re-initialization functions} -\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-re-initialization-functions}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-reinitialization}} +\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-reinitialization}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-re-initialization-functions}} To reinitialize the ERKStep module for the solution of a new problem, where a prior call to {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepCreate}]{\sphinxcrossref{\sphinxcode{ERKStepCreate()}}}} has been made, the user must call the function {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepReInit}]{\sphinxcrossref{\sphinxcode{ERKStepReInit()}}}}. The new @@ -16941,7 +16941,7 @@ \subsection{ERKStep re-initialization functions} \subsection{ERKStep system resize function} -\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-system-resize-function}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-resizing}} +\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-cinterface-resizing}}\label{\detokenize{ERKStep_c_interface/User_callable:erkstep-system-resize-function}} For simulations involving changes to the number of equations and unknowns in the ODE system (e.g. when using spatially-adaptive PDE simulations under a method-of-lines approach), the ERKStep @@ -17047,7 +17047,7 @@ \subsubsection{Resizing the absolute tolerance array} \section{User-supplied functions} -\label{\detokenize{ERKStep_c_interface/User_supplied:erkstep-cinterface-usersupplied}}\label{\detokenize{ERKStep_c_interface/User_supplied:user-supplied-functions}}\label{\detokenize{ERKStep_c_interface/User_supplied::doc}} +\label{\detokenize{ERKStep_c_interface/User_supplied::doc}}\label{\detokenize{ERKStep_c_interface/User_supplied:erkstep-cinterface-usersupplied}}\label{\detokenize{ERKStep_c_interface/User_supplied:user-supplied-functions}} The user-supplied functions for ERKStep consist of: \begin{itemize} \item {} @@ -17335,7 +17335,7 @@ \subsection{Explicit stability function} \subsection{Rootfinding function} -\label{\detokenize{ERKStep_c_interface/User_supplied:rootfinding-function}}\label{\detokenize{ERKStep_c_interface/User_supplied:erkstep-cinterface-rootfindingfn}} +\label{\detokenize{ERKStep_c_interface/User_supplied:erkstep-cinterface-rootfindingfn}}\label{\detokenize{ERKStep_c_interface/User_supplied:rootfinding-function}} If a rootfinding problem is to be solved during the integration of the ODE system, the user must supply a function of type {\hyperref[\detokenize{MRIStep_c_interface/User_supplied:c.ARKRootFn}]{\sphinxcrossref{\sphinxcode{ARKRootFn}}}}. \index{ARKRootFn (C type)} @@ -17376,7 +17376,7 @@ \subsection{Rootfinding function} \subsection{Vector resize function} -\label{\detokenize{ERKStep_c_interface/User_supplied:erkstep-cinterface-vecresizefn}}\label{\detokenize{ERKStep_c_interface/User_supplied:vector-resize-function}} +\label{\detokenize{ERKStep_c_interface/User_supplied:vector-resize-function}}\label{\detokenize{ERKStep_c_interface/User_supplied:erkstep-cinterface-vecresizefn}} For simulations involving changes to the number of equations and unknowns in the ODE system (e.g. when using spatial adaptivity in a PDE simulation), the ERKStep integrator may be “resized” between @@ -17427,7 +17427,7 @@ \subsection{Vector resize function} \chapter{Using MRIStep for C and C++ Applications} -\label{\detokenize{MRIStep_c_interface/index::doc}}\label{\detokenize{MRIStep_c_interface/index:using-mristep-for-c-and-c-applications}}\label{\detokenize{MRIStep_c_interface/index:mristep-cinterface}} +\label{\detokenize{MRIStep_c_interface/index:mristep-cinterface}}\label{\detokenize{MRIStep_c_interface/index::doc}}\label{\detokenize{MRIStep_c_interface/index:using-mristep-for-c-and-c-applications}} This chapter is concerned with the use of the MRIStep time-stepping module for the solution of two-rate initial value problems (IVPs) in a C or C++ language setting. The following sections discuss the header @@ -17490,7 +17490,7 @@ \section{Access to library and header files} \section{Data Types} -\label{\detokenize{MRIStep_c_interface/General:mristep-cinterface-datatypes}}\label{\detokenize{MRIStep_c_interface/General:data-types}} +\label{\detokenize{MRIStep_c_interface/General:data-types}}\label{\detokenize{MRIStep_c_interface/General:mristep-cinterface-datatypes}} The \sphinxcode{sundials\_types.h} file contains the definition of the variable type \sphinxcode{realtype}, which is used by the SUNDIALS solvers for all floating-point data, the definition of the integer type @@ -17922,7 +17922,7 @@ \subsection{MRIStep initialization and deallocation functions} \subsection{Rootfinding initialization function} -\label{\detokenize{MRIStep_c_interface/User_callable:rootfinding-initialization-function}}\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-rootfinding}} +\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-rootfinding}}\label{\detokenize{MRIStep_c_interface/User_callable:rootfinding-initialization-function}} As described in the section {\hyperref[\detokenize{Mathematics:mathematics-rootfinding}]{\sphinxcrossref{\DUrole{std,std-ref}{Rootfinding}}}}, while solving the IVP, ARKode’s time-stepping modules have the capability to find the roots of a set of user-defined functions. In the MRIStep module root @@ -18152,7 +18152,7 @@ \subsection{Optional input functions} \subsubsection{Optional inputs for MRIStep} -\label{\detokenize{MRIStep_c_interface/User_callable:optional-inputs-for-mristep}}\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-mristepinputtable}}\index{MRIStepSetDefaults (C function)} +\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-mristepinputtable}}\label{\detokenize{MRIStep_c_interface/User_callable:optional-inputs-for-mristep}}\index{MRIStepSetDefaults (C function)} \begin{fulllineitems} \phantomsection\label{\detokenize{MRIStep_c_interface/User_callable:c.MRIStepSetDefaults}}\pysiglinewithargsret{int \sphinxbfcode{MRIStepSetDefaults}}{void*\sphinxstyleemphasis{ arkode\_mem}}{}~\begin{quote} @@ -18680,7 +18680,7 @@ \subsubsection{Optional inputs for MRIStep} \subsubsection{Optional inputs for IVP method selection} -\label{\detokenize{MRIStep_c_interface/User_callable:optional-inputs-for-ivp-method-selection}}\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-mristepmethodinputtable}} +\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-mristepmethodinputtable}}\label{\detokenize{MRIStep_c_interface/User_callable:optional-inputs-for-ivp-method-selection}} \begin{savenotes}\sphinxattablestart \centering @@ -18912,7 +18912,7 @@ \subsubsection{Rootfinding optional input functions} \subsection{Interpolated output function} -\label{\detokenize{MRIStep_c_interface/User_callable:interpolated-output-function}}\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-interpolatedoutput}} +\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-interpolatedoutput}}\label{\detokenize{MRIStep_c_interface/User_callable:interpolated-output-function}} An optional function {\hyperref[\detokenize{MRIStep_c_interface/User_callable:c.MRIStepGetDky}]{\sphinxcrossref{\sphinxcode{MRIStepGetDky()}}}} is available to obtain additional values of solution-related quantities. This function should only be called after a successful return from @@ -19031,7 +19031,7 @@ \subsection{Optional output functions} \subsubsection{SUNDIALS version information} -\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-sunversioninfo}}\label{\detokenize{MRIStep_c_interface/User_callable:sundials-version-information}} +\label{\detokenize{MRIStep_c_interface/User_callable:sundials-version-information}}\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-sunversioninfo}} The following functions provide a way to get SUNDIALS version information at runtime. \index{SUNDIALSGetVersion (C function)} @@ -19111,7 +19111,7 @@ \subsubsection{SUNDIALS version information} \subsubsection{Main solver optional output functions} -\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-mristepmainoutputs}}\label{\detokenize{MRIStep_c_interface/User_callable:main-solver-optional-output-functions}} +\label{\detokenize{MRIStep_c_interface/User_callable:main-solver-optional-output-functions}}\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-mristepmainoutputs}} \begin{savenotes}\sphinxattablestart \centering @@ -19411,7 +19411,7 @@ \subsubsection{Main solver optional output functions} \subsubsection{General usability functions} -\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-mristepextraoutputs}}\label{\detokenize{MRIStep_c_interface/User_callable:general-usability-functions}} +\label{\detokenize{MRIStep_c_interface/User_callable:general-usability-functions}}\label{\detokenize{MRIStep_c_interface/User_callable:mristep-cinterface-mristepextraoutputs}} The following optional routines may be called by a user to inquire about existing solver parameters, to retrieve stored Butcher tables, write the current Butcher table, or even to test a provided Butcher @@ -19782,7 +19782,7 @@ \subsection{MRIStep system resize function} \section{User-supplied functions} -\label{\detokenize{MRIStep_c_interface/User_supplied:user-supplied-functions}}\label{\detokenize{MRIStep_c_interface/User_supplied::doc}}\label{\detokenize{MRIStep_c_interface/User_supplied:mristep-cinterface-usersupplied}} +\label{\detokenize{MRIStep_c_interface/User_supplied:mristep-cinterface-usersupplied}}\label{\detokenize{MRIStep_c_interface/User_supplied::doc}}\label{\detokenize{MRIStep_c_interface/User_supplied:user-supplied-functions}} The user-supplied functions for MRIStep consist of: \begin{itemize} \item {} @@ -19851,7 +19851,7 @@ \subsection{ODE right-hand side} \subsection{Error message handler function} -\label{\detokenize{MRIStep_c_interface/User_supplied:error-message-handler-function}}\label{\detokenize{MRIStep_c_interface/User_supplied:mristep-cinterface-errorhandler}} +\label{\detokenize{MRIStep_c_interface/User_supplied:mristep-cinterface-errorhandler}}\label{\detokenize{MRIStep_c_interface/User_supplied:error-message-handler-function}} As an alternative to the default behavior of directing error and warning messages to the file pointed to by \sphinxtitleref{errfp} (see {\hyperref[\detokenize{MRIStep_c_interface/User_callable:c.MRIStepSetErrFile}]{\sphinxcrossref{\sphinxcode{MRIStepSetErrFile()}}}}), the user may provide a function of type @@ -19989,7 +19989,7 @@ \subsection{Vector resize function} \subsection{Pre inner integrator communication function} -\label{\detokenize{MRIStep_c_interface/User_supplied:pre-inner-integrator-communication-function}}\label{\detokenize{MRIStep_c_interface/User_supplied:mristep-cinterface-preinnerfn}} +\label{\detokenize{MRIStep_c_interface/User_supplied:mristep-cinterface-preinnerfn}}\label{\detokenize{MRIStep_c_interface/User_supplied:pre-inner-integrator-communication-function}} The user may supply a function of type {\hyperref[\detokenize{MRIStep_c_interface/User_supplied:c.MRIStepPreInnerFn}]{\sphinxcrossref{\sphinxcode{MRIStepPreInnerFn}}}} that will be called \sphinxstyleemphasis{before} each inner integration to perform any communication or memory transfers of forcing data supplied by the the outer integrator to inner @@ -20031,7 +20031,7 @@ \subsection{Pre inner integrator communication function} \subsection{Post inner integrator communication function} -\label{\detokenize{MRIStep_c_interface/User_supplied:mristep-cinterface-postinnerfn}}\label{\detokenize{MRIStep_c_interface/User_supplied:post-inner-integrator-communication-function}} +\label{\detokenize{MRIStep_c_interface/User_supplied:post-inner-integrator-communication-function}}\label{\detokenize{MRIStep_c_interface/User_supplied:mristep-cinterface-postinnerfn}} The user may supply a function of type {\hyperref[\detokenize{MRIStep_c_interface/User_supplied:c.MRIStepPostInnerFn}]{\sphinxcrossref{\sphinxcode{MRIStepPostInnerFn}}}} that will be called \sphinxstyleemphasis{after} each inner integration to perform any communication or memory transfers of state data supplied by the inner integrator to the @@ -20111,7 +20111,7 @@ \section{ARKode Fortran 2003 Interface Modules} \subsection{SUNDIALS Fortran 2003 Interface Modules} -\label{\detokenize{ARKode_f_interface/F2003Module:sundials-fortran-2003-interface-modules}}\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-sundialsmodules}} +\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-sundialsmodules}}\label{\detokenize{ARKode_f_interface/F2003Module:sundials-fortran-2003-interface-modules}} All of the generic SUNDIALS modules provide Fortran 2003 interface modules. Many of the generic module implementations provide Fortran 2003 interfaces (a complete list of modules with Fortran 2003 interfaces is given in @@ -20141,7 +20141,7 @@ \subsection{SUNDIALS Fortran 2003 Interface Modules} \subsubsection{Table: SUNDIALS Fortran 2003 Interface Modules} -\label{\detokenize{ARKode_f_interface/F2003Module:table-sundials-fortran-2003-interface-modules}}\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-interfacestable}} +\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-interfacestable}}\label{\detokenize{ARKode_f_interface/F2003Module:table-sundials-fortran-2003-interface-modules}} \begin{savenotes}\sphinxatlongtablestart\begin{longtable}{|l|l|} \hline @@ -20334,7 +20334,7 @@ \subsubsection{Table: SUNDIALS Fortran 2003 Interface Modules} \subsection{Data Types} -\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-datatypes}}\label{\detokenize{ARKode_f_interface/F2003Module:data-types}} +\label{\detokenize{ARKode_f_interface/F2003Module:data-types}}\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-datatypes}} Generally, the Fortran 2003 type that is equivalent to the C type is what one would expect. Primitive types map to the \sphinxcode{iso\_c\_binding} type equivalent. SUNDIALS generic types map to a Fortran derived type. However, the handling @@ -20347,7 +20347,7 @@ \subsection{Data Types} \subsubsection{Table: C/Fortran-2003 Equivalent Types} -\label{\detokenize{ARKode_f_interface/F2003Module:table-c-fortran-2003-equivalent-types}}\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-datatypestable}} +\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-datatypestable}}\label{\detokenize{ARKode_f_interface/F2003Module:table-c-fortran-2003-equivalent-types}} \begin{savenotes}\sphinxatlongtablestart\begin{longtable}{|l|l|l|} \hline @@ -20601,7 +20601,7 @@ \subsubsection{Table: C/Fortran-2003 Equivalent Types} \subsection{Notable Fortran/C usage differences} -\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-differences}}\label{\detokenize{ARKode_f_interface/F2003Module:notable-fortran-c-usage-differences}} +\label{\detokenize{ARKode_f_interface/F2003Module:notable-fortran-c-usage-differences}}\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-differences}} While the Fortran 2003 interface to SUNDIALS closely follows the C API, some differences are inevitable due to the differences between Fortran and C. In this section, we note the most critical differences. Additionally, section @@ -20639,7 +20639,7 @@ \subsubsection{Creating generic SUNDIALS objects} \subsubsection{Arrays and pointers} -\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-differences-arraysandpointers}}\label{\detokenize{ARKode_f_interface/F2003Module:arrays-and-pointers}} +\label{\detokenize{ARKode_f_interface/F2003Module:arrays-and-pointers}}\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-differences-arraysandpointers}} Unlike in the C API, in the Fortran 2003 interface, arrays and pointers are treated differently when they are return values versus arguments to a function. Additionally, pointers which are meant to be out parameters, not arrays, @@ -20691,7 +20691,7 @@ \subsubsection{Arrays and pointers} \subsubsection{Passing procedure pointers and user data} -\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-differences-procedurepointers}}\label{\detokenize{ARKode_f_interface/F2003Module:passing-procedure-pointers-and-user-data}} +\label{\detokenize{ARKode_f_interface/F2003Module:passing-procedure-pointers-and-user-data}}\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-differences-procedurepointers}} Since functions/subroutines passed to SUNDIALS will be called from within C code, the Fortran procedure must have the attribute \sphinxcode{bind(C)} Additionally, when providing them as arguments to a Fortran 2003 interface @@ -20731,7 +20731,7 @@ \subsubsection{Passing procedure pointers and user data} \subsubsection{Passing NULL to optional parameters} -\label{\detokenize{ARKode_f_interface/F2003Module:passing-null-to-optional-parameters}}\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-differences-optionalparameters}} +\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-differences-optionalparameters}}\label{\detokenize{ARKode_f_interface/F2003Module:passing-null-to-optional-parameters}} In the SUNDIALS C API some functions have optional parameters that a caller can pass \sphinxcode{NULL} to. If the optional parameter is of a type that is equivalent to a Fortran \sphinxcode{type(c\_ptr)} (see section {\hyperref[\detokenize{ARKode_f_interface/F2003Module:fortran2003-datatypes}]{\sphinxcrossref{\DUrole{std,std-ref}{Data Types}}}}), @@ -20770,7 +20770,7 @@ \subsubsection{Passing NULL to optional parameters} \subsubsection{Working with \sphinxstyleliteralintitle{N\_Vector} arrays} -\label{\detokenize{ARKode_f_interface/F2003Module:working-with-n-vector-arrays}}\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-differences-nvectorarrays}} +\label{\detokenize{ARKode_f_interface/F2003Module:fortran2003-differences-nvectorarrays}}\label{\detokenize{ARKode_f_interface/F2003Module:working-with-n-vector-arrays}} Arrays of \sphinxcode{N\_Vector} objects are interfaced to Fortran 2003 as opaque \sphinxcode{type(c\_ptr)}. As such, it is not possible to directly index an array of \sphinxcode{N\_Vector} objects returned by the \sphinxcode{N\_Vector} “VectorArray” operations, or @@ -20883,7 +20883,7 @@ \subsection{Important notes on portability} \section{FARKODE, an Interface Module for FORTRAN Applications} -\label{\detokenize{ARKode_f_interface/FARKODE:farkode-an-interface-module-for-fortran-applications}}\label{\detokenize{ARKode_f_interface/FARKODE:fortraninterface}}\label{\detokenize{ARKode_f_interface/FARKODE::doc}} +\label{\detokenize{ARKode_f_interface/FARKODE::doc}}\label{\detokenize{ARKode_f_interface/FARKODE:fortraninterface}}\label{\detokenize{ARKode_f_interface/FARKODE:farkode-an-interface-module-for-fortran-applications}} The FARKODE interface module is a package of C functions which support the use of the ARKStep time-stepping module for the solution of ODE systems @@ -20901,7 +20901,7 @@ \section{FARKODE, an Interface Module for FORTRAN Applications} \subsection{Important note on portability} -\label{\detokenize{ARKode_f_interface/FARKODE:important-note-on-portability}}\label{\detokenize{ARKode_f_interface/FARKODE:finterface-portability}} +\label{\detokenize{ARKode_f_interface/FARKODE:finterface-portability}}\label{\detokenize{ARKode_f_interface/FARKODE:important-note-on-portability}} In this package, the names of the interface functions, and the names of the Fortran user routines called by them, appear as dummy names which are mapped to actual values by a series of definitions in the @@ -20925,7 +20925,7 @@ \subsection{Important note on portability} \subsection{Fortran Data Types} -\label{\detokenize{ARKode_f_interface/FARKODE:fortran-data-types}}\label{\detokenize{ARKode_f_interface/FARKODE:finterface-datatypes}} +\label{\detokenize{ARKode_f_interface/FARKODE:finterface-datatypes}}\label{\detokenize{ARKode_f_interface/FARKODE:fortran-data-types}} Throughout this documentation, we will refer to data types according to their usage in C. The equivalent types to these may vary, depending on your computer architecture and on how SUNDIALS was @@ -20999,7 +20999,7 @@ \subsection{Fortran Data Types} \subsubsection{FARKODE routines} -\label{\detokenize{ARKode_f_interface/Routines:finterface-routines}}\label{\detokenize{ARKode_f_interface/Routines::doc}}\label{\detokenize{ARKode_f_interface/Routines:farkode-routines}} +\label{\detokenize{ARKode_f_interface/Routines:farkode-routines}}\label{\detokenize{ARKode_f_interface/Routines::doc}}\label{\detokenize{ARKode_f_interface/Routines:finterface-routines}} In this section, we list the full set of user-callable functions comprising the FARKODE solver interface. For each function, we list the corresponding ARKStep functions, to provide a mapping between the @@ -21254,7 +21254,7 @@ \subsubsection{FARKODE routines} \paragraph{User-supplied routines} -\label{\detokenize{ARKode_f_interface/Routines:finterface-usersupplied}}\label{\detokenize{ARKode_f_interface/Routines:user-supplied-routines}} +\label{\detokenize{ARKode_f_interface/Routines:user-supplied-routines}}\label{\detokenize{ARKode_f_interface/Routines:finterface-usersupplied}} As with the native C interface, the FARKODE solver interface requires user-supplied functions to specify the ODE problem to be solved. In contrast to the case of direct use of ARKStep, and of most Fortran ODE @@ -21438,7 +21438,7 @@ \subsubsection{FARKODE routines} \subsubsection{Usage of the FARKODE interface module} -\label{\detokenize{ARKode_f_interface/Usage:finterface-usage}}\label{\detokenize{ARKode_f_interface/Usage::doc}}\label{\detokenize{ARKode_f_interface/Usage:usage-of-the-farkode-interface-module}} +\label{\detokenize{ARKode_f_interface/Usage:finterface-usage}}\label{\detokenize{ARKode_f_interface/Usage:usage-of-the-farkode-interface-module}}\label{\detokenize{ARKode_f_interface/Usage::doc}} The usage of FARKODE requires calls to a variety of interface functions, depending on the method options selected, and two or more user-supplied routines which define the problem to be solved. These @@ -21452,7 +21452,7 @@ \subsubsection{Usage of the FARKODE interface module} \paragraph{Right-hand side specification} -\label{\detokenize{ARKode_f_interface/Usage:right-hand-side-specification}}\label{\detokenize{ARKode_f_interface/Usage:finterface-rhs}} +\label{\detokenize{ARKode_f_interface/Usage:finterface-rhs}}\label{\detokenize{ARKode_f_interface/Usage:right-hand-side-specification}} The user must in all cases supply the following Fortran routines: \index{FARKIFUN() (fortran subroutine)|textbf} @@ -21688,7 +21688,7 @@ \subsubsection{Usage of the FARKODE interface module} \paragraph{SUNNONLINSOL module initialization} -\label{\detokenize{ARKode_f_interface/Usage:finterface-sunnonlinsol}}\label{\detokenize{ARKode_f_interface/Usage:sunnonlinsol-module-initialization}} +\label{\detokenize{ARKode_f_interface/Usage:sunnonlinsol-module-initialization}}\label{\detokenize{ARKode_f_interface/Usage:finterface-sunnonlinsol}} If using a non-default nonlinear solver method, the user must make a call of the form @@ -21715,7 +21715,7 @@ \subsubsection{Usage of the FARKODE interface module} \paragraph{Problem specification} -\label{\detokenize{ARKode_f_interface/Usage:problem-specification}}\label{\detokenize{ARKode_f_interface/Usage:finterface-problem}} +\label{\detokenize{ARKode_f_interface/Usage:finterface-problem}}\label{\detokenize{ARKode_f_interface/Usage:problem-specification}} To set various problem and solution parameters and allocate internal memory, the user must call {\hyperref[\detokenize{ARKode_f_interface/Usage:f/_/FARKMALLOC}]{\sphinxcrossref{\sphinxcode{FARKMALLOC()}}}}. \index{FARKMALLOC() (fortran subroutine)|textbf} @@ -21876,7 +21876,7 @@ \subsubsection{Usage of the FARKODE interface module} \paragraph{Table: Keys for setting FARKODE integer optional inputs} -\label{\detokenize{ARKode_f_interface/Usage:table-keys-for-setting-farkode-integer-optional-inputs}}\label{\detokenize{ARKode_f_interface/Usage:finterface-iinoptiontable}} +\label{\detokenize{ARKode_f_interface/Usage:finterface-iinoptiontable}}\label{\detokenize{ARKode_f_interface/Usage:table-keys-for-setting-farkode-integer-optional-inputs}} \begin{savenotes}\sphinxattablestart \centering @@ -22146,7 +22146,7 @@ \subsubsection{Usage of the FARKODE interface module} \paragraph{Table: Keys for setting FARKODE vector optional inputs} -\label{\detokenize{ARKode_f_interface/Usage:finterface-vinoptiontable}}\label{\detokenize{ARKode_f_interface/Usage:table-keys-for-setting-farkode-vector-optional-inputs}} +\label{\detokenize{ARKode_f_interface/Usage:table-keys-for-setting-farkode-vector-optional-inputs}}\label{\detokenize{ARKode_f_interface/Usage:finterface-vinoptiontable}} \begin{savenotes}\sphinxattablestart \centering @@ -22556,7 +22556,7 @@ \subsubsection{Usage of the FARKODE interface module} \paragraph{Nonlinear solver module specification} -\label{\detokenize{ARKode_f_interface/Usage:nonlinear-solver-module-specification}}\label{\detokenize{ARKode_f_interface/Usage:finterface-nonlinearsolver}} +\label{\detokenize{ARKode_f_interface/Usage:finterface-nonlinearsolver}}\label{\detokenize{ARKode_f_interface/Usage:nonlinear-solver-module-specification}} To use a non-default nonlinear solver algorithm, then after it has been initialized in step {\hyperref[\detokenize{ARKode_f_interface/Usage:finterface-sunnonlinsol}]{\sphinxcrossref{\DUrole{std,std-ref}{SUNNONLINSOL module initialization}}}} above, the user of FARKODE must attach it to ARKSTEP by calling the @@ -22925,7 +22925,7 @@ \subsubsection{Usage of the FARKODE interface module} \subparagraph{Iterative linear solvers} -\label{\detokenize{ARKode_f_interface/Usage:iterative-linear-solvers}}\label{\detokenize{ARKode_f_interface/Usage:finterface-iterative}} +\label{\detokenize{ARKode_f_interface/Usage:finterface-iterative}}\label{\detokenize{ARKode_f_interface/Usage:iterative-linear-solvers}} As described in the section {\hyperref[\detokenize{Mathematics:mathematics-error-linear}]{\sphinxcrossref{\DUrole{std,std-ref}{Linear iteration error control}}}}, a user may adjust the linear solver tolerance scaling factor \(\epsilon_L\). Fortran users may adjust this value by calling @@ -23296,7 +23296,7 @@ \subsubsection{Usage of the FARKODE interface module} \paragraph{Mass matrix linear solver interface specification} -\label{\detokenize{ARKode_f_interface/Usage:finterface-masslinearsolver}}\label{\detokenize{ARKode_f_interface/Usage:mass-matrix-linear-solver-interface-specification}} +\label{\detokenize{ARKode_f_interface/Usage:mass-matrix-linear-solver-interface-specification}}\label{\detokenize{ARKode_f_interface/Usage:finterface-masslinearsolver}} To attach the mass matrix linear solver (and optionally the mass matrix) object(s) initialized in steps {\hyperref[\detokenize{ARKode_f_interface/Usage:finterface-sunmatrix}]{\sphinxcrossref{\DUrole{std,std-ref}{SUNMATRIX module initialization}}}} and {\hyperref[\detokenize{ARKode_f_interface/Usage:finterface-sunlinsol}]{\sphinxcrossref{\DUrole{std,std-ref}{SUNLINSOL module initialization}}}} above, the user of FARKODE must @@ -24130,7 +24130,7 @@ \subsubsection{Usage of the FARKODE interface module} \paragraph{Memory deallocation} -\label{\detokenize{ARKode_f_interface/Usage:finterface-deallocation}}\label{\detokenize{ARKode_f_interface/Usage:memory-deallocation}} +\label{\detokenize{ARKode_f_interface/Usage:memory-deallocation}}\label{\detokenize{ARKode_f_interface/Usage:finterface-deallocation}} To free the internal memory created by {\hyperref[\detokenize{ARKode_f_interface/Usage:f/_/FARKMALLOC}]{\sphinxcrossref{\sphinxcode{FARKMALLOC()}}}}, {\hyperref[\detokenize{ARKode_f_interface/Usage:f/_/FARKLSINIT}]{\sphinxcrossref{\sphinxcode{FARKLSINIT()}}}}, {\hyperref[\detokenize{ARKode_f_interface/Usage:f/_/FARKLSMASSINIT}]{\sphinxcrossref{\sphinxcode{FARKLSMASSINIT()}}}}, and the SUNMATRIX, SUNLINSOL and SUNNONLINSOL objects, the user may call @@ -24148,7 +24148,7 @@ \subsubsection{Usage of the FARKODE interface module} \subsubsection{FARKODE optional output} -\label{\detokenize{ARKode_f_interface/Optional_output:finterface-optionaloutputs}}\label{\detokenize{ARKode_f_interface/Optional_output:farkode-optional-output}}\label{\detokenize{ARKode_f_interface/Optional_output::doc}} +\label{\detokenize{ARKode_f_interface/Optional_output::doc}}\label{\detokenize{ARKode_f_interface/Optional_output:farkode-optional-output}}\label{\detokenize{ARKode_f_interface/Optional_output:finterface-optionaloutputs}} We note that the optional inputs to FARKODE have already been described in the section {\hyperref[\detokenize{ARKode_f_interface/Usage:finterface-optionalinputs}]{\sphinxcrossref{\DUrole{std,std-ref}{Setting optional inputs}}}}. @@ -24180,7 +24180,7 @@ \subsubsection{FARKODE optional output} \paragraph{Table: Optional FARKODE integer outputs} -\label{\detokenize{ARKode_f_interface/Optional_output:table-optional-farkode-integer-outputs}}\label{\detokenize{ARKode_f_interface/Optional_output:finterface-iouttable}} +\label{\detokenize{ARKode_f_interface/Optional_output:finterface-iouttable}}\label{\detokenize{ARKode_f_interface/Optional_output:table-optional-farkode-integer-outputs}} \begin{savenotes}\sphinxattablestart \centering @@ -24291,7 +24291,7 @@ \subsubsection{FARKODE optional output} \paragraph{Table: Optional FARKODE real outputs} -\label{\detokenize{ARKode_f_interface/Optional_output:table-optional-farkode-real-outputs}}\label{\detokenize{ARKode_f_interface/Optional_output:finterface-routtable}} +\label{\detokenize{ARKode_f_interface/Optional_output:finterface-routtable}}\label{\detokenize{ARKode_f_interface/Optional_output:table-optional-farkode-real-outputs}} \begin{savenotes}\sphinxattablestart \centering @@ -24547,7 +24547,7 @@ \subsubsection{FARKODE optional output} \paragraph{Table: Optional ARKode constraints outputs} -\label{\detokenize{ARKode_f_interface/Optional_output:finterface-constriouttable}}\label{\detokenize{ARKode_f_interface/Optional_output:table-optional-arkode-constraints-outputs}} +\label{\detokenize{ARKode_f_interface/Optional_output:table-optional-arkode-constraints-outputs}}\label{\detokenize{ARKode_f_interface/Optional_output:finterface-constriouttable}} \begin{savenotes}\sphinxattablestart \centering @@ -24641,7 +24641,7 @@ \subsubsection{FARKODE optional output} \subsubsection{Usage of the FARKROOT interface to rootfinding} -\label{\detokenize{ARKode_f_interface/Rootfinding:usage-of-the-farkroot-interface-to-rootfinding}}\label{\detokenize{ARKode_f_interface/Rootfinding::doc}}\label{\detokenize{ARKode_f_interface/Rootfinding:finterface-rootfinding}} +\label{\detokenize{ARKode_f_interface/Rootfinding:finterface-rootfinding}}\label{\detokenize{ARKode_f_interface/Rootfinding:usage-of-the-farkroot-interface-to-rootfinding}}\label{\detokenize{ARKode_f_interface/Rootfinding::doc}} The FARKROOT interface package allows programs written in Fortran to use the rootfinding feature of the ARKStep solver module. The user-callable functions in FARKROOT, with the corresponding ARKStep @@ -24796,7 +24796,7 @@ \subsubsection{Usage of the FARKROOT interface to rootfinding} \subsubsection{Usage of the FARKODE interface to built-in preconditioners} -\label{\detokenize{ARKode_f_interface/Preconditioning:finterface-preconditioning}}\label{\detokenize{ARKode_f_interface/Preconditioning::doc}}\label{\detokenize{ARKode_f_interface/Preconditioning:usage-of-the-farkode-interface-to-built-in-preconditioners}} +\label{\detokenize{ARKode_f_interface/Preconditioning::doc}}\label{\detokenize{ARKode_f_interface/Preconditioning:finterface-preconditioning}}\label{\detokenize{ARKode_f_interface/Preconditioning:usage-of-the-farkode-interface-to-built-in-preconditioners}} The FARKODE interface enables usage of the two built-in preconditioning modules ARKBANDPRE and ARKBBDPRE. Details on how these preconditioners work are provided in the section @@ -24954,7 +24954,7 @@ \subsubsection{Usage of the FARKODE interface to built-in preconditioners} \paragraph{Usage of the FARKBBD interface to ARKBBDPRE} -\label{\detokenize{ARKode_f_interface/Preconditioning:usage-of-the-farkbbd-interface-to-arkbbdpre}}\label{\detokenize{ARKode_f_interface/Preconditioning:finterface-bbdpre}} +\label{\detokenize{ARKode_f_interface/Preconditioning:finterface-bbdpre}}\label{\detokenize{ARKode_f_interface/Preconditioning:usage-of-the-farkbbd-interface-to-arkbbdpre}} The FARKBBD interface module is a package of C functions which, as part of the FARKODE interface module, support the use of the ARKStep solver with the parallel vector module ({\hyperref[\detokenize{nvectors/NVector_Parallel:nvectors-nvparallel}]{\sphinxcrossref{\DUrole{std,std-ref}{The NVECTOR\_PARALLEL Module}}}}), @@ -25348,7 +25348,7 @@ \subsubsection{Usage of the FARKODE interface to built-in preconditioners} \chapter{Butcher Table Data Structure} -\label{\detokenize{ARKodeButcherTable:butcher-table-data-structure}}\label{\detokenize{ARKodeButcherTable::doc}}\label{\detokenize{ARKodeButcherTable:arkodebutchertable}} +\label{\detokenize{ARKodeButcherTable::doc}}\label{\detokenize{ARKodeButcherTable:arkodebutchertable}}\label{\detokenize{ARKodeButcherTable:butcher-table-data-structure}} To store the Butcher table defining a Runge Kutta method ARKode provides the {\hyperref[\detokenize{ARKodeButcherTable:c.ARKodeButcherTable}]{\sphinxcrossref{\sphinxcode{ARKodeButcherTable}}}} type and several related utilitiy routines. We use the following Butcher table notation (shown for a 3-stage method): @@ -25404,7 +25404,7 @@ \chapter{Butcher Table Data Structure} \section{ARKodeButcherTable functions} -\label{\detokenize{ARKodeButcherTable:arkodebutchertable-functions}}\label{\detokenize{ARKodeButcherTable:id1}} +\label{\detokenize{ARKodeButcherTable:id1}}\label{\detokenize{ARKodeButcherTable:arkodebutchertable-functions}} \begin{savenotes}\sphinxattablestart \centering @@ -25805,7 +25805,7 @@ \section{ARKodeButcherTable functions} \chapter{Vector Data Structures} -\label{\detokenize{nvectors/index:nvectors}}\label{\detokenize{nvectors/index::doc}}\label{\detokenize{nvectors/index:vector-data-structures}} +\label{\detokenize{nvectors/index:vector-data-structures}}\label{\detokenize{nvectors/index::doc}}\label{\detokenize{nvectors/index:nvectors}} 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 @@ -25826,7 +25826,7 @@ \chapter{Vector Data Structures} \section{Description of the NVECTOR Modules} -\label{\detokenize{nvectors/NVector_Description:description-of-the-nvector-modules}}\label{\detokenize{nvectors/NVector_Description:nvectors-description}}\label{\detokenize{nvectors/NVector_Description::doc}} +\label{\detokenize{nvectors/NVector_Description::doc}}\label{\detokenize{nvectors/NVector_Description:nvectors-description}}\label{\detokenize{nvectors/NVector_Description:description-of-the-nvector-modules}} The SUNDIALS solvers are written in a data-independent manner. They all operate on generic vectors (of type \sphinxcode{N\_Vector}) through a set of operations defined by, and specific to, the particular NVECTOR @@ -26001,7 +26001,7 @@ \subsection{NVECTOR Utility Functions} \subsection{Vector Identifications associated with vector kernels supplied with SUNDIALS} -\label{\detokenize{nvectors/NVector_Description:nvector-vectorids}}\label{\detokenize{nvectors/NVector_Description:vector-identifications-associated-with-vector-kernels-supplied-with-sundials}} +\label{\detokenize{nvectors/NVector_Description:vector-identifications-associated-with-vector-kernels-supplied-with-sundials}}\label{\detokenize{nvectors/NVector_Description:nvector-vectorids}} \begin{savenotes}\sphinxattablestart \centering @@ -26302,7 +26302,7 @@ \subsubsection{Support for complex-valued vectors} \section{Description of the NVECTOR operations} -\label{\detokenize{nvectors/NVector_Operations:nvectors-ops}}\label{\detokenize{nvectors/NVector_Operations::doc}}\label{\detokenize{nvectors/NVector_Operations:description-of-the-nvector-operations}} +\label{\detokenize{nvectors/NVector_Operations:description-of-the-nvector-operations}}\label{\detokenize{nvectors/NVector_Operations::doc}}\label{\detokenize{nvectors/NVector_Operations:nvectors-ops}} The standard vector operations defined by the generic \sphinxcode{N\_Vector} module are defined as follows. For each of these operations, we give the name, usage of the function, and a description of its mathematical @@ -26923,7 +26923,7 @@ \subsection{Description of the NVECTOR fused operations} \subsection{Description of the NVECTOR vector array operations} -\label{\detokenize{nvectors/NVector_Operations:description-of-the-nvector-vector-array-operations}}\label{\detokenize{nvectors/NVector_Operations:nvectors-arrayops}} +\label{\detokenize{nvectors/NVector_Operations:nvectors-arrayops}}\label{\detokenize{nvectors/NVector_Operations:description-of-the-nvector-vector-array-operations}} The following vector array operations are also \sphinxstyleemphasis{optional}. As with the fused vector operations, these are intended to increase data reuse, reduce parallel communication on distributed memory systems, and lower @@ -27319,7 +27319,7 @@ \subsection{Description of the NVECTOR local reduction operations} \section{The NVECTOR\_SERIAL Module} -\label{\detokenize{nvectors/NVector_Serial:the-nvector-serial-module}}\label{\detokenize{nvectors/NVector_Serial::doc}}\label{\detokenize{nvectors/NVector_Serial:nvectors-nvserial}} +\label{\detokenize{nvectors/NVector_Serial::doc}}\label{\detokenize{nvectors/NVector_Serial:the-nvector-serial-module}}\label{\detokenize{nvectors/NVector_Serial:nvectors-nvserial}} The serial implementation of the NVECTOR module provided with SUNDIALS, NVECTOR\_SERIAL, defines the \sphinxstyleemphasis{content} field of a \sphinxcode{N\_Vector} to be a structure containing the length of the vector, a @@ -27725,7 +27725,7 @@ \subsubsection{FORTRAN 77 interface functions} \section{The NVECTOR\_PARALLEL Module} -\label{\detokenize{nvectors/NVector_Parallel:nvectors-nvparallel}}\label{\detokenize{nvectors/NVector_Parallel:the-nvector-parallel-module}}\label{\detokenize{nvectors/NVector_Parallel::doc}} +\label{\detokenize{nvectors/NVector_Parallel:the-nvector-parallel-module}}\label{\detokenize{nvectors/NVector_Parallel::doc}}\label{\detokenize{nvectors/NVector_Parallel:nvectors-nvparallel}} The NVECTOR\_PARALLEL implementation of the NVECTOR module provided with SUNDIALS is based on MPI. It defines the \sphinxstyleemphasis{content} field of a \sphinxcode{N\_Vector} to be a structure containing the global and local lengths @@ -28161,7 +28161,7 @@ \subsection{NVECTOR\_PARALLEL Fortran Interfaces} \section{The NVECTOR\_OPENMP Module} -\label{\detokenize{nvectors/NVector_OpenMP:the-nvector-openmp-module}}\label{\detokenize{nvectors/NVector_OpenMP::doc}}\label{\detokenize{nvectors/NVector_OpenMP:nvectors-openmp}} +\label{\detokenize{nvectors/NVector_OpenMP::doc}}\label{\detokenize{nvectors/NVector_OpenMP:nvectors-openmp}}\label{\detokenize{nvectors/NVector_OpenMP:the-nvector-openmp-module}} In situations where a user has a multi-core processing unit capable of running multiple parallel threads with shared memory, SUNDIALS provides an implementation of NVECTOR using OpenMP, called NVECTOR\_OPENMP, and @@ -28598,7 +28598,7 @@ \subsubsection{FORTRAN 77 interface functions} \section{The NVECTOR\_PTHREADS Module} -\label{\detokenize{nvectors/NVector_Pthreads:nvectors-pthreads}}\label{\detokenize{nvectors/NVector_Pthreads::doc}}\label{\detokenize{nvectors/NVector_Pthreads:the-nvector-pthreads-module}} +\label{\detokenize{nvectors/NVector_Pthreads::doc}}\label{\detokenize{nvectors/NVector_Pthreads:the-nvector-pthreads-module}}\label{\detokenize{nvectors/NVector_Pthreads:nvectors-pthreads}} In situations where a user has a multi-core processing unit capable of running multiple parallel threads with shared memory, SUNDIALS provides an implementation of NVECTOR using OpenMP, called @@ -29031,7 +29031,7 @@ \subsubsection{FORTRAN 77 interface functions} \section{The NVECTOR\_PARHYP Module} -\label{\detokenize{nvectors/NVector_ParHyp:nvectors-parhyp}}\label{\detokenize{nvectors/NVector_ParHyp:the-nvector-parhyp-module}}\label{\detokenize{nvectors/NVector_ParHyp::doc}} +\label{\detokenize{nvectors/NVector_ParHyp:nvectors-parhyp}}\label{\detokenize{nvectors/NVector_ParHyp::doc}}\label{\detokenize{nvectors/NVector_ParHyp:the-nvector-parhyp-module}} The NVECTOR\_PARHYP implementation of the NVECTOR module provided with SUNDIALS is a wrapper around HYPRE’s ParVector class. Most of the vector kernels simply call HYPRE vector operations. @@ -29311,7 +29311,7 @@ \subsection{NVECTOR\_PARHYP functions} \section{The NVECTOR\_PETSC Module} -\label{\detokenize{nvectors/NVector_PETSc:nvectors-nvpetsc}}\label{\detokenize{nvectors/NVector_PETSc:the-nvector-petsc-module}}\label{\detokenize{nvectors/NVector_PETSc::doc}} +\label{\detokenize{nvectors/NVector_PETSc:the-nvector-petsc-module}}\label{\detokenize{nvectors/NVector_PETSc::doc}}\label{\detokenize{nvectors/NVector_PETSc:nvectors-nvpetsc}} The NVECTOR\_PETSC module is an NVECTOR wrapper around the PETSc vector. It defines the \sphinxstyleemphasis{content} field of a \sphinxcode{N\_Vector} to be a structure containing the global and local lengths of the vector, a pointer to @@ -29588,7 +29588,7 @@ \subsection{NVECTOR\_PETSC functions} \section{The NVECTOR\_CUDA Module} -\label{\detokenize{nvectors/NVector_CUDA:the-nvector-cuda-module}}\label{\detokenize{nvectors/NVector_CUDA:nvectors-cuda}}\label{\detokenize{nvectors/NVector_CUDA::doc}} +\label{\detokenize{nvectors/NVector_CUDA::doc}}\label{\detokenize{nvectors/NVector_CUDA:the-nvector-cuda-module}}\label{\detokenize{nvectors/NVector_CUDA:nvectors-cuda}} The NVECTOR\_CUDA module is an experimental NVECTOR implementation in the CUDA language. The module allows for SUNDIALS vector kernels to run on GPU devices. It is intended for users who are already familiar with CUDA and GPU programming. Building this vector @@ -29942,7 +29942,7 @@ \subsection{NVECTOR\_CUDA functions} \section{The NVECTOR\_RAJA Module} -\label{\detokenize{nvectors/NVector_RAJA:the-nvector-raja-module}}\label{\detokenize{nvectors/NVector_RAJA:nvectors-raja}}\label{\detokenize{nvectors/NVector_RAJA::doc}} +\label{\detokenize{nvectors/NVector_RAJA::doc}}\label{\detokenize{nvectors/NVector_RAJA:the-nvector-raja-module}}\label{\detokenize{nvectors/NVector_RAJA:nvectors-raja}} The NVECTOR\_RAJA module is an experimental \{nvector\} implementation using the \sphinxhref{https://software.llnl.gov/RAJA/}{RAJA} hardware abstraction layer. In this implementation, RAJA @@ -30211,7 +30211,7 @@ \subsection{NVECTOR\_RAJA functions} \section{The NVECTOR\_OPENMPDEV Module} -\label{\detokenize{nvectors/NVector_OpenMPDEV:the-nvector-openmpdev-module}}\label{\detokenize{nvectors/NVector_OpenMPDEV::doc}}\label{\detokenize{nvectors/NVector_OpenMPDEV:nvectors-openmpdev}} +\label{\detokenize{nvectors/NVector_OpenMPDEV::doc}}\label{\detokenize{nvectors/NVector_OpenMPDEV:nvectors-openmpdev}}\label{\detokenize{nvectors/NVector_OpenMPDEV:the-nvector-openmpdev-module}} In situations where a user has access to a device such as a GPU for offloading computation, SUNDIALS provides an NVECTOR implementation using OpenMP device offloading, called NVECTOR\_OPENMPDEV. @@ -30612,7 +30612,7 @@ \subsection{NVECTOR\_OPENMPDEV functions} \section{The NVECTOR\_TRILINOS Module} -\label{\detokenize{nvectors/NVector_Trilinos:the-nvector-trilinos-module}}\label{\detokenize{nvectors/NVector_Trilinos::doc}}\label{\detokenize{nvectors/NVector_Trilinos:nvectors-nvtrilinos}} +\label{\detokenize{nvectors/NVector_Trilinos:nvectors-nvtrilinos}}\label{\detokenize{nvectors/NVector_Trilinos::doc}}\label{\detokenize{nvectors/NVector_Trilinos:the-nvector-trilinos-module}} The NVECTOR\_TRILINOS module is an NVECTOR wrapper around the Trilinos \sphinxhref{https://github.com/trilinos/Trilinos}{Tpetra} vector. The interface to Tpetra is implemented in the \sphinxcode{Sundials::TpetraVectorInterface} @@ -30730,7 +30730,7 @@ \subsection{NVECTOR\_TRILINOS functions} \section{The NVECTOR\_MANYVECTOR Module} -\label{\detokenize{nvectors/NVector_ManyVector:nvectors-manyvector}}\label{\detokenize{nvectors/NVector_ManyVector:the-nvector-manyvector-module}}\label{\detokenize{nvectors/NVector_ManyVector::doc}} +\label{\detokenize{nvectors/NVector_ManyVector:the-nvector-manyvector-module}}\label{\detokenize{nvectors/NVector_ManyVector::doc}}\label{\detokenize{nvectors/NVector_ManyVector:nvectors-manyvector}} The NVECTOR\_MANYVECTOR implementation of the NVECTOR module provided with SUNDIALS is designed to facilitate problems with an inherent data partitioning for the solution vector within a computational node. @@ -31033,7 +31033,7 @@ \subsection{NVECTOR\_MANYVECTOR functions} \section{The NVECTOR\_MPIMANYVECTOR Module} -\label{\detokenize{nvectors/NVector_MPIManyVector:nvectors-mpimanyvector}}\label{\detokenize{nvectors/NVector_MPIManyVector::doc}}\label{\detokenize{nvectors/NVector_MPIManyVector:the-nvector-mpimanyvector-module}} +\label{\detokenize{nvectors/NVector_MPIManyVector:the-nvector-mpimanyvector-module}}\label{\detokenize{nvectors/NVector_MPIManyVector:nvectors-mpimanyvector}}\label{\detokenize{nvectors/NVector_MPIManyVector::doc}} The NVECTOR\_MPIMANYVECTOR implementation of the NVECTOR module provided with SUNDIALS is designed to facilitate problems with an inherent data partitioning for the solution vector, and when using @@ -31104,7 +31104,7 @@ \section{The NVECTOR\_MPIMANYVECTOR Module} \subsection{NVECTOR\_MPIMANYVECTOR structure} -\label{\detokenize{nvectors/NVector_MPIManyVector:nvectors-mpimanyvector-structure}}\label{\detokenize{nvectors/NVector_MPIManyVector:nvector-mpimanyvector-structure}} +\label{\detokenize{nvectors/NVector_MPIManyVector:nvector-mpimanyvector-structure}}\label{\detokenize{nvectors/NVector_MPIManyVector:nvectors-mpimanyvector-structure}} The NVECTOR\_MPIMANYVECTOR implementation defines the \sphinxstyleemphasis{content} field of \sphinxcode{N\_Vector} to be a structure containing the MPI communicator (or \sphinxcode{MPI\_COMM\_NULL} if running on a single-node), the number of @@ -31402,7 +31402,7 @@ \subsection{NVECTOR\_MPIMANYVECTOR functions} \section{The NVECTOR\_MPIPLUSX Module} -\label{\detokenize{nvectors/NVector_MPIPlusX:the-nvector-mpiplusx-module}}\label{\detokenize{nvectors/NVector_MPIPlusX:nvectors-mpiplusx}}\label{\detokenize{nvectors/NVector_MPIPlusX::doc}} +\label{\detokenize{nvectors/NVector_MPIPlusX::doc}}\label{\detokenize{nvectors/NVector_MPIPlusX:nvectors-mpiplusx}}\label{\detokenize{nvectors/NVector_MPIPlusX:the-nvector-mpiplusx-module}} The NVECTOR\_MPIPLUSX implementation of the NVECTOR module provided with SUNDIALS is designed to facilitate the MPI+X paradigm, where X is some form of on-node (local) parallelism (e.g. OpenMP, CUDA). @@ -31529,7 +31529,7 @@ \subsection{NVECTOR\_MPIPLUSX functions} \section{NVECTOR Examples} -\label{\detokenize{nvectors/NVector_Examples:nvector-examples}}\label{\detokenize{nvectors/NVector_Examples::doc}}\label{\detokenize{nvectors/NVector_Examples:nvectors-examples}} +\label{\detokenize{nvectors/NVector_Examples:nvectors-examples}}\label{\detokenize{nvectors/NVector_Examples::doc}}\label{\detokenize{nvectors/NVector_Examples:nvector-examples}} There are NVECTOR examples that may be installed for each implementation: serial, parallel, OpenMP, and Pthreads. Each implementation makes use of the functions in \sphinxcode{test\_nvector.c}. @@ -31846,7 +31846,7 @@ \section{NVECTOR Examples} \section{NVECTOR functions required by ARKode} -\label{\detokenize{nvectors/ARKode_requirements::doc}}\label{\detokenize{nvectors/ARKode_requirements:nvector-functions-required-by-arkode}}\label{\detokenize{nvectors/ARKode_requirements:nvectors-arkode}} +\label{\detokenize{nvectors/ARKode_requirements:nvector-functions-required-by-arkode}}\label{\detokenize{nvectors/ARKode_requirements::doc}}\label{\detokenize{nvectors/ARKode_requirements:nvectors-arkode}} In the table below, we list the vector functions in the \sphinxcode{N\_Vector} module that are called within the ARKode package. The table also shows, for each function, which ARKode module uses the function. @@ -32108,7 +32108,7 @@ \section{NVECTOR functions required by ARKode} \chapter{Matrix Data Structures} -\label{\detokenize{sunmatrix/index:sunmatrix}}\label{\detokenize{sunmatrix/index::doc}}\label{\detokenize{sunmatrix/index:matrix-data-structures}} +\label{\detokenize{sunmatrix/index:matrix-data-structures}}\label{\detokenize{sunmatrix/index::doc}}\label{\detokenize{sunmatrix/index:sunmatrix}} The SUNDIALS library comes packaged with a variety of \sphinxcode{SUNMatrix} implementations, designed for simulations requiring direct linear solvers for problems in serial or shared-memory parallel @@ -32123,7 +32123,7 @@ \chapter{Matrix Data Structures} \section{Description of the SUNMATRIX Modules} -\label{\detokenize{sunmatrix/SUNMatrix_Description:sunmatrix-description}}\label{\detokenize{sunmatrix/SUNMatrix_Description::doc}}\label{\detokenize{sunmatrix/SUNMatrix_Description:description-of-the-sunmatrix-modules}} +\label{\detokenize{sunmatrix/SUNMatrix_Description:description-of-the-sunmatrix-modules}}\label{\detokenize{sunmatrix/SUNMatrix_Description::doc}}\label{\detokenize{sunmatrix/SUNMatrix_Description:sunmatrix-description}} For problems that involve direct methods for solving linear systems, the SUNDIALS solvers not only operate on generic vectors, but also on generic matrices (of type \sphinxcode{SUNMatrix}), through a set of @@ -32302,7 +32302,7 @@ \section{Description of the SUNMATRIX Modules} \subsection{Identifiers associated with matrix kernels supplied with SUNDIALS} -\label{\detokenize{sunmatrix/SUNMatrix_Description:sunmatrix-matrixids}}\label{\detokenize{sunmatrix/SUNMatrix_Description:identifiers-associated-with-matrix-kernels-supplied-with-sundials}} +\label{\detokenize{sunmatrix/SUNMatrix_Description:identifiers-associated-with-matrix-kernels-supplied-with-sundials}}\label{\detokenize{sunmatrix/SUNMatrix_Description:sunmatrix-matrixids}} \begin{savenotes}\sphinxattablestart \centering @@ -32357,7 +32357,7 @@ \subsection{Identifiers associated with matrix kernels supplied with SUNDIALS} \section{Description of the SUNMATRIX operations} -\label{\detokenize{sunmatrix/SUNMatrix_Operations:description-of-the-sunmatrix-operations}}\label{\detokenize{sunmatrix/SUNMatrix_Operations:sunmatrix-ops}}\label{\detokenize{sunmatrix/SUNMatrix_Operations::doc}} +\label{\detokenize{sunmatrix/SUNMatrix_Operations:description-of-the-sunmatrix-operations}}\label{\detokenize{sunmatrix/SUNMatrix_Operations::doc}}\label{\detokenize{sunmatrix/SUNMatrix_Operations:sunmatrix-ops}} For each of the \sphinxcode{SUNMatrix} operations, we give the name, usage of the function, and a description of its mathematical operations below. @@ -32550,7 +32550,7 @@ \section{Description of the SUNMATRIX operations} \subsection{SUNMatrix return codes} -\label{\detokenize{sunmatrix/SUNMatrix_Operations:sunmatrix-ops-errorcodes}}\label{\detokenize{sunmatrix/SUNMatrix_Operations:sunmatrix-return-codes}} +\label{\detokenize{sunmatrix/SUNMatrix_Operations:sunmatrix-return-codes}}\label{\detokenize{sunmatrix/SUNMatrix_Operations:sunmatrix-ops-errorcodes}} The functions provided to SUNMatrix modules within the SUNDIALS-provided SUNMatrix implementations utilize a common set of return codes, listed below. These adhere to a common pattern: 0 indicates success, a negative value indicates a failure. Aside from this pattern, the actual values of each error code are primarily to provide additional information to the user in case of a SUNMatrix failure. @@ -32693,7 +32693,7 @@ \subsection{SUNDIALS matrix interfaces and vector implementations that can be us \section{The SUNMATRIX\_DENSE Module} -\label{\detokenize{sunmatrix/SUNMatrix_Dense:the-sunmatrix-dense-module}}\label{\detokenize{sunmatrix/SUNMatrix_Dense:sunmatrix-dense}}\label{\detokenize{sunmatrix/SUNMatrix_Dense::doc}} +\label{\detokenize{sunmatrix/SUNMatrix_Dense:sunmatrix-dense}}\label{\detokenize{sunmatrix/SUNMatrix_Dense:the-sunmatrix-dense-module}}\label{\detokenize{sunmatrix/SUNMatrix_Dense::doc}} The dense implementation of the \sphinxcode{SUNMatrix} module provided with SUNDIALS, SUNMATRIX\_DENSE, defines the \sphinxstyleemphasis{content} field of \sphinxcode{SUNMatrix} to be the following structure: @@ -33669,7 +33669,7 @@ \section{The SUNMATRIX\_BAND Module} \section{The SUNMATRIX\_CUSPARSE Module} -\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:sunmatrix-cusparse}}\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:the-sunmatrix-cusparse-module}}\label{\detokenize{sunmatrix/SUNMatrix_cuSparse::doc}} +\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:the-sunmatrix-cusparse-module}}\label{\detokenize{sunmatrix/SUNMatrix_cuSparse::doc}}\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:sunmatrix-cusparse}} The SUNMATRIX\_CUSPARSE implementation of the \sphinxcode{SUNMatrix} module provided with SUNDIALS, is an interface to the NVIDIA cuSPARSE matrix for use on NVIDIA GPUs (\phantomsection\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:id1}}{\hyperref[\detokenize{References:cusparse}]{\sphinxcrossref{{[}cuSPARSE{]}}}}). All data stored by this matrix implementation resides on the GPU at all times. @@ -33680,7 +33680,7 @@ \section{The SUNMATRIX\_CUSPARSE Module} \subsection{SUNMATRIX\_CUSPARSE Description} -\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:sunmatrix-cusparse-description}}\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:id2}} +\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:id2}}\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:sunmatrix-cusparse-description}} The implementation currently supports the cuSPARSE CSR matrix format described in the cuSPARSE documentation as well as a unique low-storage format for block-diagonal matrices of the form @@ -33705,7 +33705,7 @@ \subsection{SUNMATRIX\_CUSPARSE Description} \subsection{SUNMATRIX\_CUSPARSE Functions} -\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:sunmatrix-cusparse-functions}}\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:id3}} +\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:id3}}\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:sunmatrix-cusparse-functions}} The SUNMATRIX\_CUSPARSE module defines GPU-enabled sparse implementations of all matrix operations listed in the section {\hyperref[\detokenize{sunmatrix/SUNMatrix_Operations:sunmatrix-ops}]{\sphinxcrossref{\DUrole{std,std-ref}{Description of the SUNMATRIX operations}}}} except for the \sphinxcode{SUNMatSpace} and \sphinxcode{SUNMatMatvecSetup} operations: @@ -33962,7 +33962,7 @@ \subsection{SUNMATRIX\_CUSPARSE Functions} \subsection{SUNMATRIX\_CUSPARSE Usage Notes} -\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:sunmatrix-cusparse-notes}}\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:sunmatrix-cusparse-usage-notes}} +\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:sunmatrix-cusparse-usage-notes}}\label{\detokenize{sunmatrix/SUNMatrix_cuSparse:sunmatrix-cusparse-notes}} The SUNMATRIX\_CUSPARSE module only supports 32-bit indexing, thus SUNDIALS must be built for 32-bit indexing to use this module. @@ -33977,7 +33977,7 @@ \subsection{SUNMATRIX\_CUSPARSE Usage Notes} \section{The SUNMATRIX\_SPARSE Module} -\label{\detokenize{sunmatrix/SUNMatrix_Sparse:sunmatrix-sparse}}\label{\detokenize{sunmatrix/SUNMatrix_Sparse::doc}}\label{\detokenize{sunmatrix/SUNMatrix_Sparse:the-sunmatrix-sparse-module}} +\label{\detokenize{sunmatrix/SUNMatrix_Sparse:the-sunmatrix-sparse-module}}\label{\detokenize{sunmatrix/SUNMatrix_Sparse::doc}}\label{\detokenize{sunmatrix/SUNMatrix_Sparse:sunmatrix-sparse}} The sparse implementation of the \sphinxcode{SUNMatrix} module provided with SUNDIALS, SUNMATRIX\_SPARSE, is designed to work with either \sphinxstyleemphasis{compressed-sparse-column} (CSC) or \sphinxstyleemphasis{compressed-sparse-row} @@ -34587,7 +34587,7 @@ \section{The SUNMATRIX\_SPARSE Module} \section{The SUNMATRIX\_SLUNRLOC Module} -\label{\detokenize{sunmatrix/SUNMatrix_SLUNRloc:sunmatrix-slunrloc}}\label{\detokenize{sunmatrix/SUNMatrix_SLUNRloc:the-sunmatrix-slunrloc-module}}\label{\detokenize{sunmatrix/SUNMatrix_SLUNRloc::doc}} +\label{\detokenize{sunmatrix/SUNMatrix_SLUNRloc::doc}}\label{\detokenize{sunmatrix/SUNMatrix_SLUNRloc:sunmatrix-slunrloc}}\label{\detokenize{sunmatrix/SUNMatrix_SLUNRloc:the-sunmatrix-slunrloc-module}} The SUNMATRIX\_SLUNRLOC implementation of the SUNMatrix module provided with SUNDIALS is an adapter for the \sphinxcode{SuperMatrix} structure provided by the SuperLU\_DIST sparse matrix factorization and solver library written @@ -34646,7 +34646,7 @@ \section{The SUNMATRIX\_SLUNRLOC Module} \subsection{SUNMATRIX\_SLUNRLOC Functions} -\label{\detokenize{sunmatrix/SUNMatrix_SLUNRloc:sunmatrix-slunrloc-functions}}\label{\detokenize{sunmatrix/SUNMatrix_SLUNRloc:id5}} +\label{\detokenize{sunmatrix/SUNMatrix_SLUNRloc:id5}}\label{\detokenize{sunmatrix/SUNMatrix_SLUNRloc:sunmatrix-slunrloc-functions}} The SUNMATRIX\_SLUNRLOC module provides the following user-callable routines: \index{SUNMatrix\_SLUNRloc (C function)} @@ -34743,7 +34743,7 @@ \subsection{SUNMATRIX\_SLUNRLOC Functions} \section{SUNMATRIX Examples} -\label{\detokenize{sunmatrix/SUNMatrix_Examples::doc}}\label{\detokenize{sunmatrix/SUNMatrix_Examples:sunmatrix-examples}}\label{\detokenize{sunmatrix/SUNMatrix_Examples:id1}} +\label{\detokenize{sunmatrix/SUNMatrix_Examples:sunmatrix-examples}}\label{\detokenize{sunmatrix/SUNMatrix_Examples::doc}}\label{\detokenize{sunmatrix/SUNMatrix_Examples:id1}} There are \sphinxcode{SUNMatrix} examples that may be installed for each implementation: dense, banded, and sparse. Each implementation makes use of the functions in \sphinxcode{test\_sunmatrix.c}. @@ -34808,7 +34808,7 @@ \section{SUNMATRIX Examples} \section{SUNMATRIX functions required by ARKode} -\label{\detokenize{sunmatrix/ARKode_requirements:sunmatrix-arkode}}\label{\detokenize{sunmatrix/ARKode_requirements:sunmatrix-functions-required-by-arkode}}\label{\detokenize{sunmatrix/ARKode_requirements::doc}} +\label{\detokenize{sunmatrix/ARKode_requirements:sunmatrix-functions-required-by-arkode}}\label{\detokenize{sunmatrix/ARKode_requirements::doc}}\label{\detokenize{sunmatrix/ARKode_requirements:sunmatrix-arkode}} In Table {\hyperref[\detokenize{sunmatrix/ARKode_requirements:sunmatrix-arkode-use}]{\sphinxcrossref{\DUrole{std,std-ref}{List of matrix functions usage by ARKode code modules}}}}, we list the matrix functions in the \sphinxcode{SUNMatrix} module used within the ARKode package. The table also shows, for each function, which of the code modules uses the @@ -34828,7 +34828,7 @@ \section{SUNMATRIX functions required by ARKode} \subsection{List of matrix functions usage by ARKode code modules} -\label{\detokenize{sunmatrix/ARKode_requirements:list-of-matrix-functions-usage-by-arkode-code-modules}}\label{\detokenize{sunmatrix/ARKode_requirements:sunmatrix-arkode-use}} +\label{\detokenize{sunmatrix/ARKode_requirements:sunmatrix-arkode-use}}\label{\detokenize{sunmatrix/ARKode_requirements:list-of-matrix-functions-usage-by-arkode-code-modules}} \begin{savenotes}\sphinxattablestart \centering @@ -34938,7 +34938,7 @@ \subsection{List of matrix functions usage by ARKode code modules} \chapter{Description of the SUNLinearSolver module} -\label{\detokenize{sunlinsol/index::doc}}\label{\detokenize{sunlinsol/index:sunlinsol}}\label{\detokenize{sunlinsol/index:description-of-the-sunlinearsolver-module}} +\label{\detokenize{sunlinsol/index:description-of-the-sunlinearsolver-module}}\label{\detokenize{sunlinsol/index::doc}}\label{\detokenize{sunlinsol/index:sunlinsol}} For problems that require the solution of linear systems of equations, the SUNDIALS packages operate using generic linear solver modules defined through the SUNLinSol API. This allows SUNDIALS @@ -35063,7 +35063,7 @@ \section{The SUNLinearSolver API} \subsection{SUNLinearSolver core functions} -\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-corefn}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinearsolver-core-functions}} +\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinearsolver-core-functions}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-corefn}} The core linear solver functions consist of two required functions to get the linear solver type ({\hyperref[\detokenize{sunlinsol/SUNLinSol_API:c.SUNLinSolGetType}]{\sphinxcrossref{\sphinxcode{SUNLinSolGetType()}}}}) and solve the linear system \(Ax=b\) ({\hyperref[\detokenize{sunlinsol/SUNLinSol_API:c.SUNLinSolSolve}]{\sphinxcrossref{\sphinxcode{SUNLinSolSolve()}}}}). The remaining functions are for @@ -35256,7 +35256,7 @@ \subsection{SUNLinearSolver core functions} \subsection{SUNLinearSolver set functions} -\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-setfn}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinearsolver-set-functions}} +\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinearsolver-set-functions}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-setfn}} The following set functions are used to supply linear solver modules with functions defined by the SUNDIALS packages and to modify solver parameters. Only the routine for setting the matrix-vector product @@ -35340,7 +35340,7 @@ \subsection{SUNLinearSolver set functions} \subsection{SUNLinearSolver get functions} -\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinearsolver-get-functions}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-getfn}} +\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-getfn}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinearsolver-get-functions}} The following get functions allow SUNDIALS packages to retrieve results from a linear solve. All routines are optional. \index{SUNLinSolNumIters (C function)} @@ -35444,7 +35444,7 @@ \subsection{SUNLinearSolver get functions} \subsection{Functions provided by SUNDIALS packages} -\label{\detokenize{sunlinsol/SUNLinSol_API:functions-provided-by-sundials-packages}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-sunsuppliedfn}} +\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-sunsuppliedfn}}\label{\detokenize{sunlinsol/SUNLinSol_API:functions-provided-by-sundials-packages}} To interface with SUNLinSol modules, the SUNDIALS packages supply a variety of routines for evaluating the matrix-vector product, and setting up and applying the preconditioniner. These package-provided @@ -35510,7 +35510,7 @@ \subsection{Functions provided by SUNDIALS packages} \subsection{SUNLinearSolver return codes} -\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinearsolver-return-codes}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-errorcodes}} +\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-errorcodes}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinearsolver-return-codes}} The functions provided to SUNLinSol modules by each SUNDIALS package, and functions within the SUNDIALS-provided SUNLinSol implementations utilize a common set of return codes, listed below. These adhere to a @@ -35645,7 +35645,7 @@ \subsection{The generic SUNLinearSolver module} \subsection{Compatibility of SUNLinearSolver modules} -\label{\detokenize{sunlinsol/SUNLinSol_API:compatibility-of-sunlinearsolver-modules}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-compatibility}} +\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-compatibility}}\label{\detokenize{sunlinsol/SUNLinSol_API:compatibility-of-sunlinearsolver-modules}} We note that not all \sphinxcode{SUNLinearSolver} types are compatible with all \sphinxcode{SUNMatrix} and \sphinxcode{N\_Vector} types provided with SUNDIALS. In Table {\hyperref[\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-linsol-matrix}]{\sphinxcrossref{\DUrole{std,std-ref}{Compatible SUNLinearSolver and SUNMatrix implementations}}}} we show the matrix-based linear solvers @@ -35656,7 +35656,7 @@ \subsection{Compatibility of SUNLinearSolver modules} \subsubsection{Compatible SUNLinearSolver and SUNMatrix implementations} -\label{\detokenize{sunlinsol/SUNLinSol_API:compatible-sunlinearsolver-and-sunmatrix-implementations}}\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-linsol-matrix}} +\label{\detokenize{sunlinsol/SUNLinSol_API:sunlinsol-linsol-matrix}}\label{\detokenize{sunlinsol/SUNLinSol_API:compatible-sunlinearsolver-and-sunmatrix-implementations}} \begin{savenotes}\sphinxattablestart \centering @@ -36081,7 +36081,7 @@ \section{ARKode SUNLinearSolver interface} \subsection{Lagged matrix information} -\label{\detokenize{sunlinsol/ARKode_requirements:lagged-matrix-information}}\label{\detokenize{sunlinsol/ARKode_requirements:sunlinsol-lagged-matrix}} +\label{\detokenize{sunlinsol/ARKode_requirements:sunlinsol-lagged-matrix}}\label{\detokenize{sunlinsol/ARKode_requirements:lagged-matrix-information}} If the SUNLinSol identifies as having type \sphinxcode{SUNLINEARSOLVER\_DIRECT} or \sphinxcode{SUNLINEARSOLVER\_MATRIX\_ITERATIVE}, then the SUNLinSol object solves a @@ -36164,7 +36164,7 @@ \subsection{Iterative linear solver tolerance} \section{The SUNLinSol\_Dense Module} -\label{\detokenize{sunlinsol/SUNLinSol_Dense:the-sunlinsol-dense-module}}\label{\detokenize{sunlinsol/SUNLinSol_Dense::doc}}\label{\detokenize{sunlinsol/SUNLinSol_Dense:sunlinsol-dense}} +\label{\detokenize{sunlinsol/SUNLinSol_Dense::doc}}\label{\detokenize{sunlinsol/SUNLinSol_Dense:the-sunlinsol-dense-module}}\label{\detokenize{sunlinsol/SUNLinSol_Dense:sunlinsol-dense}} The dense implementation of the \sphinxcode{SUNLinearSolver} module provided with SUNDIALS, SUNLinSol\_Dense, is designed to be used with the corresponding SUNMATRIX\_DENSE matrix type, and one of the serial or @@ -36348,7 +36348,7 @@ \subsection{SUNLinSol\_Dense Description} \section{The SUNLinSol\_Band Module} -\label{\detokenize{sunlinsol/SUNLinSol_Band:the-sunlinsol-band-module}}\label{\detokenize{sunlinsol/SUNLinSol_Band:sunlinsol-band}}\label{\detokenize{sunlinsol/SUNLinSol_Band::doc}} +\label{\detokenize{sunlinsol/SUNLinSol_Band:the-sunlinsol-band-module}}\label{\detokenize{sunlinsol/SUNLinSol_Band::doc}}\label{\detokenize{sunlinsol/SUNLinSol_Band:sunlinsol-band}} The band implementation of the \sphinxcode{SUNLinearSolver} module provided with SUNDIALS, SUNLinSol\_Band, is designed to be used with the corresponding SUNMATRIX\_BAND matrix type, and one of the serial or @@ -36458,7 +36458,7 @@ \subsection{SUNLinSol\_Band Usage} \subsection{SUNLinSol\_Band Description} -\label{\detokenize{sunlinsol/SUNLinSol_Band:sunlinsol-band-description}}\label{\detokenize{sunlinsol/SUNLinSol_Band:id2}} +\label{\detokenize{sunlinsol/SUNLinSol_Band:id2}}\label{\detokenize{sunlinsol/SUNLinSol_Band:sunlinsol-band-description}} The SUNLinSol\_Band module defines the \sphinxstyleemphasis{content} field of a \sphinxcode{SUNLinearSolver} to be the following structure: @@ -36651,7 +36651,7 @@ \subsection{SUNLinSol\_LapackDense Usage} \subsection{SUNLinSol\_LapackDense Description} -\label{\detokenize{sunlinsol/SUNLinSol_LapackDense:sunlinsol-lapackdense-description}}\label{\detokenize{sunlinsol/SUNLinSol_LapackDense:id2}} +\label{\detokenize{sunlinsol/SUNLinSol_LapackDense:id2}}\label{\detokenize{sunlinsol/SUNLinSol_LapackDense:sunlinsol-lapackdense-description}} The SUNLinSol\_LapackDense module defines the \sphinxstyleemphasis{content} field of a \sphinxcode{SUNLinearSolver} to be the following structure: @@ -36762,7 +36762,7 @@ \section{The SUNLinSol\_LapackBand Module} \subsection{SUNLinSol\_LapackBand Usage} -\label{\detokenize{sunlinsol/SUNLinSol_LapackBand:sunlinsol-lapackband-usage}}\label{\detokenize{sunlinsol/SUNLinSol_LapackBand:id1}} +\label{\detokenize{sunlinsol/SUNLinSol_LapackBand:id1}}\label{\detokenize{sunlinsol/SUNLinSol_LapackBand:sunlinsol-lapackband-usage}} The header file to be included when using this module is \sphinxcode{sunlinsol/sunlinsol\_lapackband.h}. The installed module library to link to is @@ -36866,7 +36866,7 @@ \subsection{SUNLinSol\_LapackBand Usage} \subsection{SUNLinSol\_LapackBand Description} -\label{\detokenize{sunlinsol/SUNLinSol_LapackBand:sunlinsol-lapackband-description}}\label{\detokenize{sunlinsol/SUNLinSol_LapackBand:id2}} +\label{\detokenize{sunlinsol/SUNLinSol_LapackBand:id2}}\label{\detokenize{sunlinsol/SUNLinSol_LapackBand:sunlinsol-lapackband-description}} SUNLinSol\_LapackBand module defines the \sphinxstyleemphasis{content} field of a \sphinxcode{SUNLinearSolver} to be the following structure: @@ -36974,7 +36974,7 @@ \subsection{SUNLinSol\_LapackBand Description} \section{The SUNLinSol\_KLU Module} -\label{\detokenize{sunlinsol/SUNLinSol_KLU::doc}}\label{\detokenize{sunlinsol/SUNLinSol_KLU:the-sunlinsol-klu-module}}\label{\detokenize{sunlinsol/SUNLinSol_KLU:sunlinsol-klu}} +\label{\detokenize{sunlinsol/SUNLinSol_KLU:the-sunlinsol-klu-module}}\label{\detokenize{sunlinsol/SUNLinSol_KLU::doc}}\label{\detokenize{sunlinsol/SUNLinSol_KLU:sunlinsol-klu}} The KLU implementation of the \sphinxcode{SUNLinearSolver} module provided with SUNDIALS, SUNLinSol\_KLU, is designed to be used with the corresponding SUNMATRIX\_SPARSE matrix type, and one of the serial or @@ -36983,7 +36983,7 @@ \section{The SUNLinSol\_KLU Module} \subsection{SUNLinSol\_KLU Usage} -\label{\detokenize{sunlinsol/SUNLinSol_KLU:id1}}\label{\detokenize{sunlinsol/SUNLinSol_KLU:sunlinsol-klu-usage}} +\label{\detokenize{sunlinsol/SUNLinSol_KLU:sunlinsol-klu-usage}}\label{\detokenize{sunlinsol/SUNLinSol_KLU:id1}} The header file to be included when using this module is \sphinxcode{sunlinsol/sunlinsol\_klu.h}. The installed module library to link to is \sphinxcode{libsundials\_sunlinsolklu} \sphinxstyleemphasis{.lib} @@ -37272,7 +37272,7 @@ \subsection{SUNLinSol\_KLU Usage} \subsection{SUNLinSol\_KLU Description} -\label{\detokenize{sunlinsol/SUNLinSol_KLU:id2}}\label{\detokenize{sunlinsol/SUNLinSol_KLU:sunlinsol-klu-description}} +\label{\detokenize{sunlinsol/SUNLinSol_KLU:sunlinsol-klu-description}}\label{\detokenize{sunlinsol/SUNLinSol_KLU:id2}} The SUNLinSol\_KLU module defines the \sphinxstyleemphasis{content} field of a \sphinxcode{SUNLinearSolver} to be the following structure: @@ -37428,7 +37428,7 @@ \subsection{SUNLinSol\_KLU Description} \section{The SUNLinSol\_SuperLUDIST Module} -\label{\detokenize{sunlinsol/SUNLinSol_SuperLUDIST:the-sunlinsol-superludist-module}}\label{\detokenize{sunlinsol/SUNLinSol_SuperLUDIST::doc}}\label{\detokenize{sunlinsol/SUNLinSol_SuperLUDIST:sunlinsol-superludist}} +\label{\detokenize{sunlinsol/SUNLinSol_SuperLUDIST::doc}}\label{\detokenize{sunlinsol/SUNLinSol_SuperLUDIST:sunlinsol-superludist}}\label{\detokenize{sunlinsol/SUNLinSol_SuperLUDIST:the-sunlinsol-superludist-module}} The SuperLU\_DIST implementation of the SUNLinearSolver module provided with SUNDIALS, SUNLinsol\_SuperLUDIST, is designed to be used with the SUNMatrix\_SLUNRloc SUNMatrix, and one of the serial, threaded or parallel N\_Vector implementations (NVECTOR\_SERIAL, @@ -37711,7 +37711,7 @@ \section{The SUNLinSol\_SuperLUMT Module} \subsection{SUNLinSol\_SuperLUMT Usage} -\label{\detokenize{sunlinsol/SUNLinSol_SuperLUMT:sunlinsol-superlumt-usage}}\label{\detokenize{sunlinsol/SUNLinSol_SuperLUMT:id1}} +\label{\detokenize{sunlinsol/SUNLinSol_SuperLUMT:id1}}\label{\detokenize{sunlinsol/SUNLinSol_SuperLUMT:sunlinsol-superlumt-usage}} The header file to be included when using this module is \sphinxcode{sunlinsol/sunlinsol\_superlumt.h}. The installed module library to link to is \sphinxcode{libsundials\_sunlinsolsuperlumt} \sphinxstyleemphasis{.lib} @@ -38040,7 +38040,7 @@ \subsection{SUNLinSol\_SuperLUMT Description} \section{The SUNLinSol\_cuSolverSp\_batchQR Module} -\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:sunlinsol-cusolversp-batchqr}}\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp::doc}}\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:the-sunlinsol-cusolversp-batchqr-module}} +\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp::doc}}\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:the-sunlinsol-cusolversp-batchqr-module}}\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:sunlinsol-cusolversp-batchqr}} The \sphinxcode{SUNLinearSolver\_cuSolverSp\_batchQR} implementation of the SUNLinearSolver API is designed to be used with the SUNMATRIX\_CUSPARSE matrix, and the NVECTOR\_CUDA vector. The header file to include when using this module is @@ -38052,7 +38052,7 @@ \section{The SUNLinSol\_cuSolverSp\_batchQR Module} \subsection{SUNLinSol\_cuSolverSp\_batchQR description} -\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:sunlinsol-cusolversp-batchqr-description}}\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:id1}} +\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:id1}}\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:sunlinsol-cusolversp-batchqr-description}} The SUNLinearSolver\_cuSolverSp\_batchQR implementation provides an interface to the batched sparse QR factorization method provided by the NVIDIA cuSOLVER library (\phantomsection\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:id2}}{\hyperref[\detokenize{References:cusolver}]{\sphinxcrossref{{[}cuSOLVER{]}}}}). The module is designed for solving block diagonal linear systems of the form @@ -38160,7 +38160,7 @@ \subsection{SUNLinSol\_cuSolverSp\_batchQR functions} \subsection{SUNLinSol\_cuSolverSp\_batchQR content} -\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:sunlinsol-cusolversp-batchqr-content}}\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:id4}} +\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:id4}}\label{\detokenize{sunlinsol/SUNLinSol_cuSolverSp:sunlinsol-cusolversp-batchqr-content}} The SUNLinSol\_cuSolverSp\_batchQR module defines the \sphinxstyleemphasis{content} field of a \sphinxcode{SUNLinearSolver} to be the following structure: @@ -38180,7 +38180,7 @@ \subsection{SUNLinSol\_cuSolverSp\_batchQR content} \section{The SUNLinSol\_SPGMR Module} -\label{\detokenize{sunlinsol/SUNLinSol_SPGMR::doc}}\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:the-sunlinsol-spgmr-module}}\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:sunlinsol-spgmr}} +\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:sunlinsol-spgmr}}\label{\detokenize{sunlinsol/SUNLinSol_SPGMR::doc}}\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:the-sunlinsol-spgmr-module}} The SPGMR (Scaled, Preconditioned, Generalized Minimum Residual \phantomsection\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:id1}}{\hyperref[\detokenize{References:ss1986}]{\sphinxcrossref{{[}SS1986{]}}}}) implementation of the \sphinxcode{SUNLinearSolver} module provided with SUNDIALS, SUNLinSol\_SPGMR, is an iterative linear @@ -38193,7 +38193,7 @@ \section{The SUNLinSol\_SPGMR Module} \subsection{SUNLinSol\_SPGMR Usage} -\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:sunlinsol-spgmr-usage}}\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:id2}} +\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:id2}}\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:sunlinsol-spgmr-usage}} The header file to be included when using this module is \sphinxcode{sunlinsol/sunlinsol\_spgmr.h}. The SUNinSol\_SPGMR module is accessible from all SUNDIALS solvers \sphinxstyleemphasis{without} @@ -38470,7 +38470,7 @@ \subsection{SUNLinSol\_SPGMR Usage} \subsection{SUNLinSol\_SPGMR Description} -\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:id3}}\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:sunlinsol-spgmr-description}} +\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:sunlinsol-spgmr-description}}\label{\detokenize{sunlinsol/SUNLinSol_SPGMR:id3}} The SUNLinSol\_SPGMR module defines the \sphinxstyleemphasis{content} field of a \sphinxcode{SUNLinearSolver} to be the following structure: @@ -38677,7 +38677,7 @@ \subsection{SUNLinSol\_SPGMR Description} \section{The SUNLinSol\_SPFGMR Module} -\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:the-sunlinsol-spfgmr-module}}\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR::doc}}\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:sunlinsol-spfgmr}} +\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:sunlinsol-spfgmr}}\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR::doc}}\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:the-sunlinsol-spfgmr-module}} The SPFGMR (Scaled, Preconditioned, Flexible, Generalized Minimum Residual \phantomsection\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:id1}}{\hyperref[\detokenize{References:s1993}]{\sphinxcrossref{{[}S1993{]}}}}) implementation of the \sphinxcode{SUNLinearSolver} module provided with SUNDIALS, SUNLinSol\_SPFGMR, is an iterative linear @@ -38693,7 +38693,7 @@ \section{The SUNLinSol\_SPFGMR Module} \subsection{SUNLinSol\_SPFGMR Usage} -\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:id2}}\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:sunlinsol-spfgmr-usage}} +\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:sunlinsol-spfgmr-usage}}\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:id2}} The header file to be included when using this module is \sphinxcode{sunlinsol/sunlinsol\_spfgmr.h}. The SUNLinSol\_SPFGMR module is accessible from all SUNDIALS solvers \sphinxstyleemphasis{without} @@ -38974,7 +38974,7 @@ \subsection{SUNLinSol\_SPFGMR Usage} \subsection{SUNLinSol\_SPFGMR Description} -\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:sunlinsol-spfgmr-description}}\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:id3}} +\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:id3}}\label{\detokenize{sunlinsol/SUNLinSol_SPFGMR:sunlinsol-spfgmr-description}} The SUNLinSol\_SPFGMR module defines the \sphinxstyleemphasis{content} field of a \sphinxcode{SUNLinearSolver} to be the following structure: @@ -39184,7 +39184,7 @@ \subsection{SUNLinSol\_SPFGMR Description} \section{The SUNLinSol\_SPBCGS Module} -\label{\detokenize{sunlinsol/SUNLinSol_SPBCGS::doc}}\label{\detokenize{sunlinsol/SUNLinSol_SPBCGS:the-sunlinsol-spbcgs-module}}\label{\detokenize{sunlinsol/SUNLinSol_SPBCGS:sunlinsol-spbcgs}} +\label{\detokenize{sunlinsol/SUNLinSol_SPBCGS:sunlinsol-spbcgs}}\label{\detokenize{sunlinsol/SUNLinSol_SPBCGS::doc}}\label{\detokenize{sunlinsol/SUNLinSol_SPBCGS:the-sunlinsol-spbcgs-module}} The SPBCGS (Scaled, Preconditioned, Bi-Conjugate Gradient, Stabilized \phantomsection\label{\detokenize{sunlinsol/SUNLinSol_SPBCGS:id1}}{\hyperref[\detokenize{References:v1992}]{\sphinxcrossref{{[}V1992{]}}}}) implementation of the \sphinxcode{SUNLinearSolver} module provided with SUNDIALS, SUNLinSol\_SPBCGS, is an iterative linear @@ -39604,7 +39604,7 @@ \section{The SUNLinSol\_SPTFQMR Module} \subsection{SUNLinSol\_SPTFQMR Usage} -\label{\detokenize{sunlinsol/SUNLinSol_SPTFQMR:id2}}\label{\detokenize{sunlinsol/SUNLinSol_SPTFQMR:sunlinsol-sptfqmr-usage}} +\label{\detokenize{sunlinsol/SUNLinSol_SPTFQMR:sunlinsol-sptfqmr-usage}}\label{\detokenize{sunlinsol/SUNLinSol_SPTFQMR:id2}} The header file to be included when using this module is \sphinxcode{sunlinsol/sunlinsol\_sptfqmr.h}. The SUNLinSol\_SPTFQMR module is accessible from all SUNDIALS solvers \sphinxstyleemphasis{without} @@ -40066,7 +40066,7 @@ \section{The SUNLinSol\_PCG Module} \subsection{SUNLinSol\_PCG Usage} -\label{\detokenize{sunlinsol/SUNLinSol_PCG:sunlinsol-pcg-usage}}\label{\detokenize{sunlinsol/SUNLinSol_PCG:id2}} +\label{\detokenize{sunlinsol/SUNLinSol_PCG:id2}}\label{\detokenize{sunlinsol/SUNLinSol_PCG:sunlinsol-pcg-usage}} The header file to be included when using this module is \sphinxcode{sunlinsol/sunlinsol\_pcg.h}. The SUNLinSol\_PCG module is accessible from all SUNDIALS solvers \sphinxstyleemphasis{without} @@ -40455,7 +40455,7 @@ \subsection{SUNLinSol\_PCG Description} \section{SUNLinearSolver Examples} -\label{\detokenize{sunlinsol/SUNLinSol_Examples:sunlinearsolver-examples}}\label{\detokenize{sunlinsol/SUNLinSol_Examples::doc}}\label{\detokenize{sunlinsol/SUNLinSol_Examples:sunlinsol-examples}} +\label{\detokenize{sunlinsol/SUNLinSol_Examples:sunlinsol-examples}}\label{\detokenize{sunlinsol/SUNLinSol_Examples::doc}}\label{\detokenize{sunlinsol/SUNLinSol_Examples:sunlinearsolver-examples}} There are \sphinxcode{SUNLinearSolver} examples that may be installed for each implementation; these make use of the functions in \sphinxcode{test\_sunlinsol.c}. These example functions show simple usage of the \sphinxcode{SUNLinearSolver} family @@ -40541,7 +40541,7 @@ \section{SUNLinearSolver Examples} \chapter{Description of the SUNNonlinearSolver Module} -\label{\detokenize{sunnonlinsol/index:description-of-the-sunnonlinearsolver-module}}\label{\detokenize{sunnonlinsol/index::doc}}\label{\detokenize{sunnonlinsol/index:sunnonlinsol}} +\label{\detokenize{sunnonlinsol/index:sunnonlinsol}}\label{\detokenize{sunnonlinsol/index:description-of-the-sunnonlinearsolver-module}}\label{\detokenize{sunnonlinsol/index::doc}} SUNDIALS time integration packages are written in terms of generic nonlinear solver operations defined by the SUNNonlinSol API and implemented by a particular SUNNonlinSol module of type \sphinxcode{SUNNonlinearSolver}. @@ -40577,7 +40577,7 @@ \chapter{Description of the SUNNonlinearSolver Module} \section{The SUNNonlinearSolver API} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_API:sunnonlinsol-api}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_API:the-sunnonlinearsolver-api}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_API::doc}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_API:the-sunnonlinearsolver-api}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_API::doc}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_API:sunnonlinsol-api}} The SUNNonlinSol API defines several nonlinear solver operations that enable SUNDIALS integrators to utilize any SUNNonlinSol implementation that provides the required functions. These functions can be divided into three @@ -41360,7 +41360,7 @@ \subsection{The generic SUNNonlinearSolver module} \subsection{Implementing a Custom SUNNonlinearSolver Module} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_API:sunnonlinsol-custom}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_API:implementing-a-custom-sunnonlinearsolver-module}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_API:implementing-a-custom-sunnonlinearsolver-module}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_API:sunnonlinsol-custom}} A SUNNonlinSol implementation \sphinxstyleemphasis{must} do the following: \begin{itemize} \item {} @@ -41441,7 +41441,7 @@ \subsection{Implementing a Custom SUNNonlinearSolver Module} \section{ARKode SUNNonlinearSolver interface} -\label{\detokenize{sunnonlinsol/ARKode_Interface:sunnonlinsol-arkode}}\label{\detokenize{sunnonlinsol/ARKode_Interface:arkode-sunnonlinearsolver-interface}}\label{\detokenize{sunnonlinsol/ARKode_Interface::doc}} +\label{\detokenize{sunnonlinsol/ARKode_Interface:arkode-sunnonlinearsolver-interface}}\label{\detokenize{sunnonlinsol/ARKode_Interface::doc}}\label{\detokenize{sunnonlinsol/ARKode_Interface:sunnonlinsol-arkode}} As discussed in {\hyperref[\detokenize{Mathematics:mathematics}]{\sphinxcrossref{\DUrole{std,std-ref}{Mathematical Considerations}}}} integration steps often require the (approximate) solution of a nonlinear system. This system can be formulated as the rootfinding problem @@ -41573,7 +41573,7 @@ \subsection{MRIStep advanced output functions} \section{The SUNNonlinearSolver\_Newton implementation} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:the-sunnonlinearsolver-newton-implementation}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:sunnonlinsol-newton}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton::doc}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:sunnonlinsol-newton}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton::doc}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:the-sunnonlinearsolver-newton-implementation}} This section describes the SUNNonlinSol implementation of Newton’s method. To access the SUNNonlinSol\_Newton module, include the header file \sphinxcode{sunnonlinsol/sunnonlinsol\_newton.h}. We note that the SUNNonlinSol\_Newton @@ -41582,7 +41582,7 @@ \section{The SUNNonlinearSolver\_Newton implementation} \subsection{SUNNonlinearSolver\_Newton description} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:sunnonlinearsolver-newton-description}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:sunnonlinsolnewton-math}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:sunnonlinsolnewton-math}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:sunnonlinearsolver-newton-description}} To find the solution to \phantomsection\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:equation-e-newton-sys}}\begin{equation}\label{equation:sunnonlinsol/SUNNonlinSol_Newton:e:newton_sys} @@ -41647,7 +41647,7 @@ \subsection{SUNNonlinearSolver\_Newton description} \subsection{SUNNonlinearSolver\_Newton functions} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:sunnonlinearsolver-newton-functions}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:sunnonlinsolnewton-functions}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:sunnonlinsolnewton-functions}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_Newton:sunnonlinearsolver-newton-functions}} The SUNNonlinSol\_Newton module provides the following constructor for creating the \sphinxcode{SUNNonlinearSolver} object. \index{SUNNonlinSol\_Newton (C function)} @@ -41819,7 +41819,7 @@ \subsection{SUNNonlinearSolver\_Newton Fortran interface} \section{The SUNNonlinearSolver\_FixedPoint implementation} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinsol-fixedpoint}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:the-sunnonlinearsolver-fixedpoint-implementation}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint::doc}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinsol-fixedpoint}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint::doc}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:the-sunnonlinearsolver-fixedpoint-implementation}} This section describes the SUNNonlinSol implementation of a fixed point (functional) iteration with optional Anderson acceleration. To access the SUNNonlinSol\_FixedPoint module, include the header file @@ -41898,7 +41898,7 @@ \subsection{SUNNonlinearSolver\_FixedPoint description} \subsection{SUNNonlinearSolver\_FixedPoint functions} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinearsolver-fixedpoint-functions}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinsolfixedpoint-functions}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinsolfixedpoint-functions}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinearsolver-fixedpoint-functions}} The SUNNonlinSol\_FixedPoint module provides the following constructor for creating the \sphinxcode{SUNNonlinearSolver} object. \index{SUNNonlinSol\_FixedPoint (C function)} @@ -42003,7 +42003,7 @@ \subsection{SUNNonlinearSolver\_FixedPoint functions} \subsection{SUNNonlinearSolver\_FixedPoint content} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinsolfixedpoint-content}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinearsolver-fixedpoint-content}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinearsolver-fixedpoint-content}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinsolfixedpoint-content}} The \sphinxstyleemphasis{content} field of the SUNNonlinSol\_FixedPoint module is the following structure. @@ -42122,7 +42122,7 @@ \subsection{SUNNonlinearSolver\_FixedPoint content} \subsection{SUNNonlinearSolver\_FixedPoint Fortran interface} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinearsolver-fixedpoint-fortran-interface}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinsolfixedpoint-fortran}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinsolfixedpoint-fortran}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_FixedPoint:sunnonlinearsolver-fixedpoint-fortran-interface}} For SUNDIALS integrators that include a Fortran interface, the SUNNonlinSol\_FixedPoint module also includes a Fortran-callable function for creating a \sphinxcode{SUNNonlinearSolver} object. @@ -42160,7 +42160,7 @@ \subsection{SUNNonlinearSolver\_FixedPoint Fortran interface} \section{The SUNNonlinearSolver\_PetscSNES implementation} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_PetscSNES:sunonlinsol-petscsnes}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_PetscSNES::doc}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_PetscSNES:the-sunnonlinearsolver-petscsnes-implementation}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_PetscSNES:the-sunnonlinearsolver-petscsnes-implementation}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_PetscSNES::doc}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_PetscSNES:sunonlinsol-petscsnes}} This section describes the SUNNonlinSol interface to the PETSc SNES nonlinear solver(s).To enable the SUNonlinSol\_PetscSNES module, SUNDIALS must be configured to use PETSc. Instructions on how to do thus are given in Chapter @@ -42337,7 +42337,7 @@ \subsection{SUNNonlinearSolver\_PetscSNES functions} \subsection{SUNNonlinearSolver\_PetscSNES content} -\label{\detokenize{sunnonlinsol/SUNNonlinSol_PetscSNES:sunnonlinearsolver-petscsnes-content}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_PetscSNES:sunnonlinsolpetscsnes-content}} +\label{\detokenize{sunnonlinsol/SUNNonlinSol_PetscSNES:sunnonlinsolpetscsnes-content}}\label{\detokenize{sunnonlinsol/SUNNonlinSol_PetscSNES:sunnonlinearsolver-petscsnes-content}} The \sphinxstyleemphasis{content} field of the SUNNonlinSol\_Newton module is the following structure. @@ -42392,7 +42392,7 @@ \subsection{SUNNonlinearSolver\_PetscSNES content} \chapter{ARKode Installation Procedure} -\label{\detokenize{Install:installation}}\label{\detokenize{Install:arkode-installation-procedure}}\label{\detokenize{Install::doc}} +\label{\detokenize{Install::doc}}\label{\detokenize{Install:installation}}\label{\detokenize{Install:arkode-installation-procedure}} The installation of any SUNDIALS package is accomplished by installing the SUNDIALS suite as a whole, according to the instructions that follow. The same procedure applies whether or not the downloaded @@ -42489,7 +42489,7 @@ \chapter{ARKode Installation Procedure} \section{CMake-based installation} -\label{\detokenize{Install:installation-cmake}}\label{\detokenize{Install:cmake-based-installation}} +\label{\detokenize{Install:cmake-based-installation}}\label{\detokenize{Install:installation-cmake}} CMake-based installation provides a platform-independent build system. CMake can generate Unix and Linux Makefiles, as well as KDevelop, Visual Studio, and (Apple) XCode project files from the same @@ -42523,7 +42523,7 @@ \section{CMake-based installation} \index{ccmake}\ignorespaces \subsection{Configuring, building, and installing on Unix-like systems} -\label{\detokenize{Install:installation-cmake-unix}}\label{\detokenize{Install:index-0}}\label{\detokenize{Install:configuring-building-and-installing-on-unix-like-systems}} +\label{\detokenize{Install:index-0}}\label{\detokenize{Install:installation-cmake-unix}}\label{\detokenize{Install:configuring-building-and-installing-on-unix-like-systems}} The default CMake configuration will build all included solvers and associated examples and will build static and shared libraries. The INSTDIR defaults to \sphinxcode{/usr/local} and can be changed by setting @@ -42714,7 +42714,7 @@ \subsubsection{Building from the command line} \subsection{Configuration options (Unix/Linux)} -\label{\detokenize{Install:installation-cmake-options}}\label{\detokenize{Install:configuration-options-unix-linux}} +\label{\detokenize{Install:configuration-options-unix-linux}}\label{\detokenize{Install:installation-cmake-options}} A complete list of all available options for a CMake-based SUNDIALS configuration is provide below. Note that the default values shown are for a typical configuration on a Linux system and are provided as @@ -43429,7 +43429,7 @@ \subsubsection{xSDK Configuration Options} \subsection{Configuration examples} -\label{\detokenize{Install:configuration-examples}}\label{\detokenize{Install:installation-cmake-examples}} +\label{\detokenize{Install:installation-cmake-examples}}\label{\detokenize{Install:configuration-examples}} The following examples will help demonstrate usage of the CMake configure options. @@ -43467,7 +43467,7 @@ \subsection{Configuration examples} \subsection{Working with external Libraries} -\label{\detokenize{Install:installation-cmake-externallibraries}}\label{\detokenize{Install:working-with-external-libraries}} +\label{\detokenize{Install:working-with-external-libraries}}\label{\detokenize{Install:installation-cmake-externallibraries}} The SUNDIALS suite contains many options to enable implementation flexibility when developing solutions. The following are some notes addressing specific configurations when using the supported third @@ -43524,7 +43524,7 @@ \subsubsection{Building with KLU} \subsubsection{Building with SuperLU\_DIST} -\label{\detokenize{Install:building-with-superlu-dist}}\label{\detokenize{Install:installation-cmake-externallibraries-superlu-mt}} +\label{\detokenize{Install:installation-cmake-externallibraries-superlu-mt}}\label{\detokenize{Install:building-with-superlu-dist}} The SuperLU\_DIST libraries are available for download from the Lawrence Berkeley National Laboratory website: \sphinxurl{http://crd-legacy.lbl.gov/\$sim\$xiaoye/SuperLU/}\#superlu\_dist. @@ -43567,7 +43567,7 @@ \subsubsection{Building with SuperLU\_MT} \subsubsection{Building with PETSc} -\label{\detokenize{Install:building-with-petsc}}\label{\detokenize{Install:installation-cmake-externallibraries-petsc}} +\label{\detokenize{Install:installation-cmake-externallibraries-petsc}}\label{\detokenize{Install:building-with-petsc}} The PETSc libraries are available for download from the Argonne National Laboratory website: \sphinxurl{http://www.mcs.anl.gov/petsc} . @@ -43580,7 +43580,7 @@ \subsubsection{Building with PETSc} \subsubsection{Building with \sphinxstyleemphasis{hypre}} -\label{\detokenize{Install:building-with-hypre}}\label{\detokenize{Install:installation-cmake-externallibraries-hypre}} +\label{\detokenize{Install:installation-cmake-externallibraries-hypre}}\label{\detokenize{Install:building-with-hypre}} The \sphinxstyleemphasis{hypre} libraries are available for download from the Lawrence Livermore National Laboratory website: \sphinxurl{http://computing.llnl.gov/projects/hypre}. @@ -43595,7 +43595,7 @@ \subsubsection{Building with \sphinxstyleemphasis{hypre}} \subsubsection{Building with CUDA} -\label{\detokenize{Install:installation-cmake-externallibraries-cuda}}\label{\detokenize{Install:building-with-cuda}} +\label{\detokenize{Install:building-with-cuda}}\label{\detokenize{Install:installation-cmake-externallibraries-cuda}} SUNDIALS CUDA modules and examples have been tested with version 10.1 of the CUDA toolkit. To build them, you need to install the Toolkit and compatible NVIDIA drivers. Both are available for download from the NVIDIA website: @@ -43607,7 +43607,7 @@ \subsubsection{Building with CUDA} \subsubsection{Building with RAJA} -\label{\detokenize{Install:building-with-raja}}\label{\detokenize{Install:installation-cmake-externallibraries-raja}} +\label{\detokenize{Install:installation-cmake-externallibraries-raja}}\label{\detokenize{Install:building-with-raja}} RAJA is a performance portability layer developed by Lawrence Livermore National Laboratory and can be obtained from \{tt \sphinxurl{https://github.com/LLNL/RAJA}. @@ -43729,7 +43729,7 @@ \subsection{Configuring, building, and installing on Windows} \section{Installed libraries and exported header files} -\label{\detokenize{Install:installation-results}}\label{\detokenize{Install:installed-libraries-and-exported-header-files}} +\label{\detokenize{Install:installed-libraries-and-exported-header-files}}\label{\detokenize{Install:installation-results}} Using the CMake SUNDIALS build system, the command \fvset{hllines={, ,}}% @@ -43761,7 +43761,7 @@ \section{Installed libraries and exported header files} \subsection{Table: SUNDIALS libraries and header files} -\label{\detokenize{Install:installation-table}}\label{\detokenize{Install:table-sundials-libraries-and-header-files}} +\label{\detokenize{Install:table-sundials-libraries-and-header-files}}\label{\detokenize{Install:installation-table}} \begin{savenotes}\sphinxatlongtablestart\begin{longtable}{|l|l|l|} \hline @@ -44396,7 +44396,7 @@ \subsection{Table: SUNDIALS libraries and header files} \chapter{Appendix: ARKode Constants} -\label{\detokenize{Constants:appendix-arkode-constants}}\label{\detokenize{Constants::doc}}\label{\detokenize{Constants:constants}} +\label{\detokenize{Constants:constants}}\label{\detokenize{Constants::doc}}\label{\detokenize{Constants:appendix-arkode-constants}} Below we list all input and output constants used by the main solver, timestepper, and linear solver modules, together with their numerical values and a short description of their meaning. @@ -44775,7 +44775,7 @@ \subsection{ARKLS linear solver modules} \chapter{Appendix: Butcher tables} -\label{\detokenize{Butcher::doc}}\label{\detokenize{Butcher:appendix-butcher-tables}}\label{\detokenize{Butcher:butcher}} +\label{\detokenize{Butcher:butcher}}\label{\detokenize{Butcher::doc}}\label{\detokenize{Butcher:appendix-butcher-tables}} Here we catalog the full set of Butcher tables included in ARKode. We group these into three categories: \sphinxstyleemphasis{explicit}, \sphinxstyleemphasis{implicit} and \sphinxstyleemphasis{additive}. However, since the methods that comprise an additive @@ -44896,14 +44896,14 @@ \chapter{Appendix: Butcher tables} \section{Explicit Butcher tables} -\label{\detokenize{Butcher:explicit-butcher-tables}}\label{\detokenize{Butcher:butcher-explicit}} +\label{\detokenize{Butcher:butcher-explicit}}\label{\detokenize{Butcher:explicit-butcher-tables}} In the category of explicit Runge-Kutta methods, ARKode includes methods that have orders 2 through 6, with embeddings that are of orders 1 through 5. \subsection{Heun-Euler-2-1-2} -\label{\detokenize{Butcher:butcher-heun-euler}}\label{\detokenize{Butcher:heun-euler-2-1-2}} +\label{\detokenize{Butcher:heun-euler-2-1-2}}\label{\detokenize{Butcher:butcher-heun-euler}} \index{Heun-Euler-2-1-2 ERK method}\ignorespaces Accessible via the constant \sphinxcode{HEUN\_EULER\_2\_1\_2} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}}, {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ERKStepSetTableNum()}}}} or @@ -44929,7 +44929,7 @@ \subsection{Heun-Euler-2-1-2} \subsection{Bogacki-Shampine-4-2-3} -\label{\detokenize{Butcher:bogacki-shampine-4-2-3}}\label{\detokenize{Butcher:butcher-bogacki-shampine}} +\label{\detokenize{Butcher:butcher-bogacki-shampine}}\label{\detokenize{Butcher:bogacki-shampine-4-2-3}} \index{Bogacki-Shampine-4-2-3 ERK method}\ignorespaces Accessible via the constant \sphinxcode{BOGACKI\_SHAMPINE\_4\_2\_3} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}}, {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ERKStepSetTableNum()}}}} or @@ -44985,7 +44985,7 @@ \subsection{ARK-4-2-3 (explicit)} \subsection{Knoth-Wolke-3-3} -\label{\detokenize{Butcher:knoth-wolke-3-3}}\label{\detokenize{Butcher:butcher-knoth-wolke}} +\label{\detokenize{Butcher:butcher-knoth-wolke}}\label{\detokenize{Butcher:knoth-wolke-3-3}} \index{Knoth-Wolke-3-3 ERK method}\ignorespaces Accessible via the constant \sphinxcode{KNOTH\_WOLKE\_3\_3} to {\hyperref[\detokenize{MRIStep_c_interface/User_callable:c.MRIStepSetMRITableNum}]{\sphinxcrossref{\sphinxcode{MRIStepSetMRITableNum()}}}} and {\hyperref[\detokenize{ARKodeButcherTable:c.ARKodeButcherTable_LoadERK}]{\sphinxcrossref{\sphinxcode{ARKodeButcherTable\_LoadERK()}}}}. @@ -45010,7 +45010,7 @@ \subsection{Knoth-Wolke-3-3} \subsection{Zonneveld-5-3-4} -\label{\detokenize{Butcher:butcher-zonneveld}}\label{\detokenize{Butcher:zonneveld-5-3-4}} +\label{\detokenize{Butcher:zonneveld-5-3-4}}\label{\detokenize{Butcher:butcher-zonneveld}} \index{Zonneveld-5-3-4 ERK method}\ignorespaces Accessible via the constant \sphinxcode{ZONNEVELD\_5\_3\_4} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}}, {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ERKStepSetTableNum()}}}} @@ -45039,7 +45039,7 @@ \subsection{Zonneveld-5-3-4} \subsection{ARK-6-3-4 (explicit)} -\label{\detokenize{Butcher:butcher-ark-6-3-4-e}}\label{\detokenize{Butcher:ark-6-3-4-explicit}} +\label{\detokenize{Butcher:ark-6-3-4-explicit}}\label{\detokenize{Butcher:butcher-ark-6-3-4-e}} \index{ARK-6-3-4 ERK method}\ignorespaces Accessible via the constant \sphinxcode{ARK436L2SA\_ERK\_6\_3\_4} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}}, {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ERKStepSetTableNum()}}}} @@ -45069,7 +45069,7 @@ \subsection{ARK-6-3-4 (explicit)} \subsection{ARK-7-3-4 (explicit)} -\label{\detokenize{Butcher:butcher-ark-7-3-4-e}}\label{\detokenize{Butcher:ark-7-3-4-explicit}} +\label{\detokenize{Butcher:ark-7-3-4-explicit}}\label{\detokenize{Butcher:butcher-ark-7-3-4-e}} \index{ARK-7-3-4 ERK method}\ignorespaces Accessible via the constant \sphinxcode{ARK437L2SA\_ERK\_7\_3\_4} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}}, {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ERKStepSetTableNum()}}}} @@ -45121,7 +45121,7 @@ \subsection{Sayfy-Aburub-6-3-4} \subsection{Cash-Karp-6-4-5} -\label{\detokenize{Butcher:cash-karp-6-4-5}}\label{\detokenize{Butcher:butcher-cash-karp}} +\label{\detokenize{Butcher:butcher-cash-karp}}\label{\detokenize{Butcher:cash-karp-6-4-5}} \index{Cash-Karp-6-4-5 ERK method}\ignorespaces Accessible via the constant \sphinxcode{CASH\_KARP\_6\_4\_5} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}}, {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ERKStepSetTableNum()}}}} @@ -45210,7 +45210,7 @@ \subsection{Dormand-Prince-7-4-5} \subsection{ARK-8-4-5 (explicit)} -\label{\detokenize{Butcher:butcher-ark-8-4-5-e}}\label{\detokenize{Butcher:ark-8-4-5-explicit}} +\label{\detokenize{Butcher:ark-8-4-5-explicit}}\label{\detokenize{Butcher:butcher-ark-8-4-5-e}} \index{ARK-8-4-5 ERK method}\ignorespaces Accessible via the constant \sphinxcode{ARK548L2SA\_ERK\_8\_4\_5} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}}, {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ERKStepSetTableNum()}}}} @@ -45242,7 +45242,7 @@ \subsection{ARK-8-4-5 (explicit)} \subsection{ARK-8-4-5b (explicit)} -\label{\detokenize{Butcher:butcher-ark-8-4-5b-e}}\label{\detokenize{Butcher:ark-8-4-5b-explicit}} +\label{\detokenize{Butcher:ark-8-4-5b-explicit}}\label{\detokenize{Butcher:butcher-ark-8-4-5b-e}} \index{ARK-8-4-5b ERK method}\ignorespaces Accessible via the constant \sphinxcode{ARK548L2SAb\_ERK\_8\_4\_5} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}}, {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ERKStepSetTableNum()}}}} @@ -45266,7 +45266,7 @@ \subsection{ARK-8-4-5b (explicit)} \end{equation*} \subsection{Verner-8-5-6} -\label{\detokenize{Butcher:butcher-verner-6-5}}\label{\detokenize{Butcher:verner-8-5-6}} +\label{\detokenize{Butcher:verner-8-5-6}}\label{\detokenize{Butcher:butcher-verner-6-5}} \index{Verner-8-5-6 ERK method}\ignorespaces Accessible via the constant \sphinxcode{VERNER\_8\_5\_6} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}}, {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ERKStepSetTableNum()}}}} @@ -45298,7 +45298,7 @@ \subsection{Verner-8-5-6} \subsection{Fehlberg-13-7-8} -\label{\detokenize{Butcher:butcher-fehlberg-8-7}}\label{\detokenize{Butcher:fehlberg-13-7-8}} +\label{\detokenize{Butcher:fehlberg-13-7-8}}\label{\detokenize{Butcher:butcher-fehlberg-8-7}} \index{Fehlberg-13-7-8 ERK method}\ignorespaces Accessible via the constant \sphinxcode{FEHLBERG\_13\_7\_8} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}}, {\hyperref[\detokenize{ERKStep_c_interface/User_callable:c.ERKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ERKStepSetTableNum()}}}} @@ -45335,7 +45335,7 @@ \subsection{Fehlberg-13-7-8} \section{Implicit Butcher tables} -\label{\detokenize{Butcher:implicit-butcher-tables}}\label{\detokenize{Butcher:butcher-implicit}} +\label{\detokenize{Butcher:butcher-implicit}}\label{\detokenize{Butcher:implicit-butcher-tables}} In the category of diagonally implicit Runge-Kutta methods, ARKode includes methods that have orders 2 through 5, with embeddings that are of orders 1 through 4. @@ -45368,7 +45368,7 @@ \subsection{SDIRK-2-1-2} \subsection{Billington-3-3-2} -\label{\detokenize{Butcher:butcher-billington}}\label{\detokenize{Butcher:billington-3-3-2}} +\label{\detokenize{Butcher:billington-3-3-2}}\label{\detokenize{Butcher:butcher-billington}} \index{Billington-3-3-2 SDIRK method}\ignorespaces Accessible via the constant \sphinxcode{BILLINGTON\_3\_3\_2} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}} or @@ -45395,7 +45395,7 @@ \subsection{Billington-3-3-2} \subsection{TRBDF2-3-3-2} -\label{\detokenize{Butcher:butcher-trbdf2}}\label{\detokenize{Butcher:trbdf2-3-3-2}} +\label{\detokenize{Butcher:trbdf2-3-3-2}}\label{\detokenize{Butcher:butcher-trbdf2}} \index{TRBDF2-3-3-2 ESDIRK method}\ignorespaces Accessible via the constant \sphinxcode{TRBDF2\_3\_3\_2} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}} or @@ -45451,7 +45451,7 @@ \subsection{Kvaerno-4-2-3} \subsection{ARK-4-2-3 (implicit)} -\label{\detokenize{Butcher:ark-4-2-3-implicit}}\label{\detokenize{Butcher:butcher-ark-4-2-3-i}} +\label{\detokenize{Butcher:butcher-ark-4-2-3-i}}\label{\detokenize{Butcher:ark-4-2-3-implicit}} \index{ARK-4-2-3 ESDIRK method}\ignorespaces Accessible via the constant \sphinxcode{ARK324L2SA\_DIRK\_4\_2\_3} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}} or @@ -45539,7 +45539,7 @@ \subsection{Cash-5-3-4} \subsection{SDIRK-5-3-4} -\label{\detokenize{Butcher:butcher-sdirk-5-4}}\label{\detokenize{Butcher:sdirk-5-3-4}} +\label{\detokenize{Butcher:sdirk-5-3-4}}\label{\detokenize{Butcher:butcher-sdirk-5-4}} \index{SDIRK-5-3-4 method}\ignorespaces Accessible via the constant \sphinxcode{SDIRK\_5\_3\_4} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}} or @@ -45629,7 +45629,7 @@ \subsection{ARK-6-3-4 (implicit)} \subsection{ARK-7-3-4 (implicit)} -\label{\detokenize{Butcher:butcher-ark-7-3-4-i}}\label{\detokenize{Butcher:ark-7-3-4-implicit}} +\label{\detokenize{Butcher:ark-7-3-4-implicit}}\label{\detokenize{Butcher:butcher-ark-7-3-4-i}} \index{ARK-7-3-4 ESDIRK method}\ignorespaces Accessible via the constant \sphinxcode{ARK437L2SA\_DIRK\_7\_3\_4} to {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}} or @@ -45717,7 +45717,7 @@ \subsection{ARK-8-4-5 (implicit)} \subsection{ARK-8-4-5b (implicit)} -\label{\detokenize{Butcher:butcher-ark-8-4-5b-i}}\label{\detokenize{Butcher:ark-8-4-5b-implicit}} +\label{\detokenize{Butcher:ark-8-4-5b-implicit}}\label{\detokenize{Butcher:butcher-ark-8-4-5b-i}} \index{ARK-8-4-5b ESDIRK method}\ignorespaces Accessible via the constant \sphinxcode{ARK548L2SAb\_DIRK\_8\_4\_5} for {\hyperref[\detokenize{ARKStep_c_interface/User_callable:c.ARKStepSetTableNum}]{\sphinxcrossref{\sphinxcode{ARKStepSetTableNum()}}}} or @@ -45741,7 +45741,7 @@ \subsection{ARK-8-4-5b (implicit)} \end{equation*} \section{Additive Butcher tables} -\label{\detokenize{Butcher:additive-butcher-tables}}\label{\detokenize{Butcher:butcher-additive}} +\label{\detokenize{Butcher:butcher-additive}}\label{\detokenize{Butcher:additive-butcher-tables}} In the category of additive Runge-Kutta methods for split implicit and explicit calculations, ARKode includes methods that have orders 3 through 5, with embeddings that are of orders 2 through 4. These @@ -45834,6 +45834,23 @@ \chapter{Appendix: SUNDIALS Release History} \endlastfoot +Mar 2020 +& +5.2.0 +& +4.2.0 +& +5.2.0 +& +5.2.0 +& +5.2.0 +& +4.2.0 +& +5.2.0 +\\ +\hline Jan 2020 & 5.1.0 @@ -46536,11 +46553,11 @@ \chapter{Appendix: SUNDIALS Release History} } \bibitem[HS2017]{\detokenize{HS2017}}{\phantomsection\label{\detokenize{References:hs2017}} A.C. Hindmarsh and R. Serban. User Documentation for CVODE -v5.1.0. Technical Report UCRL-SM-208108, LLNL, 2020. +v5.2.0. Technical Report UCRL-SM-208108, LLNL, 2020. } \bibitem[HSR2017]{\detokenize{HSR2017}}{\phantomsection\label{\detokenize{References:hsr2017}} A.C. Hindmarsh, R. Serban and D.R. Reynolds. Example -Programs for CVODE v5.1.0. Technical Report +Programs for CVODE v5.2.0. Technical Report UCRL-SM-208110, LLNL, 2020. } \bibitem[HT1998]{\detokenize{HT1998}}{\phantomsection\label{\detokenize{References:ht1998}} diff --git a/doc/arkode/ARKode_example.tex b/doc/arkode/ARKode_example.tex index 2fb27b72a5..54cddb1834 100644 --- a/doc/arkode/ARKode_example.tex +++ b/doc/arkode/ARKode_example.tex @@ -99,7 +99,7 @@ {\centerline{\includegraphics[width=0.5\textwidth]{doc_logo_blue.pdf}}} \vfill } -\release{4.1.0} +\release{4.2.0} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/doc/arkode/SphinxDocs/examples/source/References.rst b/doc/arkode/SphinxDocs/examples/source/References.rst index d659d975f2..92229c1557 100644 --- a/doc/arkode/SphinxDocs/examples/source/References.rst +++ b/doc/arkode/SphinxDocs/examples/source/References.rst @@ -23,8 +23,8 @@ ========== .. [HSR2017] A.C. Hindmarsh, R. Serban and D.R. Reynolds. Example - Programs for CVODE v5.1.0. Technical Report + Programs for CVODE v5.2.0. Technical Report UCRL-SM-208110, LLNL, 2020. .. [R2018] D.R. Reynolds. User Documentation for ARKode - v4.1.0. Technical Report LLNL-CODE-667205, LLNL, 2020. + v4.2.0. Technical Report LLNL-CODE-667205, LLNL, 2020. diff --git a/doc/arkode/SphinxDocs/examples/source/conf.py b/doc/arkode/SphinxDocs/examples/source/conf.py index 1cd092606b..9df72445f5 100644 --- a/doc/arkode/SphinxDocs/examples/source/conf.py +++ b/doc/arkode/SphinxDocs/examples/source/conf.py @@ -49,9 +49,9 @@ # built documents. # # The short X.Y version. -version = '4.1.0' +version = '4.2.0' # The full version, including alpha/beta/rc tags. -release = '4.1.0' +release = '4.2.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/arkode/SphinxDocs/guide/source/History.rst b/doc/arkode/SphinxDocs/guide/source/History.rst index ba64ea8666..d1a8e52ae7 100644 --- a/doc/arkode/SphinxDocs/guide/source/History.rst +++ b/doc/arkode/SphinxDocs/guide/source/History.rst @@ -23,6 +23,7 @@ Appendix: SUNDIALS Release History ======== =========== =========== =========== =========== =========== =========== =========== Date SUNDIALS ARKode CVODE CVODES IDA IDAS KINSOL ======== =========== =========== =========== =========== =========== =========== =========== +Mar 2020 5.2.0 4.2.0 5.2.0 5.2.0 5.2.0 4.2.0 5.2.0 Jan 2020 5.1.0 4.1.0 5.1.0 5.1.0 5.1.0 4.1.0 5.1.0 Oct 2019 5.0.0 4.0.0 5.0.0 5.0.0 5.0.0 4.0.0 5.0.0 Feb 2019 4.1.0 3.1.0 4.1.0 4.1.0 4.1.0 3.1.0 4.1.0 diff --git a/doc/arkode/SphinxDocs/guide/source/Introduction.rst b/doc/arkode/SphinxDocs/guide/source/Introduction.rst index 2d2045e386..40bc07a659 100644 --- a/doc/arkode/SphinxDocs/guide/source/Introduction.rst +++ b/doc/arkode/SphinxDocs/guide/source/Introduction.rst @@ -107,7 +107,7 @@ preconditioner routines. Changes from previous versions -------------------------------- -Changes in 4.x +Changes in v4.2.0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fixed a build system bug related to the Fortran 2003 interfaces when using the @@ -162,7 +162,7 @@ these have been deprecated and will be removed in a future release. -Changes in 4.1.0 +Changes in v4.1.0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Fixed a build system bug related to finding LAPACK/BLAS. diff --git a/doc/arkode/SphinxDocs/guide/source/References.rst b/doc/arkode/SphinxDocs/guide/source/References.rst index e563a8b569..79a9fc6348 100644 --- a/doc/arkode/SphinxDocs/guide/source/References.rst +++ b/doc/arkode/SphinxDocs/guide/source/References.rst @@ -143,10 +143,10 @@ Report UCRL-ID-141558, LLNL, 2000. .. [HS2017] A.C. Hindmarsh and R. Serban. User Documentation for CVODE - v5.1.0. Technical Report UCRL-SM-208108, LLNL, 2020. + v5.2.0. Technical Report UCRL-SM-208108, LLNL, 2020. .. [HSR2017] A.C. Hindmarsh, R. Serban and D.R. Reynolds. Example - Programs for CVODE v5.1.0. Technical Report + Programs for CVODE v5.2.0. Technical Report UCRL-SM-208110, LLNL, 2020. .. [HT1998] A.C. Hindmarsh and A.G. Taylor. PVODE and KINSOL: diff --git a/doc/arkode/SphinxDocs/guide/source/conf.py b/doc/arkode/SphinxDocs/guide/source/conf.py index a3cf9f7059..bd0777c205 100644 --- a/doc/arkode/SphinxDocs/guide/source/conf.py +++ b/doc/arkode/SphinxDocs/guide/source/conf.py @@ -50,9 +50,9 @@ # built documents. # # The short X.Y version. -version = '4.1.0' +version = '4.2.0' # The full version, including alpha/beta/rc tags. -release = '4.1.0' +release = '4.2.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/cvode/cv_intro.tex b/doc/cvode/cv_intro.tex index 98fa24431c..4330b2861f 100644 --- a/doc/cvode/cv_intro.tex +++ b/doc/cvode/cv_intro.tex @@ -99,7 +99,7 @@ \section{Historical Background}\label{ss:history} \section{Changes from previous versions} -\subsection*{Changes in v5.x} +\subsection*{Changes in v5.2.0} Fixed a build system bug related to the Fortran 2003 interfaces when using the IBM XL compiler. When building the Fortran 2003 interfaces with an XL compiler diff --git a/doc/cvodes/cvs_intro.tex b/doc/cvodes/cvs_intro.tex index c82a06a994..e9db066051 100644 --- a/doc/cvodes/cvs_intro.tex +++ b/doc/cvodes/cvs_intro.tex @@ -117,7 +117,7 @@ \section{Historical Background}\label{ss:history} \section{Changes from previous versions} -\subsection*{Changes in v5.x} +\subsection*{Changes in v5.2.0} Fixed a build system bug related to the Fortran 2003 interfaces when using the IBM XL compiler. When building the Fortran 2003 interfaces with an XL compiler diff --git a/doc/ida/ida_intro.tex b/doc/ida/ida_intro.tex index 4a5b73a591..77b2645bd1 100644 --- a/doc/ida/ida_intro.tex +++ b/doc/ida/ida_intro.tex @@ -66,7 +66,7 @@ \chapter{Introduction}\label{s:intro} \section{Changes from previous versions} -\subsection*{Changes in v5.x} +\subsection*{Changes in v5.2.0} Fixed a build system bug related to the Fortran 2003 interfaces when using the IBM XL compiler. When building the Fortran 2003 interfaces with an XL compiler diff --git a/doc/idas/idas_intro.tex b/doc/idas/idas_intro.tex index 43454903ef..9adce69144 100644 --- a/doc/idas/idas_intro.tex +++ b/doc/idas/idas_intro.tex @@ -87,7 +87,7 @@ \chapter{Introduction}\label{s:intro} \section{Changes from previous versions} -\subsection*{Changes in v4.x} +\subsection*{Changes in v4.2.0} Fixed a build system bug related to the Fortran 2003 interfaces when using the IBM XL compiler. When building the Fortran 2003 interfaces with an XL compiler diff --git a/doc/kinsol/kin_intro.tex b/doc/kinsol/kin_intro.tex index 1ca31d91c5..002aeba866 100644 --- a/doc/kinsol/kin_intro.tex +++ b/doc/kinsol/kin_intro.tex @@ -109,7 +109,7 @@ \section{Historical Background}\label{ss:history} \section{Changes from previous versions} -\subsection*{Changes in v5.x} +\subsection*{Changes in v5.2.0} Fixed a build system bug related to the Fortran 2003 interfaces when using the IBM XL compiler. When building the Fortran 2003 interfaces with an XL compiler diff --git a/doc/sundials/biblio.bib b/doc/sundials/biblio.bib index 882464950d..f069aa84fe 100644 --- a/doc/sundials/biblio.bib +++ b/doc/sundials/biblio.bib @@ -16,7 +16,7 @@ @techreport{arkode_ug, author={Daniel R. Reynolds and David J. Gardner and Alan C. Hindmarsh and Carol S. Woodward and Jean M. Sexton}, -title={{User Documentation for ARKODE v4.1.0}}, +title={{User Documentation for ARKODE v4.2.0}}, institution={LLNL}, number={LLNL-SM-668082}, year=2020 @@ -26,7 +26,7 @@ @techreport{arkode_ug % @techreport{arkode_ex, author={Daniel R. Reynolds}, -title={{Example Programs for ARKODE v4.1.0}}, +title={{Example Programs for ARKODE v4.2.0}}, institution={Southern Methodist University}, year=2020 } @@ -35,7 +35,7 @@ @techreport{arkode_ex % @techreport{cvode_ug, author={A. C. Hindmarsh and R. Serban}, -title={{User Documentation for CVODE v5.1.0}}, +title={{User Documentation for CVODE v5.2.0}}, institution={LLNL}, number={UCRL-SM-208108}, year=2020 @@ -45,7 +45,7 @@ @techreport{cvode_ug % @techreport{cvode_ex, author={A. C. Hindmarsh and R. Serban and D. R. Reynolds}, -title={{Example Programs for CVODE v5.1.0}}, +title={{Example Programs for CVODE v5.2.0}}, institution={LLNL}, note={UCRL-SM-208110}, year=2020 @@ -55,7 +55,7 @@ @techreport{cvode_ex % @techreport{cvodes_ug, author={A. C. Hindmarsh and R. Serban}, -title={{User Documentation for CVODES v5.1.0}}, +title={{User Documentation for CVODES v5.2.0}}, institution={LLNL}, note={UCRL-SM-208111}, year=2020 @@ -65,7 +65,7 @@ @techreport{cvodes_ug % @techreport{cvodes_ex, author={R. Serban and A. C. Hindmarsh}, -title={{Example Programs for CVODES v5.1.0}}, +title={{Example Programs for CVODES v5.2.0}}, institution={LLNL}, number={UCRL-SM-208115}, year=2020 @@ -75,7 +75,7 @@ @techreport{cvodes_ex % @techreport{ida_ug, author={A. C. Hindmarsh and R. Serban and A. Collier}, -title={{User Documentation for IDA v5.1.0}}, +title={{User Documentation for IDA v5.2.0}}, institution={LLNL}, number={UCRL-SM-208112}, year=2020 @@ -85,7 +85,7 @@ @techreport{ida_ug % @techreport{ida_ex, author={A. C. Hindmarsh and R. Serban and A. Collier}, -title={{Example Programs for IDA v5.1.0}}, +title={{Example Programs for IDA v5.2.0}}, institution={LLNL}, number={UCRL-SM-208113}, year=2020 @@ -95,7 +95,7 @@ @techreport{ida_ex % @techreport{idas_ug, author={R. Serban and C. Petra and A. C. Hindmarsh}, -title={{User Documentation for IDAS v4.1.0}}, +title={{User Documentation for IDAS v4.2.0}}, institution={LLNL}, number={UCRL-SM-234051}, year=2020 @@ -105,7 +105,7 @@ @techreport{idas_ug % @techreport{idas_ex, author={R. Serban and A. C. Hindmarsh}, -title={{Example Programs for IDAS v4.1.0}}, +title={{Example Programs for IDAS v4.2.0}}, institution={LLNL}, number={LLNL-TR-437091}, year=2020 @@ -115,7 +115,7 @@ @techreport{idas_ex % @techreport{kinsol_ug, author={A. M. Collier and A. C. Hindmarsh and R. Serban and C.S. Woodward}, -title={{User Documentation for KINSOL v5.1.0}}, +title={{User Documentation for KINSOL v5.2.0}}, institution={LLNL}, number={UCRL-SM-208116}, year=2020 @@ -125,7 +125,7 @@ @techreport{kinsol_ug % @techreport{kinsol_ex, author={A. M. Collier and R. Serban}, -title={{Example Programs for KINSOL v5.1.0}}, +title={{Example Programs for KINSOL v5.2.0}}, institution={LLNL}, number={UCRL-SM-208114}, year=2020 diff --git a/doc/sundials/sundials_release_history.tex b/doc/sundials/sundials_release_history.tex index 17ccc67e4b..f6981d4b88 100644 --- a/doc/sundials/sundials_release_history.tex +++ b/doc/sundials/sundials_release_history.tex @@ -17,6 +17,7 @@ \chapter{SUNDIALS Release History} $^3${\cvode} and {\pvode} combined, $^4${\ida} written, $^5${\kinsol} written}\\ \hline} \begin{xtabular}{|ll|c|c|c|c|c|c|c|} %% Version Table +Mar & 2020 & 5.2.0 & 4.2.0 & 5.2.0 & 5.2.0 & 5.2.0 & 4.2.0 & 5.2.0 \\ Jan & 2020 & 5.1.0 & 4.1.0 & 5.1.0 & 5.1.0 & 5.1.0 & 4.1.0 & 5.1.0 \\ Oct & 2019 & 5.0.0 & 4.0.0 & 5.0.0 & 5.0.0 & 5.0.0 & 4.0.0 & 5.0.0\\ Feb & 2019 & 4.1.0 & 3.1.0 & 4.1.0 & 4.1.0 & 4.1.0 & 3.1.0 & 4.1.0\\ diff --git a/doc/sundials/ug.tex b/doc/sundials/ug.tex index 6e6b0adf05..0051f88e09 100644 --- a/doc/sundials/ug.tex +++ b/doc/sundials/ug.tex @@ -59,29 +59,29 @@ %----- VERSIONS AND UCRL NUMBERS OF SUNDIALS CODES -\newcommand{\sunrelease}{v5.1.0} +\newcommand{\sunrelease}{v5.2.0} -\newcommand{\cvrelease}{v5.1.0} +\newcommand{\cvrelease}{v5.2.0} \newcommand{\cvucrlug}{UCRL-SM-208108} \newcommand{\cvucrlex}{UCRL-SM-208110} -\newcommand{\cvsrelease}{v5.1.0} +\newcommand{\cvsrelease}{v5.2.0} \newcommand{\cvsucrlug}{UCRL-SM-208111} \newcommand{\cvsucrlex}{UCRL-SM-208115} -\newcommand{\idarelease}{v5.1.0} +\newcommand{\idarelease}{v5.2.0} \newcommand{\idaucrlug}{UCRL-SM-208112} \newcommand{\idaucrlex}{UCRL-SM-208113} -\newcommand{\idasrelease}{v4.1.0} +\newcommand{\idasrelease}{v4.2.0} \newcommand{\idasucrlug}{UCRL-SM-234051} \newcommand{\idasucrlex}{LLNL-TR-437091} -\newcommand{\kinrelease}{v5.1.0} +\newcommand{\kinrelease}{v5.2.0} \newcommand{\kinucrlug}{UCRL-SM-208116} \newcommand{\kinucrlex}{UCRL-SM-208114} -\newcommand{\arkrelease}{v4.1.0} +\newcommand{\arkrelease}{v4.2.0} \newcommand{\arkucrlug}{LLNL-SM-668082} \newcommand{\arkucrlex}{????-??-??????} diff --git a/examples/sunmatrix/cusparse/CMakeLists.txt b/examples/sunmatrix/cusparse/CMakeLists.txt index 899fdc528a..54bd958193 100644 --- a/examples/sunmatrix/cusparse/CMakeLists.txt +++ b/examples/sunmatrix/cusparse/CMakeLists.txt @@ -37,6 +37,7 @@ if(LINK_LIBRARY_TYPE MATCHES "static") set(SUNDIALS_LIBS sundials_nvecserial_static sundials_nveccuda_static sundials_sunmatrixdense_static + sundials_sunmatrixsparse_static sundials_sunmatrixcusparse_static ${EXTRA_LINK_LIBS}) else() diff --git a/recent_changes.md b/recent_changes.md index 72bab3b8bc..31c4a4bef6 100644 --- a/recent_changes.md +++ b/recent_changes.md @@ -1,6 +1,6 @@ # SUNDIALS Changelog -## Changes to SUNDIALS in release 5.x +## Changes to SUNDIALS in release 5.2.0 Fixed a build system bug related to the Fortran 2003 interfaces when using the IBM XL compiler. When building the Fortran 2003 interfaces with an XL compiler diff --git a/scripts/tarscript b/scripts/tarscript index 2a9c3640d5..973ed57631 100755 --- a/scripts/tarscript +++ b/scripts/tarscript @@ -43,13 +43,13 @@ function print_usage # VERSION NUMBERS #--------------------------------------------------------- -SUN_VER="5.1.0" -CV_VER="5.1.0" -CVS_VER="5.1.0" -IDA_VER="5.1.0" -IDAS_VER="4.1.0" -KIN_VER="5.1.0" -ARK_VER="4.1.0" +SUN_VER="5.2.0" +CV_VER="5.2.0" +CVS_VER="5.2.0" +IDA_VER="5.2.0" +IDAS_VER="4.2.0" +KIN_VER="5.2.0" +ARK_VER="4.2.0" #--------------------------------------------------------- # Test if the script is executed from within its directory diff --git a/scripts/updateVersion.sh b/scripts/updateVersion.sh index ef25376429..7e040f46fe 100755 --- a/scripts/updateVersion.sh +++ b/scripts/updateVersion.sh @@ -19,7 +19,7 @@ # development releases the label string is of the form "-dev.#" and for full # releases the label string is "". sun_major=${1:-5} -sun_minor=${2:-1} +sun_minor=${2:-2} sun_patch=${3:-0} sun_label=${4:""} month=${5:-$(date +"%b")} diff --git a/src/arkode/README.md b/src/arkode/README.md index fcd03f3e89..741d1d371f 100644 --- a/src/arkode/README.md +++ b/src/arkode/README.md @@ -1,5 +1,5 @@ # ARKode -### Version 4.1.0 (Jan 2020) +### Version 4.2.0 (Mar 2020) **Daniel R. Reynolds and Jean M. Sexton Department of Mathematics, SMU** @@ -49,8 +49,8 @@ the "SUNDIALS Release History" appendix of the ARKode User Guide. ## References * D. R. Reynolds, D. J. Gardner, A. C. Hindmarsh, C. S. Woodward, and - J. M. Sexton, "User Documentation for ARKode v4.1.0," LLNL technical report - LLNL-SM-668082, Jan 2020. + J. M. Sexton, "User Documentation for ARKode v4.2.0," LLNL technical report + LLNL-SM-668082, Mar 2020. -* D. R. Reynolds, "Example Programs for ARKode v4.1.0," Technical Report, - Southern Methodist University Center for Scientific Computation, Jan 2020. +* D. R. Reynolds, "Example Programs for ARKode v4.2.0," Technical Report, + Southern Methodist University Center for Scientific Computation, Mar 2020. diff --git a/src/cvode/README.md b/src/cvode/README.md index 2668a12729..f6806bb7a4 100644 --- a/src/cvode/README.md +++ b/src/cvode/README.md @@ -1,5 +1,5 @@ # CVODE -### Version 5.1.0 (Jan 2020) +### Version 5.2.0 (Mar 2020) **Alan C. Hindmarsh and Radu Serban Center for Applied Scientific Computing, LLNL** @@ -45,11 +45,11 @@ the "SUNDIALS Release History" appendix of the CVODE User Guide. ## References -* A. C. Hindmarsh and R. Serban, "User Documentation for CVODE v5.1.0," - LLNL technical report UCRL-SM-208108, Jan 2020. +* A. C. Hindmarsh and R. Serban, "User Documentation for CVODE v5.2.0," + LLNL technical report UCRL-SM-208108, Mar 2020. -* A. C. Hindmarsh and R. Serban, "Example Programs for CVODE v5.1.0," - LLNL technical report UCRL-SM-208110, Jan 2020. +* A. C. Hindmarsh and R. Serban, "Example Programs for CVODE v5.2.0," + LLNL technical report UCRL-SM-208110, Mar 2020. * S.D. Cohen and A.C. Hindmarsh, "CVODE, a Stiff/nonstiff ODE Solver in C," Computers in Physics, 10(2), pp. 138-143, 1996. diff --git a/src/cvodes/README.md b/src/cvodes/README.md index 2dbead032a..df95639d42 100644 --- a/src/cvodes/README.md +++ b/src/cvodes/README.md @@ -1,5 +1,5 @@ # CVODES -### Version 5.1.0 (Jan 2020) +### Version 5.2.0 (Mar 2020) **Alan C. Hindmarsh and Radu Serban Center for Applied Scientific Computing, LLNL** @@ -41,11 +41,11 @@ the "SUNDIALS Release History" appendix of the CVODES User Guide. ## References -* A. C. Hindmarsh and R. Serban, "User Documentation for CVODES v5.1.0," - LLNL technical report UCRL-SM-208111, Jan 2020. +* A. C. Hindmarsh and R. Serban, "User Documentation for CVODES v5.2.0," + LLNL technical report UCRL-SM-208111, Mar 2020. -* A. C. Hindmarsh and R. Serban, "Example Programs for CVODES v5.1.0," - LLNL technical report UCRL-SM-208115, Jan 2020. +* A. C. Hindmarsh and R. Serban, "Example Programs for CVODES v5.2.0," + LLNL technical report UCRL-SM-208115, Mar 2020. * R. Serban and A. C. Hindmarsh, "CVODES: the Sensitivity-Enabled ODE solver in SUNDIALS," Proceedings of IDETC/CIE 2005, Sept. 2005, diff --git a/src/ida/README.md b/src/ida/README.md index e81fb36587..6f7719a68d 100644 --- a/src/ida/README.md +++ b/src/ida/README.md @@ -1,5 +1,5 @@ # IDA -### Version 5.1.0 (Jan 2020) +### Version 5.2.0 (Mar 2020) **Alan C. Hindmarsh and Radu Serban Center for Applied Scientific Computing, LLNL** @@ -44,11 +44,11 @@ the "SUNDIALS Release History" appendix of the IDA User Guide. ## References -* A. C. Hindmarsh, R. Serban, and A. Collier, "User Documentation for IDA v5.1.0," - LLNL technical report UCRL-SM-208112, Jan 2020. +* A. C. Hindmarsh, R. Serban, and A. Collier, "User Documentation for IDA v5.2.0," + LLNL technical report UCRL-SM-208112, Mar 2020. -* A. C. Hindmarsh, R. Serban, and A. Collier, "Example Programs for IDA v5.1.0," - LLNL technical report UCRL-SM-208113, Jan 2020. +* A. C. Hindmarsh, R. Serban, and A. Collier, "Example Programs for IDA v5.2.0," + LLNL technical report UCRL-SM-208113, Mar 2020. * A. C. Hindmarsh, P. N. Brown, K. E. Grant, S. L. Lee, R. Serban, D. E. Shumaker, and C. S. Woodward, "SUNDIALS, Suite of Nonlinear and diff --git a/src/idas/README.md b/src/idas/README.md index 346690c4cb..d15aebde86 100644 --- a/src/idas/README.md +++ b/src/idas/README.md @@ -1,5 +1,5 @@ # IDAS -### Version 4.1.0 (Jan 2020) +### Version 4.2.0 (Mar 2020) **Radu Serban Center for Applied Scientific Computing, LLNL** @@ -40,11 +40,11 @@ the "SUNDIALS Release History" appendix of the IDAS User Guide. ## References -* R. Serban, C. Petra,and A. C. Hindmarsh, "User Documentation for IDAS v4.1.0," - LLNL technical report UCRL-SM-234051, Jan 2020. +* R. Serban, C. Petra,and A. C. Hindmarsh, "User Documentation for IDAS v4.2.0," + LLNL technical report UCRL-SM-234051, Mar 2020. -* R. Serban and A.C. Hindmarsh, "Example Programs for IDAS v4.1.0," - LLNL technical report LLNL-TR-437091, Jan 2020. +* R. Serban and A.C. Hindmarsh, "Example Programs for IDAS v4.2.0," + LLNL technical report LLNL-TR-437091, Mar 2020. * A. C. Hindmarsh, P. N. Brown, K. E. Grant, S. L. Lee, R. Serban, D. E. Shumaker, and C. S. Woodward, "SUNDIALS, Suite of Nonlinear and diff --git a/src/kinsol/README.md b/src/kinsol/README.md index 2c31dde0d1..8836e369d6 100644 --- a/src/kinsol/README.md +++ b/src/kinsol/README.md @@ -1,5 +1,5 @@ # KINSOL -### Version 5.1.0 (Jan 2020) +### Version 5.2.0 (Mar 2020) **Aaron Collier, Alan C. Hindmarsh, Radu Serban, and Carol S. Woodward Center for Applied Scientific Computing, LLNL** @@ -45,11 +45,11 @@ the "SUNDIALS Release History" appendix of the KINSOL User Guide. ## References * A. M. Collier, A. C. Hindmarsh, R. Serban, and C. S. Woodward, - "User Documentation for KINSOL v5.1.0," LLNL technical report - UCRL-SM-208116, Jan 2020. + "User Documentation for KINSOL v5.2.0," LLNL technical report + UCRL-SM-208116, Mar 2020. -* A. M. Collier and R. Serban, "Example Programs for KINSOL v5.1.0," - LLNL technical report UCRL-SM-208114, Jan 2020. +* A. M. Collier and R. Serban, "Example Programs for KINSOL v5.2.0," + LLNL technical report UCRL-SM-208114, Mar 2020. * A. C. Hindmarsh, P. N. Brown, K. E. Grant, S. L. Lee, R. Serban, D. E. Shumaker, and C. S. Woodward, "SUNDIALS, Suite of Nonlinear and diff --git a/src/sundials/fmod/fsundials_matrix_mod.f90 b/src/sundials/fmod/fsundials_matrix_mod.f90 index 70f68a8d8c..7d1e5593a1 100644 --- a/src/sundials/fmod/fsundials_matrix_mod.f90 +++ b/src/sundials/fmod/fsundials_matrix_mod.f90 @@ -18,10 +18,11 @@ module fsundials_matrix_mod enumerator :: SUNMATRIX_BAND enumerator :: SUNMATRIX_SPARSE enumerator :: SUNMATRIX_SLUNRLOC + enumerator :: SUNMATRIX_CUSPARSE enumerator :: SUNMATRIX_CUSTOM end enum integer, parameter, public :: SUNMatrix_ID = kind(SUNMATRIX_DENSE) - public :: SUNMATRIX_DENSE, SUNMATRIX_BAND, SUNMATRIX_SPARSE, SUNMATRIX_SLUNRLOC, SUNMATRIX_CUSTOM + public :: SUNMATRIX_DENSE, SUNMATRIX_BAND, SUNMATRIX_SPARSE, SUNMATRIX_SLUNRLOC, SUNMATRIX_CUSPARSE, SUNMATRIX_CUSTOM ! struct struct _generic_SUNMatrix_Ops type, bind(C), public :: SUNMatrix_Ops type(C_FUNPTR), public :: getid diff --git a/src/sunmatrix/sparse/fmod/fsunmatrix_sparse_mod.c b/src/sunmatrix/sparse/fmod/fsunmatrix_sparse_mod.c index 63462517b5..54e2e56e92 100644 --- a/src/sunmatrix/sparse/fmod/fsunmatrix_sparse_mod.c +++ b/src/sunmatrix/sparse/fmod/fsunmatrix_sparse_mod.c @@ -258,6 +258,34 @@ SWIGEXPORT SUNMatrix _wrap_FSUNSparseFromBandMatrix(SUNMatrix farg1, double cons } +SWIGEXPORT int _wrap_FSUNSparseMatrix_ToCSR(SUNMatrix farg1, void *farg2) { + int fresult ; + SUNMatrix arg1 = (SUNMatrix) (SUNMatrix)0 ; + SUNMatrix *arg2 = (SUNMatrix *) 0 ; + int result; + + arg1 = (SUNMatrix)(farg1); + arg2 = (SUNMatrix *)(farg2); + result = (int)SUNSparseMatrix_ToCSR(arg1,arg2); + fresult = (int)(result); + return fresult; +} + + +SWIGEXPORT int _wrap_FSUNSparseMatrix_ToCSC(SUNMatrix farg1, void *farg2) { + int fresult ; + SUNMatrix arg1 = (SUNMatrix) (SUNMatrix)0 ; + SUNMatrix *arg2 = (SUNMatrix *) 0 ; + int result; + + arg1 = (SUNMatrix)(farg1); + arg2 = (SUNMatrix *)(farg2); + result = (int)SUNSparseMatrix_ToCSC(arg1,arg2); + fresult = (int)(result); + return fresult; +} + + SWIGEXPORT int _wrap_FSUNSparseMatrix_Realloc(SUNMatrix farg1) { int fresult ; SUNMatrix arg1 = (SUNMatrix) 0 ; diff --git a/src/sunmatrix/sparse/fmod/fsunmatrix_sparse_mod.f90 b/src/sunmatrix/sparse/fmod/fsunmatrix_sparse_mod.f90 index 70511676f6..2e263af075 100644 --- a/src/sunmatrix/sparse/fmod/fsunmatrix_sparse_mod.f90 +++ b/src/sunmatrix/sparse/fmod/fsunmatrix_sparse_mod.f90 @@ -33,6 +33,8 @@ module fsunmatrix_sparse_mod public :: FSUNSparseMatrix public :: FSUNSparseFromDenseMatrix public :: FSUNSparseFromBandMatrix + public :: FSUNSparseMatrix_ToCSR + public :: FSUNSparseMatrix_ToCSC public :: FSUNSparseMatrix_Realloc public :: FSUNSparseMatrix_Reallocate public :: FSUNSparseMatrix_Print @@ -87,6 +89,24 @@ function swigc_FSUNSparseFromBandMatrix(farg1, farg2, farg3) & type(C_PTR) :: fresult end function +function swigc_FSUNSparseMatrix_ToCSR(farg1, farg2) & +bind(C, name="_wrap_FSUNSparseMatrix_ToCSR") & +result(fresult) +use, intrinsic :: ISO_C_BINDING +type(C_PTR), value :: farg1 +type(C_PTR), value :: farg2 +integer(C_INT) :: fresult +end function + +function swigc_FSUNSparseMatrix_ToCSC(farg1, farg2) & +bind(C, name="_wrap_FSUNSparseMatrix_ToCSC") & +result(fresult) +use, intrinsic :: ISO_C_BINDING +type(C_PTR), value :: farg1 +type(C_PTR), value :: farg2 +integer(C_INT) :: fresult +end function + function swigc_FSUNSparseMatrix_Realloc(farg1) & bind(C, name="_wrap_FSUNSparseMatrix_Realloc") & result(fresult) @@ -318,6 +338,38 @@ function FSUNSparseFromBandMatrix(a, droptol, sparsetype) & call c_f_pointer(fresult, swig_result) end function +function FSUNSparseMatrix_ToCSR(a, bout) & +result(swig_result) +use, intrinsic :: ISO_C_BINDING +integer(C_INT) :: swig_result +type(SUNMatrix), target, intent(inout) :: a +type(C_PTR), target, intent(inout) :: bout +integer(C_INT) :: fresult +type(C_PTR) :: farg1 +type(C_PTR) :: farg2 + +farg1 = c_loc(a) +farg2 = c_loc(bout) +fresult = swigc_FSUNSparseMatrix_ToCSR(farg1, farg2) +swig_result = fresult +end function + +function FSUNSparseMatrix_ToCSC(a, bout) & +result(swig_result) +use, intrinsic :: ISO_C_BINDING +integer(C_INT) :: swig_result +type(SUNMatrix), target, intent(inout) :: a +type(C_PTR), target, intent(inout) :: bout +integer(C_INT) :: fresult +type(C_PTR) :: farg1 +type(C_PTR) :: farg2 + +farg1 = c_loc(a) +farg2 = c_loc(bout) +fresult = swigc_FSUNSparseMatrix_ToCSC(farg1, farg2) +swig_result = fresult +end function + function FSUNSparseMatrix_Realloc(a) & result(swig_result) use, intrinsic :: ISO_C_BINDING