> On Aug 4, 2016, at 10:15 AM, Mark Adams <[email protected]> wrote: > >> >> Okay, there is >> >> -snes_fd_color -snes_fd_color_use_mat -mat_coloring_type greedy >> >> which takes a properly preallocated matrix. >> > > Which Mat will it use? Our operators matrix is a shell so it must be the PC > ...
If you are actually going to form the Jacobian and compute it via coloring then there is no particular reason to use a shell matrix as the operator. You might as well just use the Jacobian via coloring that you are computing anyways. > > If it uses the PC Mat we could take the transpose of the PC Mat, scale > it by like 1.e-30, add it back into the PC Mat to get a symmetric > structure, if that matters, and get a safe graph for coloring. No need to mess with transposes, scales or anything. Just create the matrix (the second one passed to SNESSetJacobian()), do a proper preallocation, put zeros in nonzero locations with MatSetValues, do MatAssembly and pass it in to SNESSetJacobian() > > Dan: this is easy, I will send you code today to modify "A", just use > Matt's parameters above.
