dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #17545
Re: Accessing Function data after mesh refinement
Anders Logg wrote:
> On Fri, Feb 12, 2010 at 05:42:26PM +0000, Garth N. Wells wrote:
>>
>> Anders Logg wrote:
>>> On Fri, Feb 12, 2010 at 04:57:05PM +0100, Anders Logg wrote:
>>>> On Fri, Feb 12, 2010 at 04:23:51PM +0100, Marie Rognes wrote:
>>>>> I'm interesting in accessing the vector of a Function after mesh-refinement.
>>>>> At the moment, I'm getting:
>>>>>
>>>>> RuntimeError: *** Error: You are attempting to access a non-const
>>>>> vector from a sub-Function.
>>>>>
>>>>> Is this inevitable, a bug or a trigger-happy error message?
>>>>>
>>>>> from dolfin import *
>>>>> mesh = UnitSquare(2,2)
>>>>> V = FunctionSpace(mesh, "CG", 1)
>>>>> u = Function(V)
>>>>> mesh.refine()
>>>>> u.vector()
>>>> Looks like a bug. The function is not being refined but the mesh, the
>>>> dofmap and the functionspace is refined. Might be related to the
>>>> recent work on refinement.
>>> It should be fixed now. Someone had commented out register_object in
>>> the Function constructor.
>> I'm not too keen on all this magic. Harish I and have an adaptive solver
>> in which the function spaces are declared inside a loop and it's slowly
>> leaking memory, but I can't figure out why. 'Magic' makes it really hard
>> to figure out what's going on.
>
> That's unfortunate. But the magic is necessary if we should allow
> meshes to be refined. The other option would be to remove
> mesh.refine() and always rely on
>
> new_mesh = refine(mesh)
>
> And then explicitly create the new function spaces and project the
> functions.
>
This is what we're doing.
Garth
> I'm not sure which implications that would have fore Marie's code.
> Marie?
>
> --
> Anders
Follow ups
References