dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #13541
Re: [HG DOLFIN] Remove debug output.
On Thu, May 14, 2009 at 01:26:39PM +0200, Anders Logg wrote:
> On Thu, May 14, 2009 at 10:54:27AM +0100, Garth N. Wells wrote:
> >
> >
> > Anders Logg wrote:
> > > On Thu, May 14, 2009 at 09:15:08AM +0100, Garth N. Wells wrote:
> > >>
> > >> Ola Skavhaug wrote:
> > >>> On Thu, May 14, 2009 at 9:36 AM, Garth N. Wells <gnw20@xxxxxxxxx> wrote:
> > >>>> Something in the recent change sets has broken some demos, for example
> > >>>>
> > >>>> demo/pde/advection-diffusion/cpp
> > >>>>
> > >>>> Garth
> > >>> OK, I think I know what's breaking it. The dofmap gets the wrong
> > >>> global dimension, and we are changing some of the logic there. I will
> > >>> need to dig a little deeper.
> > >>>
> > >> The problem is that the code
> > >>
> > >> // Initialize mesh entities used by dof map
> > >> for (uint d = 0; d <= mesh.topology().dim(); d++)
> > >> if (ufc_dof_map->needs_mesh_entities(d))
> > >> {
> > >> mesh.init(d);
> > >> if (d > 0 && parallel)
> > >> MeshPartitioning::number_entities(const_cast<Mesh&>(mesh), d);
> > >> }
> > >>
> > >> inside DofMap::init(const Mesh& mesh) has been commented out. Mesh
> > >> entities which are required for the dof map are not being initialised.
> > >>
> > >> Can this code just be 'turned' back on?
> > >
> > > The plan is for this to happen in the constructor of FunctionSpace
> > > instead. There are now two different constructors, one const and one
> > > non-const.
> > >
> > > The non-const version should check which entities are needed and if they
> > > are not there compute them. This means calling mesh.init(d) and if
> > > running in parallel also number_entities which computes global indices
> > > for all entities. The global indices are stored in MeshData with keys
> > > "global entity indices 0", "global entity indices 1" etc.
> > >
> > > The const version should check which entities are needed and if they
> > > are not there give an error message.
> > >
> > > This will require modifying the generated DOLFIN wrapper code (in
> > > dolfin_utils) to generate both constructors.
> > >
> > > When this works, we can remove the const-casts for init() in Mesh.
> > >
> >
> > When will it work? At the moment DOLFIN is broken.
> >
> > Garth
>
> I will try to look at it later tonight if not fixed before.
I've been struggling with moving FFC over to using dolfin_utils to
generate the wrapper code (and rewriting parts of the code generation
in FFC in the process) so I haven't had time to fix this. Fixing it
properly depends on moving to the newly updated dolfin_utils.
But try copying the initialization block from the non-const
constructors to the const constructors. It should work since
mesh.init() is still const.
--
Anders
Attachment:
signature.asc
Description: Digital signature
References