Thread Previous • Date Previous • Date Next • Thread Next |
Johan Hake wrote:
On Monday 17 August 2009 14:03:55 Garth N. Wells wrote:Johan Hake wrote:On Monday 17 August 2009 13:33:21 Garth N. Wells wrote:Please send any comments on how a SubFunction should work as I'm going to work on it soon (the Cahn-Hilliard demo runs in parallel(!) ;) with the exception of the extraction of sub-Functions for output). I'm inlined to change a sub function such that for Function u0 = u[0] the Function u0 will only point the vector belonging to u rather than creating a new vector. The advantages are: - No need to copy a vector - DofMap will not require 'is_view' - Possible to do things like u0 = 0.0; u1 += v; u0.interpolate();What would Function::vector() for a SubFunction then return? The original full Vector?Yes.Ok.It would be cool to add a view of the original Vector that only represents the values of the dofs in the SubFunction, without coping data. I fiddled around with this when adding slicing for the PyDOLFIN la interface, but realized that it would be too difficult.This is more or less what I plan to do, although internally. A user wouldn't see the vector, but operations like interpolate would only involve part of the vector.I see. Other direct Vector operations would then operate directly on the shared Vector, like get, set, aso.We could add a class like VectorView(GenericVector& x, DofMap& dof), which could derive from GenericVector, to provide views. It isn't a priority for me though.Yes, I also thought along these lines, however I did not think of doing it using a DofMap, which really is the natural thing. I will also not have possibility to priorities it for now.
On second thought, VectorView(GenericVector& x, std::vector<uint> map& map) would be better. The DofMap could produce the map, std::vector<uint> map = dofmap.view(); Garth
JohanGarthJohanDisadvantages are: - It may be unclear that u0 and u share data. - If u goes out of scope, u0 is will keep the vector belonging to u alive (only an issue if the vector is very large compared to that required by u0). Garth _______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@xxxxxxxxxx http://www.fenics.org/mailman/listinfo/dolfin-dev
Thread Previous • Date Previous • Date Next • Thread Next |