[petsc-users] sqrt for a PetscScalar
Matthew Knepley
knepley at gmail.com
Wed Apr 7 06:32:38 CDT 2010
Yes, but do you understand what you mean by
1/sqrt(c)
where c is complex? If so, cast 1 to complex.
Matt
On Wed, Apr 7, 2010 at 1:03 PM, Umut Tabak <u.tabak at tudelft.nl> wrote:
> Matthew Knepley wrote:
>
>>
>>
>> My guess is that you want
>>
>> PetscReal xTMx;
>>
>>
>>
> Dear Matthew,
>
> Thanks for the quick reply, Not sure, here is the code for the related
> part, I used a VecTDot before that so I need PetscScalar I guess.
>
> PetscErrorCode ierr;
> Vec x, Bx;
> int rSz, cSz;
> PetscScalar xTMx;
> ierr = MatGetSize(modalMat.getMatrix(), &rSz, &cSz); CHKERRQ(ierr);
> // create the vectors to be used
> ierr = VecCreate(MPI_COMM_SELF, &x); CHKERRQ(ierr);
> ierr = VecCreate(MPI_COMM_SELF, &Bx); CHKERRQ(ierr);
> ierr = VecSetSizes(x, rSz, PETSC_DECIDE); CHKERRQ(ierr);
> ierr = VecSetSizes(Bx, rSz, PETSC_DECIDE); CHKERRQ(ierr);
> VecSetFromOptions(x);
> VecSetFromOptions(Bx);
> //
> for(int k=0; k<nev; k++)
> {
> // retrive the mode vector
> MatGetColumnVector(modalMat.getMatrix(), x, k);
> MatMult(B, x, Bx);
> VecTDot(Bx, x, &xTMx);
>
> VecScale(x, 1/sqrt(xTMx));
>
> Best regards,
> Umut
>
--
What most experimenters take for granted before they begin their experiments
is infinitely more interesting than any results to which their experiments
lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20100407/675a643a/attachment-0001.htm>
More information about the petsc-users
mailing list