Roy Stogner <royst...@ices.utexas.edu> writes: > Copying discussion from libmesh-users, both because it looks like a > library- rather than a user-level problem and because I'm hoping one > of our PETSc expert lurkers will chime in. > > Summary: running a libMesh adjoint_solve() on a particular coupled > multiphysics system on a small mesh claims to solve the adjoint system > down past 1e-10 tolerance, but manually evaluating the residual > magnitude afterwards shows more like 1e-4. Turning off > preconditioning eliminates the discrepancy.
Can you provide output with -ksp_monitor_true_residual? Are you comparing a preconditioned residual to an unpreconditioned residual? Note that penalty boundary conditions render unpreconditioned residuals nearly useless. > ---------- Forwarded message ---------- > Date: Wed, 7 Jan 2015 17:06:16 -0600 (CST) > From: Roy Stogner <royst...@ices.utexas.edu> > To: libmesh-us...@lists.sourceforge.net > Subject: Re: [Libmesh-users] Adjoint Solve > > > On Wed, 7 Jan 2015, Roy Stogner wrote: > >> Was using PETSc without any good solver packages built in, but >> "-mat_view ::ascii_matlab" and octave were enough to catch the red >> herring; the matrix is fine. > > The matrix is fine, but the preconditioners aren't. If I run with > "-pc_type jacobi" (how does this not NaN with your matrix with zeros > on the diagonal?) or just plain "-pc_type none", then everything's > fine: > > > > ~ *~*~*~*~*~*~*~*~ adjoint solve start ~*~*~*~*~*~*~*~*~ > > number of iterations to solve adjoint: 87 > final residual of adjoint solve: 8.65357e-14 > > ~ *~*~*~*~*~*~*~*~ adjoint solve end ~*~*~*~*~*~*~*~*~ > > ------------ herp derp ------------ > > > adjoint system residual (discrete L2): 8.65326e-14 > adjoint system residual (L2, all): 2.62094e-14 > adjoint system residual (L2, 0): 2.06412e-14 > adjoint system residual (L2, 1): 1.61515e-14 > > > > Are we doing something wrong with the preconditioner code in > PetscLinearSolver::adjoint_solve()? My first thought: maybe the > preconditioner isn't getting transposed properly, so asymmetric > preconditioners like ILU show inconsistent behavior? You've boiled > down the problem to a symmetric matrix, but IIRC ILU application still > won't be symmetric. If we *tell* PETSc to precondition for a > symmetric matrix, with "-pc_type icc", then everything still works > fine... > --- > Roy > > ------------------------------------------------------------------------------ > Dive into the World of Parallel Programming! The Go Parallel Website, > sponsored by Intel and developed in partnership with Slashdot Media, is your > hub for all things parallel software development, from weekly thought > leadership blogs to news, videos, case studies, tutorials and more. Take a > look and join the conversation now. http://goparallel.sourceforge.net > _______________________________________________ > Libmesh-devel mailing list > Libmesh-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/libmesh-devel
signature.asc
Description: PGP signature
------------------------------------------------------------------------------ Dive into the World of Parallel Programming! The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net
_______________________________________________ Libmesh-devel mailing list Libmesh-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-devel