On Saturday 23 January 2010 08:42:14 Garth N. Wells wrote: > Is it correct that behind the scenes that > > U0 = Function(V) > U = Function(V) > U0.vector()[:] = U.vector()[:] > > involves a GenericVector::get(..) call and a GenericVector::set(..) > call? If so, it isn't ideal since it introduces unnecessary new/delete > operations and unnecessary copying of data.
None of GenericVector::get(..) or GenericVector::set(..) are invoked, see __getslice__ and __setslice__ in la_post.i. U0.vector()[:] involves GenericVector::operator =(..) and U.vector()[:] involves GenericVector::copy() However the latter is unnecessary as you instead can do: U0.vector()[:] = U.vector() invoking the assignment operator of U0's vector with U's vector. Johan _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : [email protected] Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp

