[Trilinos-Users] Tpetra::Vector: elementwise operations

Williams, Alan B william at sandia.gov
Mon Jan 25 08:29:24 MST 2010

> thinking about Tpetra vectors, I was asking myself if there's any
> better
> way to do elementwise operations (e.g., sqrt(), conj(),...) than what I
> do
> at the moment:
> ===================== *snip* =====================
> Teuchos::ArrayRCP<const double> inVectorView = inVector.get1dView();
> for (int k=0; k<NumLocalElements; k++ ) {
>    int globalIndex = Map->getGlobalElement(k);
>    outVector->replaceLocalValue( k, 0, inVectorView[globalIndex] );
> }
> ===================== *snap* =====================
> As far as I can see, there's no such method as getLocalValue{s}(). Am I
> right?

It looks like you're assuming that inVector and outVector have the same Map. However, I don't think you want to use a globalIndex to access inVectorView.

I'm not sure why you need a 'getLocalValues' method. That's what get1dView is (or get1dCopy, depending on your needs). You can use get1dViewNonConst to get the view of outVector, and then your inner statement is simply this:
  outVectorView[k] = inVectorView[k];

(assuming vectors have the same Map etc)

More information about the Trilinos-Users mailing list