All,
We have recently added adjoint capability to libMesh. In matrix terms,
this implies that after solving a system "Ax = b", PETSc will have to solve
"A^{t} z = q", where A^{t} is transpose(A).
However, PETSc can use information it generated while solving "Ax = b" to
quickly solve "A^{t} z = q". For example, if we solve "Ax = b" using LU
factorization, we have z = (A^{t})^{-1} q = (A^{-1})^{t} q = (L^{-1})^{T}
(U^{-1})^{T} q. In this case, the transpose solution reduces to matrix
vector multiplies.
The PETSc function that provides this kind of functionality is
KSPSolveTranspose<http://www.mcs.anl.gov/petsc/petsc-2/snapshots/petsc-current/docs/manualpages/KSP/KSPSolveTranspose.html>and
it would be good to add an interface to it. Currently we have the
following interface planned:
1) Declare a new virtual function in linear_solver.h: virtual bool
reuse_preconditioner()
2) Define it in petsc_linear_solver.h as accessing a flag
3) Rework petsc_linear_solver.C to accomodate the use of KSPSolveTranspose
4) Add to examples, and verify performance improvement in adjoint_solve call
If anybody has a better interface or suggestions on the current plan, please
let us know.
Thanks.
--
Vikram Garg
PhD Candidate
Institute for Computational and Engineering Sciences
The University of Texas at Austin
http://users.ices.utexas.edu/~vikram/
http://www.runforindia.org/runners/vikramg
------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve
application availability and disaster protection. Learn more about boosting
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel