← Back to team overview

dolfin team mailing list archive

Re: PDE<->ODE interface

 

> On Fri, Nov 04, 2005 at 09:01:48AM +0100, Johan Hoffman wrote:
>
>> >> (2) Semidiscreization space->time: this would be along the lines what
>> >> Johan is doing now; computing f(u) to use in the ODE solver (for dot
>> u =
>> >> f(u)). We would then still declare a space element:
>> >>
>> >> space_discretization = FiniteElement("Lagrange", "tetrahedron", 1)
>> >>
>> >> but the time derivative Dt(u) would not be discretized by FFC, but
>> >> instead
>> >> would an output file for the ODE solver in DOLFIN be created that
>> >> contain
>> >> the evaluation of f(u).
>> >
>> > This is the most convenient. The ODE solver wants an ODE.
>>
>> I understand that this is the most convenient for the ODE solver. I'm
>> just
>> saying that one approach would be to able to generate FFC output
>> suitable
>> for both the ODE solver (2) and the PDE solver (1) (= solving system of
>> algebraic equations). We should probably not retire the PDE
>> functionality
>> until we know that the ODE solver is capable to also solve all PDE
>> problems efficiently.
>
> We just need to allow the specification of a time derivative in the
> form. If none is specified, we generate PDE code as usual, and if the
> form contains a time derivative, we generate code suitable for the ODE
> solver.

Yes, that would be the do-nothing option for the PDE case; the way it is
today demands that you as a user need to semi-discretize in time by
yourself. But I think it would be a nice feature of FFC to also
automatically discretize the PDE in time. It is not only about how to
write the time derivative; the other terms are changed as well.

Heat equation discretized by Crank-Nicolson:

a = v*u*dx + k*0.5*dot(grad(v), grad(u))*dx
L = v*u0*dx - k*0.5*dot(grad(v), grad(u))*dx + v*0.5*(f+f0)*dx

compared to

a = v*u.dt()*dx + k*dot(grad(v), grad(u))*dx
L = v*f*dx

I'm not saying this necessarily should be highest priority, but I think it
is a nice feature that generalizes the automation also to time dependent
PDEs.

By doing (2), both space and time discretization would be automated for
use in the ODE solver. What I'm suggesting is to also include (1) as an
automation of time and space discretization for use in the PDE solver.

I can understand if you are not too motivated of working on this, since
it may be considered to be fairly orthogonal to the FFC - ODE solver
coupling (2). But if there is interest of the (1) functionality, someone
else might be interested in doing the job.


>> > I think we should be able to get this working with alternative (2),
>> > but we need to think about the details.
>> >
>> > /Anders
>>
>> I think alterntive (1) is also worth considering. Then we would be able
>> to
>> write a PDE closer to the mathematical formulation in the form-file.
>
> I think semi-discretization in space ("method of lines") is also
> pretty close to the mathematical formulation. At least it's the way I
> always write it.
>
> /Anders
>

I'm not comparing the 'A(u)=f' vs. 'u_t = f(u)' ways to write the
equation; what I'm saing is that both formulations look much better than a
semi-discretization of A(u)=f.

/Johan






Follow ups

References