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

Reply via email to