14 Jul 16:50
Re: faceVariable missing copy method
From: Jonathan Guyer <guyer@...>
Subject: Re: faceVariable missing copy method
Newsgroups: gmane.comp.python.fipy
Date: 2008-07-14 14:50:06 GMT
Subject: Re: faceVariable missing copy method
Newsgroups: gmane.comp.python.fipy
Date: 2008-07-14 14:50:06 GMT
On Jul 11, 2008, at 8:11 PM, Tony S Yu wrote: > I think `faceVariable` may be missing a `copy` method. I've included > a patch below, which is basically a copy of `cellVariable`'s `copy` > method (minus it's `hasOld` attribute and changing the rename from + > '_old' to + '_copy'). We've never needed it, which is why it never got written, but I don't see that it's harmful in anyway. > Also, the patch includes a fix for matplotlib2DViewer.py, which has > changed since I originally submitted the patch. Thanks for that. Both of these are committed as r2670. > In case you're curious about a use case: I wanted to set *almost* > all of the exterior faces to a no flux boundary condition. So I > naturally I tried > > >>> no_flux_faces = mesh.getExteriorFaces() > >>> no_flux_faces.setValue(array[False], where=faces_with_other_BC) > > But it turns out the above commands change the faces that the mesh > recognizes as exterior I would have implemented this as >>> no_flux_faces = mesh.getExteriorFaces() & ~faces_with_other_BC > (`getExteriorFaces` doesn't automatically copy; for performance > reasons, maybe?). Yes. I have it on my to-do list to re-implement a great many things like `getExteriorFaces()` with read-only descriptors. > But, `faceVariable`'s `copy` method defaults to `Variable`'s `copy` > method. As a result, the copied variable doesn't have a `mesh` > attribute. That's certainly no good.
RSS Feed