← Back to team overview

dolfin team mailing list archive

Re: Recent changes

 

On Fri, May 15, 2009 at 1:37 PM, Anders Logg <logg@xxxxxxxxx> wrote:
> There have been some big changes to the code lately. Here's a summary:
>
> 1. We now use the wrappers module in dolfin_utils to generate the
> DOLFIN wrapper code (in both FFC and SFC). This module generates
> slightly different code to the old FFC wrappers. Most notably,
> typedefs are used to avoid code duplication and classes/namespaces are
> now nested. For application code, that means one must change from
>
>  PrefixBilinearForm
>  PrefixLinearForm
>  PrefixTestSpace
>  PrefixTrialSpace
> to
>
>  Prefix::BilinearForm
>  Prefix::LinearForm
>  Prefix::BilinearForm::TestSpace
>  Prefix::BilinearForm::TrialSpace
>
> etc.
>
> If all test and trial spaces are equal, then a common class named
>
>  Prefix::FunctionSpace
>
> will be created (a typedef).
>
> Some of you may remember that we've had this interface before, but
> then had to remove it due to problems with SWIG. Now that SWIG just
> looks at the pure UFC code it's not a problem anymore.

Also note that forms and function spaces for coefficients are available by name:

a = c*u*v*dx
L = f*v*dx
->
Prefix::Form_a
Prefix::Form_L
Prefix::Form_a::CoefficientSpace_c
Prefix::Form_a::CoefficientSpace_L

and coefficients can be set easily using

Prefix::CoefficientSet coeffs;
coeffs.c = my_function_c;
coeffs.f = my_function_f;
Prefix::Form_a a(V, V, coeffs);
Prefix::Form_L L(V, coeffs);

which avoids duplication of  lines like "my_form.f = my_function_f;"
for coefficients shared by multiple forms.


> 2. Initialization of mesh entities now happens in the constructor of
> DofMap. The initialization happens automitcally only if the new
> non-const (wrt Mesh) constructor of FunctionSpace is used. If the
> const version is used, then an error message is given. So if you solve
> something with P2 elements and need the edges, these must either first
> be generated using mesh.init(1) or the non-const constructor must be
> used. Most demos should remain unchanged.
>
> 3. When running in parallel not only will the entities be generated,
> but they will also be numbered globally. So all mesh entities have a
> unique global index accessible in the data section of a mesh (named
> "global entity indices %d"). The global dof map should also be
> computed correctly now but I haven't checked. This means we may in
> principle assemble in parallel now. But probably not in
> practice... :-)


Great :)

Martin


Follow ups

References