Jean,

You can use -ksp_use_explicittranspose to make KSP transpose the system 
explicitly in the transposed solve. This option was designed to enable more 
choices of linear solvers and preconditions in adjoint solves, of course, at a 
cost.

Hong (Mr.)

On Apr 8, 2022, at 4:52 PM, Jean Marques 
<[email protected]<mailto:[email protected]>> wrote:

Hi all,

This may be a naive question, and I hope this is the right place to ask about 
it.
I need to solve a direct linear system with a sparse matrix R, then an adjoint 
system the hermitian of R.

I use a petsc4py, so what I do is this:
self.R.setUp()
to set up the PETSc KSP variable R, then I do:
self.R.solve(f, q)
and later:
self.R.solveTranspose(f, q)

However, 'solveTranspose()' only works when I use MUMPS. If I try STRUMPACK or 
SUPERLU_DIST it fails, it seems that 'solveTranpose()' is not defined for them? 
or is there a specific way to call them with these libraries?
Maybe the approach would be to define another 'self.R' variable but then set it 
as a transpose().conjugate() before setUp()?
I was trying STRUMPACK because it has a low-memory approach and that's my main 
bottleneck.

I appreciate any help you can provide.

Best,
Jean

--
Jean Helder Marques Ribeiro
Ph.D. Candidate
University of California, Los Angeles
420 Westwood Plaza, Los Angeles, CA 90095
phone: (310) 689-6593

Reply via email to