← Back to team overview

dolfin team mailing list archive

Re: [HG DOLFIN] Merge.

 

Anders Logg wrote:
On Mon, Dec 03, 2007 at 01:05:51AM +0100, DOLFIN wrote:

changeset:   3430:4fa0790a4fc34d3abac3079644368813a252ac61
parent:      3428:7967082310c3ab03df9d812a6f471dcf988e7b4e
user:        "Johan Jansson <jjan@xxxxxxxxxx>"
date:        Sun Dec 02 20:17:50 2007 +0100
files:       src/kernel/ode/MonoAdaptiveJacobian.cpp src/kernel/ode/MonoAdaptiveNewtonSolver.cpp src/kernel/ode/ODE.cpp src/kernel/ode/TimeSlabJacobian.cpp src/kernel/ode/dolfin/MonoAdaptiveJacobian.h src/kernel/ode/dolfin/MonoAdaptiveNewtonSolver.h src/kernel/ode/dolfin/ODE.h src/kernel/ode/dolfin/TimeSlabJacobian.h src/kernel/parameter/dolfin/DefaultParameters.h
description:
ODE:

Added support for computing the Jacobian as a sparse matrix (only for
mono-adaptive dG(0) and cG(1) so far, and only for PETSc).

Why PETSc? The ODE solvers are tied to uBlas so the vectors won't be
parallel.

How and when should this be used? Does it change anything in the
computation that the ODE solver does, or is it just a utility function
for computing the Jacobian that a user can call?
Ideally the ODE solver should support both uBlas and PETSc, I think the plan should be to transition to a general implementation if we start to use it more for PDE. PETSc has a higher priority than uBlas though, since that's what we use for large computations (due to efficiency and robustness), and since it's parallel while uBlas is not.

The sparse Jacobian matrix is used in the mono-adaptive Newton case when the option "ODE matrix-free jacobian" is set to false. The way I've implemented time-dependent PDE with the ODE solver is that the form for the Jacobian is supplied, and a TimeDependentPDE class provides ODE::J() and ODE::Jmatrix() based on this form.

 Johan



Follow ups

References