← Back to team overview

dolfin team mailing list archive

Re: Simplified solution process

 

I've added the class NonlinearPDE in src/kernel/nls, which has a very
similar interface to the class PDE, and has similar functionality for
solving. 

I think that Anders' suggestion to split-up PDE in the same fashion as
Function is good a good idea. I'm working in it now - at this stage for
linear and nonlinear PDE's. 

Garth

On Fri, 2006-02-10 at 14:14 -0600, Anders Logg wrote:
> The new PDE class is now in place and takes care of some of the
> standard stuff you need to do to solve a static linear PDE: define
> vectors and matrices, assemble bilinear and linear forms, solve linear
> system and create a Function from the degrees of freedom.
> 
> Here's the new version of the Poisson demo:
>   
>   // Set up problem
>   UnitSquare mesh(16, 16);
>   Poisson::BilinearForm a;
>   Poisson::LinearForm L(f);
>   PDE pde(a, L, mesh, bc);
> 
>   // Solve
>   Function u = pde.solve();
> 
>   // Save function to file
>   File file("poisson.pvd");
>   file << u;
> 
> This works for all linear static PDEs. I imagine that we can use the
> PDE class to automate the solution of static nonlinear PDEs,
> time-dependent etc. Depending on the arguments to the constructor
> (among other things), the PDE class would know what to do to solve the
> system. A first step would be to integrate Garth's Newton-solver with
> the PDE class. Perhaps we need to partition it in the same way as the
> Function class (GenericPDE, StaticLinearPDE etc) so it's easy to
> plugin a new solver.
> 
> Note that as an alternative to
> 
>   Function u = pde.solve();
> 
> one can do
> 
>   Function u;
>   pde.solve(u);
> 
> which is slightly more efficient (avoids one copy of the vector of
> degrees of freedom).
> 
> The PDE class i parametrized and has one parameter "solver", so you
> can do either
> 
>   pde.set("solver", "direct"); // default option
> 
> or
> 
>   pde.set("solver", "iterative");
> 
> /Anders
> 
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/cgi-bin/mailman/listinfo/dolfin-dev




Follow ups

References