<div dir="ltr">Hello all,<div><br></div><div>@Matt: Actually I can't fully adopt the SNES ex5 since I think I am much closer to getting the DMDA stuff to work, even if it is just serial. So I am currently focussing on that.</div><div><br></div><div>@Barry: The matrix is coming from the Finite difference discretization of a 3D regular grid. I had a look at KSP ex45.c and I am struggling with what looks to be a simple problem.</div><div><br></div><div>I currently supply the matrix to PETSc in a CSR form. I have specified ComputeRHS and ComputeMatrix functions, analogous to ex45.c.</div><div><br></div><div>If my 3D grid is regular cube with 5 nodes on each side, I create DMDA using DMDACreate3d((comm world), boundary types, STAR_STENCIL, etc., M = 5, N = 5, P = 5, dof=1, s=1, PETSC_NULL on remaining).</div><div><br></div><div>In the ComputeMatrix function, I try to reuse my CSR form by doing:</div><div><br></div><div><div><font face="monospace, monospace">#undef __FUNCT__</font></div><div><font face="monospace, monospace">#define __FUNCT__ "ComputeMatrix"</font></div><div><font face="monospace, monospace">PetscErrorCode ComputeMatrix(KSP ksp, Mat J, Mat A, void* ctx)</font></div><div><font face="monospace, monospace">{</font></div><div><font face="monospace, monospace">    PetscFunctionBeginUser;</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">    Mat temp;</font></div><div><font face="monospace, monospace">    // build up the matrix</font></div><div><font face="monospace, monospace">    MatCreateSeqAIJWithArrays(PETSC_COMM_WORLD, numRows, numRows, rows, cols, values, &temp);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">    MatCopy(temp, A, DIFFERENT_NONZERO_PATTERN);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">    MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY);</font></div><div><font face="monospace, monospace">    MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">    PetscFunctionReturn(0);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">} // end of ComputeMatrix</font></div></div><div><font face="monospace, monospace"><br></font></div><div><font face="arial, helvetica, sans-serif">Where rows, cols, values are stored globally, for now. Also I am keeping the code serial, so I am just trying to use DMDA as a convenient way to take care of interpolation between MG levels, if my understanding is correct.</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">But on the MatCopy line, I get an error</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><div><font face="monospace, monospace">DM Object: 1 MPI processes</font></div><div><font face="monospace, monospace">  type: da</font></div><div><font face="monospace, monospace">Processor [0] M 5 N 5 P 5 m 1 n 1 p 1 w 1 s 1</font></div><div><font face="monospace, monospace">X range of indices: 0 5, Y range of indices: 0 5, Z range of indices: 0 5</font></div><div><font face="monospace, monospace">[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------</font></div><div><font face="monospace, monospace">[0]PETSC ERROR: Argument out of range</font></div><div><font face="monospace, monospace">[0]PETSC ERROR: Inserting a new nonzero at (25,27) in the matrix</font></div><div><font face="monospace, monospace">[0]PETSC ERROR: See <a href="http://www.mcs.anl.gov/petsc/documentation/faq.html">http://www.mcs.anl.gov/petsc/documentation/faq.html</a> for trouble shooting.</font></div><div><font face="monospace, monospace">[0]PETSC ERROR: Petsc Release Version 3.6.2, Oct, 02, 2015</font></div></div><div><font face="monospace, monospace"><br></font></div><div><font face="arial, helvetica, sans-serif">I have been trying but I have not been able to resolve this quickly. I feel like I am creating the DMDA correctly. Is there a better way of reusing a CSR form to setup a DM Matrix? Should I be doing DMCreateMatrix?</font></div><div><br></div><div>Thanks a lot for your help.</div><div><br></div><div class="gmail_extra"><div><br></div>Regards,<br><div class="gmail_signature"><div dir="ltr">K.N.Ramachandran<br><div>Ph: 814-441-4279</div></div></div>
</div></div>