Thread Previous • Date Previous • Date Next • Thread Next |
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.
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.
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.
Garth
JohanDisadvantages 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 |