On Wed, Dec 5, 2012 at 12:35 PM, David Knezevic
<dkneze...@seas.harvard.edu> wrote:
> PetscVector::dot calls VecDot, which does a conjugate-transpose in the
> complex-valued case. I also need to be able to do non-conjugated dot
> products, which are referred to as "indefinite" dot products in PETSc
> and are implemented in VecTDot.
>
> So I'd like to add an indefinite dot-product to libMesh. Any thoughts on
> the API? A separate "indefinite_dot" method in NumericVector? Or a
> boolean argument (with default value to maintain API backwards
> compatibility) in the existing dot method?

Hmm... I guess I'd go with a separate method unless you find that
there is too much code duplication?

I'd never heard of this operation before... how common is it?


> Also, on a related note, I posted to libmesh-users about
> add_vector_tranpose and how I'd like it to do a conjugate-tranpose in
> the complex-valued case (perhaps toggled with an optional boolean
> argument as above?). This works with the following code:
>
> #ifndef LIBMESH_USE_COMPLEX_NUMBERS
>    // The const_cast<> is not elegant, but it is required since PETSc
>    // is not const-correct.
>    ierr = MatMultTransposeAdd(const_cast<PetscMatrix<T>*>(A)->mat(),
> V->_vec, _vec, _vec);
>    CHKERRABORT(libMesh::COMM_WORLD,ierr);
> #else
>    // Store a temporary copy since MatMultHermitianTransposeAdd doesn't
> seem to work
>    AutoPtr< NumericVector<Number> > this_clone = this->clone();
>
>    // The const_cast<> is not elegant, but it is required since PETSc
>    // is not const-correct.
>    ierr =
> MatMultHermitianTranspose(const_cast<PetscMatrix<T>*>(A)->mat(),
> V->_vec, _vec);
>    CHKERRABORT(libMesh::COMM_WORLD,ierr);
>
>    // Add the temporary copy to the matvec result
>    this->add(1., *this_clone);
> #endif
>
> i.e. I had to make a temporary vector to get this to work since
> MatMultHermitianTransposeAdd doesn't seem to work. OK if I check that
> in, with a TODO note about getting to the bottom of the
> MatMultHermitianTransposeAdd issue?

So is this is a confirmed PETSc bug, or...?

--
John

------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to