BACOLRI,
BACOLI, BACOLR, BACOL

A
Family of Error Control Software

Packages for the Numerical Solution of

Systems of One-Dimensional

Time-Dependent
Partial Differential Equations

Background:

·
**Error
control** is an essential element of all high-quality numerical software.
Error control software returns a numerical solution for which an associated
high-quality error estimate satisfies a user-prescribed tolerance. Such
software has two important advantages:

1. the user can have reasonable confidence that the numerical solution has an error that is consistent with the requested tolerance, and

2. the cost of the computation will be consistent with the requested tolerance.

· This website provides access to a family of software packages for the error controlled numerical solution of systems of 1D Partial Differential Equations (PDEs) of the form

u_{t}(x,t) =
f(x, t, u(x,t), u_{x}(x,t), u_{xx}(x,t)), a ≤ x ≤ b,
t ≥ t_{0},

with initial conditions of the form

u(x,
t) = u_{0}(x), a ≤ x ≤ b,

and with boundary conditions of the form

b_{L}(t, u(a,t), u_{x}(a,t)) = 0, b_{R}(t,
u(b,t), u_{x}(b,t)) = 0, t ≥
t_{0}.

Examples od PDEs of this form are provided within the software drivers given below.

· The software family (which we call the BACOL family of solvers) available on this website shares the common trait that for each member of the family, the spatial discretization of the PDE is based on the use of Gaussian (also known as Orthogonal) spline collocation. The numerical solution is represented in terms of a B-spline basis with unknown time-dependent coefficients. The collocation process requires that the numerical solution satisfy the PDE at certain points in [a,b] known as collocation points. The application of the collocation process to the PDE yields a set of time-dependent ordinary differential equations, which together with the boundary conditions, represents a system of Differential Algebraic Equations (DAEs), whose solution gives the B-spline coefficients. This DAE system is solved using a DAE solver, either DASSL [Brenan, Campbell, Petzold, 1996] or RADAU5 [Hairer, Wanner, 1996].

·
The BACOL family of solvers follows from two
earlier B-spline Gaussian collocation solvers, EPDCOL [Keast,
Muir, 1991], and PDECOL [Madsen, Sincovec, 1979]. **However, neither of these older packages
provides control of the spatial error.** (The EPDCOL package is archived
below on this website.)

·
**The BACOL
family of solvers feature adaptive control of the temporal and spatial errors. **

o
The family consists of the solvers

·
**BACOL **[Wang,
Keast, Muir, 2004a, 2004b] ,

·
**BACOLR **[Wang,
Keast, Muir, 2008],

·
**BACOLI **[Pew,
Li, Muir, 2016], and** **

·
**BACOLRI **[Pew, Murtha, Tannahill, Muir, 2018, 2019]

o
**Control
of an estimate of the** **temporal error**
in these solvers is provided through either DASSL or RADAU5; these solvers
compute the time-dependent B-spline coefficients using adaptive error control
algorithms. BACOL and BACOLI use DASSL while BACOLR and BACOLRI use RADAU5.

o
**Control
of an estimate of** **the spatial error**
is implemented in BACOL and BACOLR through the computation of two separate
collocation solutions (one based on B-splines of degree p and the other based
on B-splines of degree p+1, for a given input integer p). The difference
between these two solutions provides the spatial error estimate which is used
to adapt the spatial mesh so that the error estimate satisfies a user-provided
tolerance on each timestep.

o BACOLI and BACOLRI avoid the computation of two collocation solutions by replacing one of them with a low cost interpolant which is then used to obtain the spatial error estimate. BACOLI and BACOLRI provide two options: (i) the superconvergent interpolant (SCI) scheme [Arsenault, Smith, Muir, 2009] which replaces the degree p+1 collocation solution, or (ii) the low order interpolant (LOI) scheme [Arsenault, Smith, Muir, Pew, 2012] which replaces the degree p collocation solution.

SOFTWARE
(newest to oldest):

· **BACOLRI
(2019)**

· BACOLRI was developed through a modification of BACOLR and employs some elements (the interpolation-based error estimation schemes) originally developed for BACOLI.

· The primary modification to BACOLR involved removing the computation of the second numerical solution based on B-splines of degree p+1 and replacing it with an option for computing one of the two interpolants (the SCI or the LOI) mentioned above.

· The Technical Reports [Pew, Murtha, Tannahill, Muir, 2018, 2019] describe this project.

·
**The
BACOLRI Fortran 95 software**:

(i) The
solver (**download all four of these**):

· A Fortran 95 interface: bacolri95.f95,

·
BACOLRI
(Fortran 77) source code: bacolri.f,

·
Auxiliary (Fortran 77) source code:
bacolri-aux.f

· Auxiliary (Fortran 95) source code: d1mach_i1mach.f95

(ii) Generic driver (main) programs (Fortran 95) (**download one of these**):

(iii) Problem based routines (Fortran 77) (**download one of these**):

· A One Layer Burger’s Equation: burg1.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 139)

· A Two Layer Burger’s Equation: burg2.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 135)

· The Cahn Allen equation: cahn_allen.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 141)

· A Reaction-Convection-Diffusion System: rcdsys.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 144)

· A nonlinear problem with a steady state: steady.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 143)

· Simple Example: sincmads.f (Madsen and Sincovec, ACM Trans. Math. Soft., 1979: Page 340)

· Nonlinear Schrodinger system: schrod.f ([Pew, Murtha, Tannahill, Muir, 2019])

(iv)** Make sure that the value for npde set in the driver from (ii) is the same as the number
of PDEs in the problem chosen from (iii).**

(v) A makefile that may be helpful in compiling and running the above software is available here.

·
**The
BACOLRI Fortran 77 software**:

(i) The
solver (**download all three of these**):

·
BACOLRI
(Fortran 77) source code: bacolri.f,

·
Auxiliary (Fortran 77) source code:
bacolri-aux.f

· Auxiliary (Fortran 77) source code: d1mach_i1mach.f

(ii) Generic driver (main) programs (Fortran 77) **(download one of these)**:

(iii) Problem based routines (Fortran 77) (**download one of these**):

· A One Layer Burger’s Equation: burg1.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 139)

· A Two Layer Burger’s Equation: burg2.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 135)

· The Cahn Allen equation: cahn_allen.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 141)

· A Reaction-Convection-Diffusion System: rcdsys.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 144)

· A nonlinear problem with a steady state: steady.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 143)

· Simple Example: sincmads.f (Madsen and Sincovec, ACM Trans. Math. Soft., 1979: Page 340)

· Nonlinear Schrodinger system: schrod.f ([Pew, Murtha, Tannahill, Muir, 2019])

(iv)** Make sure that the value for npde set in the driver from (ii) is the same as the number
of PDEs in the problem chosen from (iii).**

· **BACOLI
(2019)**

·
BACOLI was developed through a major
modification of BACOL to remove the computation of the second numerical
solution based on B-splines of degree p+1 and replace it with an option for
computing one of the two interpolants (the SCI or the LOI) mentioned above.

·
The SCI and LOI schemes are described in the papers
[Arsenault, Smith, Muir, 2009], [Arsenault, Smith, Muir, Pew 2012]. See also
the Technical Report [Arsenault, Smith, Muir, Keast, 2011].

·
The BACOLI software is described in the paper
[Pew, Li, Muir, 2016]. See also the Technical Report Pew, Li, Muir, 2013.

·
**The 2016
BACOLI software is available at ****http://calgo.acm.org/**** as Algorithm 962. **

· A Performance Analysis of the BACOL and BACOLI packages is reported in the technical report Pew, Tannahill, Muir 2018. The software employed to conduct the numerical experiments reported in that report is available here.

·
**The
BACOLI 2019 Fortran 95 software** (a minor upgrade of the 2016 BACOLI
package):

(i) The
solver **(download all four of these)**:

· A Fortran 95 interface: bacoli95.f95,

·
BACOLI
(Fortran 77) source code: bacoli.f,

·
Auxiliary (Fortran 77) source code:
bacoli-aux.f

· Auxiliary (Fortran 95) source code: d1mach_i1mach.f95

(ii) Generic driver (main) programs (Fortran 95) **(download one of these)**:

(iii) Problem based routines
(Fortran 77) **(download one of these)**:

o A One Layer Burger’s Equation: burg1.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 139)

o A Two Layer Burger’s Equation: burg2.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 135)

o The Cahn Allen equation: cahn_allen.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 141)

o A Reaction-Convection-Diffusion System: rcdsys.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 144)

o A nonlinear problem with a steady state: steady.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 143)

o Simple Example: sincmads.f (Madsen and Sincovec, ACM Trans. Math. Soft., 1979: Page 340)

o
__Note:
Make sure that the number of PDEs (npdes) specified
in (ii) and (iii) is the same__

·
**The
BACOLI 2019 Fortran 77 software:**

(i)
The solver **(download all three of these)**:

·
BACOLI
(Fortran 77) source code: bacoli.f,

· Auxiliary (Fortran 77) source code: bacoli-aux.f

· Auxiliary Fortran 77) source code: d1mach_i1mach.f

(ii) Generic driver (main) programs (Fortran 77) **(download one of these)**:

(iii) The drivers can be run with any of the
following problem based routines (Fortran 77) **(download one of these)**:

· A One Layer Burger’s Equation: burg1.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 139)

· A Two Layer Burger’s Equation: burg2.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 135)

· The Cahn Allen equation: cahn_allen.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 141)

· A Reaction-Convection-Diffusion System: rcdsys.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 144)

· A nonlinear problem with a steady state: steady.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 143)

·
Simple Example:
sincmads.f (Madsen and Sincovec,
ACM Trans. Math. Soft., 1979: Page 340)

·
__Note:
Make sure that the number of PDEs (npdes) specified
in (ii) and (iii) is the same__

· **BACOLR
(2019)**

o
The original BACOLR software (in Fortran 77) was
developed in 2008 by Rong Wang, Pat Keast, and Paul
Muir [Wang, Keast, Muir, 2008] and is available at **http://calgo.acm.org/**** **as Algorithm 874.

o
** A new
release of the BACOLR software (in Fortran 77)** (a minor upgrade of the
2008 BACOLR package):

o

(i) The BACOL source code: bacolr.f

(ii) Generic driver (main) programs: driver_curve-bac.f, driver_gridmesh-bac.f, driver_trimesh-bac.f

(iii) The drivers can be run with any of the following problem based routines:

· A One Layer Burger’s Equation: burg1.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 139)

· A Two Layer Burger’s Equation: burg2.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 135)

· The Cahn Allen equation: Cahn_Allen.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 141)

· A Reaction-Convection-Diffusion System: RCDsys.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 144)

· Simple Example: sincmads.f (Madsen and Sincovec, ACM Trans. Math. Soft., 1979: Page 340)

· **BACOL (2013)**

o The original BACOL software (in Fortran 77) was developed in 2004 by Rong Wang, Pat Keast, and Paul Muir [Wang, Keast, Muir, 2004a, 2004b].

o
** A new
release of the BACOL software (in Fortran 77)** (a minor upgrade of the
2004 BACOL package):

(i) The BACOL source code: bacol.f

(ii) Generic driver (main) programs: driver_curve-bac.f, driver_gridmesh-bac.f, driver_trimesh-bac.f

(iii) The drivers can be run with any of the following problem based routines:

· A One Layer Burger’s Equation: burg1.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 139)

· A Two Layer Burger’s Equation: burg2.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 135)

· The Cahn Allen equation: Cahn_Allen.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 141)

· A Reaction-Convection-Diffusion System: RCDsys.f (Wang, Keast, Muir, J. Comp. Appl. Math., 2004: Page 144)

· Simple Example: sincmads.f (Madsen and Sincovec, ACM Trans. Math. Soft., 1979: Page 340)

· **EPDCOL
(1991)**

o The EPDCOL software [Keast, Muir, 1991], a modification of the PDECOL package [Madsen, Sincovec, 1979] , was published as Algorithm 688 of the Collected Algorithms of the ACM http://calgo.acm.org/

o Here we provide a copy of the EPDCOL (Fortran 77) software:

(i) The EPDCOL source code, pdecoldp.f **(download
this).**

(ii) Example driver #1, ex1drvdp.f,
Example driver #2, ex2drvdp.f **(download one of these).**

(iii) The original README file.

· **REFERENCES**

[Arsenault, Smith, Muir, 2009] T. Arsenault, T. Smith, and P.H. Muir. Superconvergent interpolants for efficient spatial error estimation in 1D PDE collocation solvers. Can. Appl. Math. Q., 17(3):409–431, 2009.

[Arsenault,
Smith, Muir, Pew, 2012] T.
Arsenault, T. Smith, P.H. Muir, J. Pew, Asymptotically Correct
Interpolation-based Spatial Error Estimation for 1D PDE Solvers, Can. Appl.
Math. Q., 20(3):307–328,
2012.

[Arsenault,
Smith, Muir, Keast, 2011], Tom Arsenault,
Tristan Smith, Paul Muir, and Pat Keast, Efficient
Interpolation-based Error Estimation for 1D Time-Dependent PDE Collocation
Codes, Saint Mary’s University,
Department of Mathematics and Computing Science, Technical Report 2011_001,
2011.

[Brenan, Campbell, Petzold, 1996] K.E. Brenan, S.L. Campbell, and L.R. Petzold. Numerical solution of initial-value problems in differential-algebraic equations, volume 14 of Classics in Applied Mathematics. Society for Industrial and Applied Mathematics (SIAM), Philadelphia, PA, 1996.

[Hairer, Wanner, 1996] E. Hairer, G. Wanner: Solving
ordinary differential equations. II, volume 14 of Springer series in computational
mathematics, 2nd edn. Springer, Berlin, 1996.

[Keast, Muir, 1991] P. Keast and
P.H. Muir, Algorithm
688. EPDCOL: A more efficient PDECOL code.

ACM Trans.
Math. Softw. 17, 153–166, 1991.

[Madsen, Sincovec, 1979] N.K. Madsen and R.F. Sincovec, Algorithm
540. PDECOL, general collocation software for partial differential equations.
ACM Trans. Math. Softw. 5, 326–351, 1979.

[Pew, Li,
Muir, 2013] J. Pew, Z. Li, P.H. Muir, A Computational Study of the Efficiency
of Collocation Software for 1D Parabolic PDEs with Interpolation-based Spatial
Error Estimation, Saint Mary’s University, Department of Mathematics and
Computing Science, Technical Report 2013_001, 2013.

[Pew, Li,
Muir, 2016] J. Pew, Z. Li, P.H. Muir, *Algorithm
962: BACOLI: B-spline Adaptive Collocation Software for PDEs with
Interpolation-based Spatial Error Control*, ACM Trans. on Math. Softw., 42, 3, Article 25, 2016.

[Pew,
Murtha, Tannahill, Muir, 2018] Jack
Pew, Tom Murtha, Connor Tannahill, Paul Muir, Error Control B-spline
Gaussian Collocation/Runge-Kutta PDE Software with
Interpolation-based Spatial Error Estimation, Saint Mary’s University,
Department of Mathematics and Computing Science, Technical Report 2018_002,
2018.

[Pew,
Murtha, Tannahill, Muir, 2019] Jack Pew, Tom Murtha,
Connor Tannahill, Paul Muir, Performance Analysis of
Interpolation-based Spatial Error Control B-spline Gaussian Collocation PDE
Software: BDF Time Integration vs. IRK Time Integration, Saint Mary’s
University, Department of Mathematics and Computing Science, Technical Report
2019_001, 2019.

[Wang, Keast, Muir, 2004a] R. Wang, P. Keast, and P.H. Muir. BACOL: B-spline Adaptive COL-location software for 1-D parabolic PDEs. ACM Trans. Math. Software, 30(4):454–470, 2004.

[Wang, Keast, Muir, 2004b] R. Wang, P. Keast, and P.H. Muir. A high-order global spatially adaptive collocation method for 1-D parabolic PDEs. Appl. Numer. Math., 50(2):239–260, 2004.

[Wang, Keast, Muir, 2004c] R. Wang, P. Keast, and P.H. Muir. A comparison of adaptive software for 1D parabolic PDEs. J. Comput. Appl. Math., 169(1):127–150, 2004.

[Wang, Keast, Muir, 2008] R. Wang, P. Keast, and P.H. Muir. Algorithm 874: BACOLR—spatial and temporal error control software for PDEs based on high-order adaptive collocation. ACM Trans. Math. Software, 34(3): Article No. 15, 2008.