Hello, I'm trying to solve an adjoint problem for a linear system without first solving the forward system. libMesh is giving me an adjoint solution which results in a grossly non-zero residual (calculated using system.matrix and system.get_adjoint_rhs, since the Jacobian is symmetric for now) , O(e-4) in L2. However, the final residual output given by adjoint_solve() is O(e-11). This occurred on two separate computers, so I don't believe it is a product of my particular petsc installation.
If I use the debugging options to print out the jacobian and adjoint rhs, copy them into Matlab and calculate the adjoint solution there, I get a solution for which the manually calculated residual (calculated in libMesh by reading in the Matlab solution from a text file) is much smaller (O(e-15)). If I implement the adjoint system as the forward problem and solve it using system.solve(), I get a solution that agrees with that produced by Matlab. It seems that the adjoint is not being solved to the user specified accuracy. Shrinking solver->initial_linear_tolerance (currently at e-10) did not help. I can send my code if needed. Thanks, Harriet ------------------------------------------------------------------------------ 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-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
