← Back to team overview

dolfin team mailing list archive

Re: Mesh refine

 

On Thu, Feb 03, 2011 at 08:54:10PM +0000, Garth N. Wells wrote:
>
>
> On 03/02/11 20:49, Anders Logg wrote:
> > On Thu, Feb 03, 2011 at 08:26:14PM +0000, Garth N. Wells wrote:
> >> I haven't looked at the new mesh refine code, but I'm not too keen on
> >> the interface. It was neat to do
> >>
> >>   Mesh mesh("lshape.xml.gz");
> >>   mesh = refine(mesh);
> >>
> >> Doing the above, there is no compile time error, but there is a runtime
> >> error. Now we have to do
> >>
> >>   Mesh mesh0("lshape.xml.gz");
> >>   Mesh& mesh = refine(mesh0);
> >
> > The above is not possible. You have to do
> >
>
> ... seems that it is. Look at the NS demo.
>
> >   Mesh mesh0("lshape.xml.gz");
> >   const Mesh& mesh = refine(mesh0);
> >
> > (const since the returned mesh has access to mesh0 which is a const
> > argument of refine)
> >
> > Alternatively, as I've done in the Navier-Stokes demo, you can do
> >
> >   Mesh mesh0("lshape.xml.gz");
> >   refine(mesh0);
> >   Mesh& mesh = mesh0.child(); // no const here
> >
> >> which I think is a bit clumsy. How can I refine a mesh easily if I'm not
> >> interested in keeping a hierarchy?
> >
> > I agree it's more clumsy.
> >
> > I don't know what the best solution is. Perhaps one could have a
> > global parameter "store_hierarchy" which defaults to False in
> > combination with return by value in the refine functions.
> >
> > Assignment would then only work when the depth of the hierarchy is 1
> > (when no hierarchy is stored).
> >
>
> I think that it's essential that the hierarchy can be disregarded. I use
> refine, but I'm not yet interested the hierarchy.
>
> > Another option would be to allow assignment from the returned
> > reference but then make sure that whenever we assign to an object that
> > is a member of a hierarchy, we destroy the (entire) hierarchy. This
> > might be cleaner since we don't need the parameter.
> >
>
> I would like to keep Mesh simple. Could we have something like a
> HierarchicalFoo container that can wrap a Mesh, and store the hierarchy,
> etc?

mesh = refine(mesh)

should now work as before. Assignment clears the hierarchy but child()
and parent() etc is there for those who need it.

I've update all the remaining demos so perhaps the buildbot will now
stay green.

--
Anders



References