[petsc-users] question about arbitrary eigenvector selection in SLEPC

Giacomo Mulas gmulas at oa-cagliari.inaf.it
Thu May 29 10:58:19 CDT 2014


On Thu, 29 May 2014, Matthew Knepley wrote:

> There might be an easier way to do this:
>   PetscScalar val = 0.0, gval;
> 
>   VecGetOwnershipRange(xr, &low, &high);
>   if ((myindex >= low) && (myindex < high)) {
>     VecGetArray(localx1,&a);
>     val = a[myindex-low];
>     VecRestoreArray(localx1, &a);
>   }
>   MPI_Allreduce(&val, &gval, 1, MPIU_SCALAR, MPI_SUM, PETSC_COMM_WORLD);
> 
> Now everyone has the value at myindex.

brilliant, why didn't I think of this? Only, I guess you were
copying/pasting and some variable names slipped, namely localx instead of
xr.  Should it be

  PetscScalar val = 0.0, gval;
   PetscScalar *a;

  VecGetOwnershipRange(xr, &low, &high);
  if ((myindex >= low) && (myindex < high)) {
    VecGetArray(xr,&a);
    val = a[myindex-low]; 
    VecRestoreArray(xr, &a);
  }
  MPI_Allreduce(&val, &gval, 1, MPIU_SCALAR, MPI_SUM, PETSC_COMM_WORLD);
   *rr = gval*gval;
   *ri = 0;

?

Thanks!
Giacomo

-- 
_________________________________________________________________

Giacomo Mulas <gmulas at oa-cagliari.inaf.it>
_________________________________________________________________

INAF - Osservatorio Astronomico di Cagliari
via della scienza 5 - 09047 Selargius (CA)

tel.   +39 070 71180244
mob. : +39 329  6603810
_________________________________________________________________

"When the storms are raging around you, stay right where you are"
                          (Freddy Mercury)
_________________________________________________________________


More information about the petsc-users mailing list