# Exponential Integrator for Large Systems of (Stiff) ODEs

```% Exponential Integrator for Large Systems of (Stiff) ODEs.
% ---------------------------------------------------------
%
% This code is an exponential method of order 4 with variable step
% size selection to solve equations of the form y' = f(y), t0 = y(t0).
% A dense output formula to compute the solution at specified
% grid points is also available. The computation of phi(A)*v =
% ((exp(A)-I)/A)*v, where A is the Jacobian matrix of f and v is a
% vector is done by Krylov techniques in the code EXP4 and exactly in
% the code EXP4EX. Therefore EXP4 is the integrator for large systems
% of ordinary differential equations (say, dimension > 100).
%
% For a quick start type 'help bruss2d', 'help laser', 'help heat2d'
%
% The integrators EXP4 and EXP4EX have the same syntax as the MATLAB
% ODE solvers.
%
% For a better description of the codes have a look at:
% Marlis Hochbruck, Christian Lubich, Hubert Selhofer: "Exponential
% Integrators for Large Systems of Differential Equations",
% to appear in SIAM J. Sci. Comp.
%
% The latest versions of the code and the paper are available at
%
%                      https://na.uni-tuebingen.de/
%
% FILES OF THE DISTRIBUTION:
% --------------------------
% The two integrators:
%   * EXP4: The integrator for large problems with Krylov techniques.
%   * EXP4EX: The same integrator as EXP4 without Krylov techniques.
% Utility files of the two integrators:
%   * ERRSTEP: Step size selection based on error estimates.
%   * EXP4_INITIALIZE: Script to initialize the integrators.
%   * H_INIT: Guess an initial step size.
%   * KRYSTEP: Step size selection based on the Krylov process.
%   * KRY_STEP_RED: Helper function for the Krylov processes.
%   * LANCZOS2: Compute the Lanczos approximation.
%   * ODEFUN: Wrapper to evaluate f and df/dy.
%   * PHIM: The function (exp(A)-I)/A for a matrix.
%   * PHI_ARN: The Arnoldi process.
%   * PHI_LAN: The Lanczos process for general A.
%   * PHI_LAN_SYM: The Lanczos process for symmetric A.
%   * PLOTBRUSS2D: Utility to visualize the solution of BRUSS2D.
%   * SC_NORM: Compute a scaled (weighted) norm.
%   * VPRINT: Conditionally print messages.
% Info files:
%   * CHANGE.LOG.EXP4: The changes since the last release.
%   * CONTENTS: This file.
% Examples:
%   * BRUSS2D: Diffusion in 2D.
%   * HEAT2D: Heat equation in 2D.
%   * LASER: Model of an atom-laser-interaction.
%   * ROB1D: Chemical reaction in 1D.
%
% GETTING STARTED:
% ----------------
% The best way is to look at the examples supplied. The easiest
% example is the linear heat equation: HEAT2D. Use this file as a
% BRUSS2D are similar, but introduce a few more features. LASER is the
% most advanced example: It uses an extension to the odefile standard
% where no jacobian matrix has to be explicitly computed. This
% function computes the product of the jacobian matrix times a vector
% using FFTs without ever computing the jacobian itself. This may save
% memory and computation time.
%
% The code EXP4EX is much easier to read and understand than the
% Krylov based EXP4.
% Be brave and follow the help for BRUSS2D and don't forget to look at
% the movie.
%
% ATTENTION:
% This code will NOT run under matlab 4.*.
%
% exp4∂na.uni-tuebingen.de.

% This file is part of the exp4 package available at
% https://na.uni-tuebingen.de.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% file COPYING of the distribution or send email to
% exp4∂na.uni-tuebingen.de.```