Referee's Report on the manuscript:   
"SUNDIALS: Suite of Nonlinear and Di erential/Algebraic Equation Solvers", 
by Alan C. Hindmarsh, Peter N. Brown, Keith E. Grant, Steven L. Lee,
Radu Serban, Dan E. Shumaker, and Carol S. Woodward, 2003, 
submitted to the ACM Transactions on Mathematical Software. 

General Comments on the Manuscript 

This paper provides a comprehensive description of a large software
modification/development effort involving three codes, CVODE for
initial value ordinary di erential equations, KINSOL, for nonlinear
algebraic equations, and IDA for systems of differential algebraic
equations, which are collectively referred to as the SUNDIAL suite. I
found it very enjoyable to read a paper where lots of detail regarding
the development of the software and in particular the underlying
heuristics employed within the software is provided. The paper
describes high quality software and is useful in directing attention
to this important project.  I would therefore recommend in favor of
its publication.

(I) One point that arises in several places in the paper is that it is
not clear in the paper if each code is written so that it can be run
in serial or parallel mode or that there are separate serial and
parallel versions of each code. There is a comment on Page 2 which
indicates that CVODE is a single code that includes both options but I
am not sure about the other two codes.  Throughout the paper there are
references to serial and parallel versions of the codes.  Also it
would be useful to include a brief comment on how the parallel mode
would work.  To my knowledge ANSI standard C does not include parallel
language features so it seems unclear what is meant by the phrase
suitable for ... parallel machine environments in the abstract.  I
assume that the authors mean that software is written in a highly
modular fashion that means that it can easily be customized to run e
ciently in a parallel environment based on a specific parallelization
facility such as Open MP or MPI, for example.

(II) A second point is that it would be useful to provide a paragraph
commenting on the numerical performance for each of the SUNDIAL codes
compared with other available codes, with appropriate references.

Detailed Comments on the Manuscript

Page 2, Line 8: Add an appropriate reference after "GMRES iteration".  

Page 2, Line 17: After the sentence ending with "rewrite solvers in C",
I think it would be helpful to the reader to explain why the desire
for a parallel implementation forces one to choose the C language;
this would seem to imply that one cannot have a parallel
implementation unless it is written in C. Perhaps there are additional
reasons one can mention for providing a C implementation. 

Page 2, Lines 21-24: I would suggest a slight rewriting for
clarification as I am not sure about the serial/parallel capabilities
of the software packages mentioned here. It is quite clear the PVODE
and the original CVODE have been merged into one code with both serial
and parallel capabilities called CVODE. Is it also the case that NKSOL
and DASPK have been rewritten as the new codes KINSOL and IDA,
respectively, where the new codes are written in C with both serial
and parallel capabilities? Or is it the case that the new codes are
simply serial C codes?

Page 2, Lines 27-28: These lines appear to say that all three codes,
CVODE, KINSOL, and IDA, have been augmented to include sensitivity
analysis capabilities. However, at the bottom of this same page the
text appears to indicate that only CVODE has been transformed into
CVODES, a new version with this capability, while for the other two
codes, this capability is planned. It is clear from section 4 that
only CVODES is currently available so it would be useful to clarify
the statement in the introduction. Will the three codes CVODES,
KINSOLS, and IDAS replace the CVODE, KINSOL, and IDA codes?

Page 3, Lines 25-27: Add a reference to further reading after the
brief explanation of stiffness given here.

Page 3, Lines 32-33: I would suggest changing "one of two multistep
methods" to "one of two families of multistep formulas".

Page 4, Line 5 and 8: The notation, $y_{n(m+1)}$, has not been defined.  

Page 4, Line 12: Perhaps the phrase "available history data" could be
explained a bit; this may be more detail than you want to include so
instead perhaps you could refer to "solution information associated
with previous steps"?

Page 4, Lines 14-15: If the current CVODE runs in both sequential and
parallel environments, i.e., there is no longer a separate version for
sequential mode and one for parallel mode. Thus on page 4, I think it
1 would be better to refer to "serial mode only" rather than "serial
version only", here and elsewhere in the paper.

Page 4, Line 16-17: Add references directing the reader to additional
descriptions for the diagonal approximate Jacobian solver and SPGMR.

Page 4, Line 19: Replace "a preconditioned GMRES" with "the SPGMR"

Page 4, Line 25: Add an equation showing the reader in more detail
what the $\|\cdot\|_{WRMS}$ norm looks like.

Page 4, Line 28: In equation (4), define RTOL, ATOLi, and $y^i$.

Page 4, Line 29: Replace "a vector whose norm" with "a vector whose $i$th
component is an error-like quantity associated with $y^i$ which has a 
$\|\cdot\|_{WRMS}$ norm of".

Page 4, Line -1: Does "steps" here mean "time steps" rather than "iterations"?

Page 5, Line 1: I suggest replacing the current text with "the value
of $\gamma$ from the last update, which we will call $\bar{\gamma}$,
and the current $\gamma$ value, which we will call $\gamma$, satisfy 
$|\gamma/\bar{gamma} - 1| > 0.3 $"

Page 5, Line 2: Explain what is meant by a "non-fatal convergence failure"?

Page 5, Line -14: Change "diverged" to "to have failed".

Page 5, Lines 15-16: Change "final computed value" to "final iterate
computed". Also define $y_{n(0)}$ and $\epsilon$.

Page 5, Line -14,-15: Replace "convergence fails with J or P current" by
"the iteration fails to converge with a current J or P".

Page 5, Line -9: Define the "local error test constant".

Page 6, Line 3: What is $\sigma_ 0$?  

Page 6, Line 6: Provide a reference for the CPR algorithm.

Page 6, Line 23: After "$ \leq 1$" add "(where we recall that we are
using the $\|\cdot\|_{WRMS}$ norm)".

Page 6, Line 23-26: I would suggest a rewrite of the sentence beginning 
with "Using the above, ..."  to improve its clarity. Is $C'$ known?

Page 6, Lines 33-34: Please clarify the wording: "limited above to" and
"limited below to".

Page 9, Line 18: Since the reader will not see the details of the
preconditioning schemes until Section 3, I would recommend deleting
the sentence beginning with "In this case, ...".

Page 9, Line -12: Give a brief indication of what criterion is used to
decide when one is close to the solution.

Page 10, Line -11: Add a reference after "so-called semi-explicit
index-one systems".

Page 11, Line 9: It would be helpful to the reader to point out that
this equation is a special case of the more general equation (which
could have a number) on Page 3.

Page 11, Lines 27-28: Until the reader has seen Section 3, I think it
is better to defer the details of the preconditioning so I would
recommend leaving out the "so that GMRES is applied ..."  part of this
sentence. Also I do not understand the footnote.

Page 12, Lines 22, 23: Change "$S = 20$" to "20" and "$S = 100$" to "100".

Page 13, Line 15: At this point in this section there is mention of "an
associated polynomial interpolant".  I think it would be helpful to
mention the existence of this interpolant right after the BDF methods
are introduced in equation (10).

Page 14, Line -3: Add a few sentences at the beginning of this section
to introduce the basic idea of a Krylov method with a preconditioner.

Page 17, Lines -4,-3: I would suggest replacing "dimension of the array
of model parameters" with "number of model parameters" and "dimension of
the array of outputs" with "number of output functionals".

Page 22, First Paragraph: This material motivating the rewriting of
the Fortran codes in C is very helpful, a nd I think should be moved
to the introduction.

Page 22, Lines 17-21: The discussion of the NVECTOR implementation and
NVECTOR structure are not clear.  Reference to Section 5.2 with an
example provided there might help.

Page 26, Table I: On Page 12 the maximum number of Newton iterations
for IDA is 4 while in this table it is 3.

Pages 29-30: Some of the journal names are given in abbreviated form
in some places and in full form in other places.
