From df0b21109ace56aac92f8200e53d5888b049ae2c Mon Sep 17 00:00:00 2001 From: Cody Balos Date: Fri, 20 Oct 2023 14:03:50 -0700 Subject: [PATCH 1/2] Bugfix: docs missing cvodequadsstolerances (#352) Fix CVodeQuadSStolerances docs, add CVodeQuadSVtolerances docs (Fixes #340) --- doc/cvodes/guide/source/Usage/ADJ.rst | 2 +- doc/cvodes/guide/source/Usage/SIM.rst | 22 +++++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/doc/cvodes/guide/source/Usage/ADJ.rst b/doc/cvodes/guide/source/Usage/ADJ.rst index db4d6b9655..80e567f024 100644 --- a/doc/cvodes/guide/source/Usage/ADJ.rst +++ b/doc/cvodes/guide/source/Usage/ADJ.rst @@ -24,7 +24,7 @@ several supporting user-callable functions. For this reason, in the following sections we refer to the *backward problem* and not to the *adjoint problem* when discussing details relevant to the ODEs that are integrated backward in time. The backward problem can be the adjoint problem :eq:`CVODES_adj_eqns` or -:eq:`CVODES_adj_eqns`, and can be augmented with some quadrature differential +:eq:`CVODES_adj1_eqns`, and can be augmented with some quadrature differential equations. CVODES uses various constants for both input and output. These are defined as diff --git a/doc/cvodes/guide/source/Usage/SIM.rst b/doc/cvodes/guide/source/Usage/SIM.rst index dbc6506dd1..539f521ea7 100644 --- a/doc/cvodes/guide/source/Usage/SIM.rst +++ b/doc/cvodes/guide/source/Usage/SIM.rst @@ -4122,13 +4122,13 @@ If the quadrature variables are part of the step size control mechanism, one of the following functions must be called to specify the integration tolerances for quadrature variables. -.. c:function:: int CVodeQuadSVtolerances(void * cvode_mem, realtype reltolQ, N_Vector abstolQ) +.. c:function:: int CVodeQuadSStolerances(void *cvode_mem, realtype reltolQ, realtype abstolQ) - The function ``CVodeQuadSStolerances`` specifies scalar relative and absolute tolerances. + The function ``CVodeQuadSStolerances`` specifies scalar relative and absolute tolerances. **Arguments:** * ``cvode_mem`` -- pointer to the CVODES memory block. - * ``reltolQ`` -- tolerances is the scalar relative error tolerance. + * ``reltolQ`` -- is the scalar relative error tolerance. * ``abstolQ`` -- is the scalar absolute error tolerance. **Return value:** @@ -4138,6 +4138,22 @@ integration tolerances for quadrature variables. * ``CV_ILL_INPUT`` -- One of the input tolerances was negative. +.. c:function:: int CVodeQuadSVtolerances(void * cvode_mem, realtype reltolQ, N_Vector abstolQ) + + The function ``CVodeQuadSVtolerances`` specifies scalar relative and vector absolute tolerances. + + **Arguments:** + * ``cvode_mem`` -- pointer to the CVODES memory block. + * ``reltolQ`` -- is the scalar relative error tolerance. + * ``abstolQ`` -- the vector of absolute error tolerances. + + **Return value:** + * ``CV_SUCCESS`` -- The optional value has been successfully set. + * ``CV_NO_QUAD`` -- Quadrature integration was not initialized. + * ``CV_MEM_NULL`` -- The ``cvode_mem`` pointer is ``NULL``. + * ``CV_ILL_INPUT`` -- One of the input tolerances was negative. + + .. _CVODES.Usage.purequad.optional_output: Optional outputs for quadrature integration From 6ae281ef1a6c366fc3ed91322c1626907a5507a0 Mon Sep 17 00:00:00 2001 From: Steven Roberts Date: Thu, 26 Oct 2023 07:18:42 -0700 Subject: [PATCH 2/2] Add Sofroniou-Spaletta-5-3-4 method only (#355) Only adding the `Sofroniou-Spaletta-5-3-4` method but not changing the defaults like #345 --------- Co-authored-by: Daniel R. Reynolds Co-authored-by: David Gardner --- CHANGELOG.md | 2 + doc/arkode/guide/source/Butcher.rst | 37 ++++++++++++++++++ doc/arkode/guide/source/Constants.rst | 2 + doc/arkode/guide/source/Introduction.rst | 2 + .../sofroniou_spaletta_erk_stab_region.png | Bin 0 -> 25026 bytes doc/shared/sundials.bib | 12 ++++++ include/arkode/arkode_butcher_erk.h | 3 +- src/arkode/arkode_butcher_erk.def | 34 ++++++++++++++++ 8 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 doc/shared/figs/arkode/sofroniou_spaletta_erk_stab_region.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 4182e059f3..4b1c49a4a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,8 @@ Fixed scaling bug in `SUNMatScaleAddI_Sparse` for non-square matrices. Fixed missing soversions in some `SUNLinearSolver` and `SUNNonlinearSolver` CMake targets. +Added the fourth order ERK method `ARKODE_SOFRONIOU_SPALETTA_5_3_4`. + ## Changes to SUNDIALS in release 6.6.1 Updated the Tpetra NVector interface to support Trilinos 14. diff --git a/doc/arkode/guide/source/Butcher.rst b/doc/arkode/guide/source/Butcher.rst index ecafdab263..c9166aa55a 100644 --- a/doc/arkode/guide/source/Butcher.rst +++ b/doc/arkode/guide/source/Butcher.rst @@ -331,6 +331,43 @@ This is the default 3th order slow and fast MRIStep method (from Linear stability region for the Knoth-Wolke method +.. _Butcher.Sofroniou_Spaletta: + +Sofroniou-Spaletta-5-3-4 +^^^^^^^^^^^^^^^^^^^^^^^^ + +.. index:: Sofroniou-Spaletta-5-3-4 ERK method + +Accessible via the constant ``ARKODE_SOFRONIOU_SPALETTA_5_3_4`` to +:c:func:`ARKStepSetTableNum`, :c:func:`ERKStepSetTableNum` +or :c:func:`ARKodeButcherTable_LoadERK`. +Accessible via the string ``"ARKODE_SOFRONIOU_SPALETTA_5_3_4"`` to +:c:func:`ARKStepSetTableName`, :c:func:`ERKStepSetTableName` or +:c:func:`ARKodeButcherTable_LoadERKByName`. +(from :cite:p:`Sof:04`). + +.. math:: + + \renewcommand{\arraystretch}{1.5} + \begin{array}{r|ccccc} + 0 & 0 & 0 & 0 & 0 & 0 \\ + \frac{2}{5} & \frac{2}{5} & 0 & 0 & 0 & 0 \\ + \frac{3}{5} & -\frac{3}{20} & \frac{3}{4} & 0 & 0 & 0 \\ + 1 & \frac{19}{44} & -\frac{15}{44} & \frac{10}{11} & 0 & 0 \\ + 1 & \frac{11}{72} & \frac{25}{72} & \frac{25}{72} & \frac{11}{72} & 0 \\ + 4 & \frac{11}{72} & \frac{25}{72} & \frac{25}{72} & \frac{11}{72} & 0 \\ + 3 & \frac{1251515}{8970912} & \frac{3710105}{8970912} & \frac{2519695}{8970912} & \frac{61105}{8970912} & \frac{119041}{747576} \\ + \end{array} + +.. figure:: /figs/arkode/sofroniou_spaletta_erk_stab_region.png + :scale: 50 % + :align: center + + Linear stability region for the Sofroniou-Spaletta method. The method's + region is outlined in blue; the embedding's region is in red. + + + .. _Butcher.Zonneveld: diff --git a/doc/arkode/guide/source/Constants.rst b/doc/arkode/guide/source/Constants.rst index 9a3e6600ac..95b6a43125 100644 --- a/doc/arkode/guide/source/Constants.rst +++ b/doc/arkode/guide/source/Constants.rst @@ -80,6 +80,8 @@ contains the ARKODE output constants. +-----------------------------------------------+------------------------------------------------------------+ | :index:`ARKODE_ARK324L2SA_ERK_4_2_3` | Use the ARK-4-2-3 ERK method. | +-----------------------------------------------+------------------------------------------------------------+ + | :index:`ARKODE_SOFRONIOU_SPALETTA_5_3_4` | Use the Sofroniou-Spaletta-5-3-4 ERK method. | + +-----------------------------------------------+------------------------------------------------------------+ | :index:`ARKODE_ZONNEVELD_5_3_4` | Use the Zonneveld-5-3-4 ERK method. | +-----------------------------------------------+------------------------------------------------------------+ | :index:`ARKODE_ARK436L2SA_ERK_6_3_4` | Use the ARK-6-3-4 ERK method. | diff --git a/doc/arkode/guide/source/Introduction.rst b/doc/arkode/guide/source/Introduction.rst index 3b5d5ac711..4fafa4d0bb 100644 --- a/doc/arkode/guide/source/Introduction.rst +++ b/doc/arkode/guide/source/Introduction.rst @@ -153,6 +153,8 @@ Fixed scaling bug in ``SUNMatScaleAddI_Sparse`` for non-square matrices. Fixed missing soversions in some ``SUNLinearSolver`` and ``SUNNonlinearSolver`` CMake targets. +Added the fourth order ERK method ``ARKODE_SOFRONIOU_SPALETTA_5_3_4``. + Changes in v5.6.1 ----------------- diff --git a/doc/shared/figs/arkode/sofroniou_spaletta_erk_stab_region.png b/doc/shared/figs/arkode/sofroniou_spaletta_erk_stab_region.png new file mode 100644 index 0000000000000000000000000000000000000000..78bd107329d9d7efff80a6e3c3b3b301617e2389 GIT binary patch literal 25026 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 = 4; + B->p = 3; + B->A[1][0] = RCONST(2.0) / RCONST(5.0); + B->A[2][0] = RCONST(-3.0) / RCONST(20.0); + B->A[2][1] = RCONST(3.0) / RCONST(4.0); + B->A[3][0] = RCONST(19.0)/RCONST(44.0); + B->A[3][1] = RCONST(-15.0)/RCONST(44.0); + B->A[3][2] = RCONST(10.0)/RCONST(11.0); + B->A[4][0] = RCONST(11.0)/RCONST(72.0); + B->A[4][1] = RCONST(25.0)/RCONST(72.0); + B->A[4][2] = RCONST(25.0)/RCONST(72.0); + B->A[4][3] = RCONST(11.0)/RCONST(72.0); + + B->b[0] = RCONST(11.0)/RCONST(72.0); + B->b[1] = RCONST(25.0)/RCONST(72.0); + B->b[2] = RCONST(25.0)/RCONST(72.0); + B->b[3] = RCONST(11.0)/RCONST(72.0); + + B->d[0] = RCONST(1251515.0)/RCONST(8970912.0); + B->d[1] = RCONST(3710105.0)/RCONST(8970912.0); + B->d[2] = RCONST(2519695.0)/RCONST(8970912.0); + B->d[3] = RCONST(61105.0)/RCONST(8970912.0); + B->d[4] = RCONST(119041.0)/RCONST(747576.0); + + B->c[1] = RCONST(2.0) / RCONST(5.0); + B->c[2] = RCONST(3.0) / RCONST(5.0); + B->c[3] = RCONST(1.0); + B->c[4] = RCONST(1.0); + return B; + }) + ARK_BUTCHER_TABLE(ARKODE_ZONNEVELD_5_3_4, { /* Zonneveld */ ARKodeButcherTable B = ARKodeButcherTable_Alloc(5, SUNTRUE); B->q = 4;