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 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