← Back to team overview

dolfin team mailing list archive

Recent changes

 

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.

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... :-)

-- 
Anders

Attachment: signature.asc
Description: Digital signature


Follow ups