<div dir="ltr"><div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Wed, Nov 7, 2018 at 10:16 AM Yingjie Wu via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Dear Petsc developer:</div><div>Hi,</div><div>Recently, I'm solving the problems of nonlinear systems of PDEs, I encountered some problems about precondition and wanted to seek help. <br></div><div><br></div><div>1.I set the precondition matrix in SNES as MPIAIJ in the program, and then use Matrix Free method to solve my problem. The log information of the program is as follows: </div></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><font size="1">SNES Object: 1 MPI processes</font></div><div><font size="1">  type: newtonls</font></div><div><font size="1">  maximum iterations=50, maximum function evaluations=100000000</font></div><div><font size="1">  tolerances: relative=1e-08, absolute=1e-50, solution=1e-08</font></div><div><font size="1">  total number of linear solver iterations=177</font></div><div><font size="1">  total number of function evaluations=371</font></div><div><font size="1">  norm schedule ALWAYS</font></div><div><font size="1">  SNESLineSearch Object: 1 MPI processes</font></div><div><font size="1">    type: bt</font></div><div><font size="1">      interpolation: cubic</font></div><div><font size="1">      alpha=1.000000e-04</font></div><div><font size="1">    maxstep=1.000000e+08, minlambda=1.000000e-12</font></div><div><span style="font-size:x-small">    tolerances: relative=1.000000e-08, absolute=1.000000e-15, lambda=1.000000e-08</span><br></div><div><span style="font-size:x-small">    maximum iterations=40</span></div><div><font size="1">  KSP Object: 1 MPI processes</font></div><div><font size="1">    type: gmres</font></div><div><font size="1">      restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement</font></div><div><font size="1">      happy breakdown tolerance 1e-30</font></div><div><font size="1">    maximum iterations=10000, initial guess is zero</font></div><div><font size="1">    tolerances:  relative=0.01, absolute=1e-50, divergence=10000.</font></div><div><font size="1">    left preconditioning</font></div><div><font size="1">    using PRECONDITIONED norm type for convergence test</font></div><div><font size="1">  PC Object: 1 MPI processes</font></div><div><font size="1">    type: bjacobi</font></div><div><font size="1">      number of blocks = 1</font></div><div><font size="1">      Local solve is same for all blocks, in the following KSP and PC objects:</font></div><div><font size="1">      KSP Object: (sub_) 1 MPI processes</font></div><div><font size="1">        type: preonly</font></div><div><font size="1">        maximum iterations=10000, initial guess is zero</font></div><div><font size="1">        tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.</font></div><div><font size="1">        left preconditioning</font></div><div><font size="1">        using NONE norm type for convergence test</font></div><div><font size="1">     <font color="#ff0000"> PC Object: (sub_) 1 MPI processes</font></font></div><div><font size="1" color="#ff0000">        type: bjacobi</font></div><div><font size="1">          number of blocks = 1</font></div><div><font size="1">          Local solve is same for all blocks, in the following KSP and PC objects:</font></div><div><font size="1">          KSP Object: (sub_sub_) 1 MPI processes</font></div><div><font size="1">            type: preonly</font></div><div><span style="font-size:x-small">            maximum iterations=10000, initial guess is zero</span></div><div><font size="1">            tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.</font></div><div><font size="1">            left preconditioning</font></div><div><font size="1">            using NONE norm type for convergence test</font></div><div><font size="1">          PC Object: (sub_sub_) 1 MPI processes</font></div><div><font size="1">           type: ilu</font></div><div><font size="1">              out-of-place factorization</font></div><div><font size="1">              0 levels of fill</font></div><div><font size="1">              tolerance for zero pivot 2.22045e-14</font></div><div><font size="1">              matrix ordering: natural</font></div><div><font size="1">              factor fill ratio given 1., needed 1.</font></div><div><font size="1">                Factored matrix follows:</font></div><div><font size="1">                 Mat Object: 1 MPI processes</font></div><div><font size="1">                    type: seqaij</font></div><div><font size="1">                    rows=961, cols=961</font></div><div><font size="1">                   package used to perform factorization: petsc</font></div><div><font size="1">                    total: nonzeros=4129, allocated nonzeros=4129</font></div><div><font size="1">                    total number of mallocs used during MatSetValues calls =0</font></div><div><font size="1">                      not using I-node routines</font></div><div><font size="1">            linear system matrix = precond matrix:</font></div><div><font size="1">            Mat Object: 1 MPI processes</font></div><div><font size="1">              type: seqaij</font></div><div><font size="1">              rows=961, cols=961</font></div><div><font size="1">              total: nonzeros=4129, allocated nonzeros=4805</font></div><div><font size="1">              total number of mallocs used during MatSetValues calls =0</font></div><div><font size="1">                not using I-node routines</font></div><div><font size="1">        linear system matrix = precond matrix:</font></div><div><font size="1">        Mat Object: 1 MPI processes</font></div><div><font size="1">          type: mpiaij</font></div><div><font size="1">          rows=961, cols=961</font></div><div><font size="1">          total: nonzeros=4129, allocated nonzeros=9610</font></div><div><font size="1">         total number of mallocs used during MatSetValues calls =0</font></div><div><font size="1">            not using I-node (on process 0) routines</font></div><div><font size="1">    linear system matrix followed by preconditioner matrix:</font></div><div><font size="1">    Mat Object: 1 MPI processes</font></div><div><font size="1">      type: mffd</font></div><div><font size="1">      rows=961, cols=961</font></div><div><font size="1">        Matrix-free approximation:</font></div><div><font size="1">          err=1.49012e-08 (relative error in function evaluation)</font></div><div><font size="1">          Using wp compute h routine</font></div><div><font size="1">              Does not compute normU</font></div><div><font size="1">    Mat Object: 1 MPI processes</font></div><div><font size="1">      type: mpiaij</font></div><div><font size="1">      rows=961, cols=961</font></div><div><font size="1">      total: nonzeros=4129, allocated nonzeros=9610</font></div><div><font size="1">      total number of mallocs used during MatSetValues calls =0</font></div><div><font size="1">        not using I-node (on process 0) routines<br></font></div></div></div></div></blockquote><font size="1">Although parallel matrix is used, it runs on a single processor. Because of the use of parallel matrices, the overall precondition scheme should be bjacobi, and then build a KSP for each block (there is only one block in my program). Therefore, there will be a sub KSP object in the PC information. But in the above information, a subsubksp is also embedded in the sub KSP object. I don't understand the reason for this KSP. Please help me answer. <br></font></div></div></div></div></div></div></div></div></div></div></div></blockquote><div><br></div><div>It looks like you are setting the sub PC type to bjacobi and it has a sub (sub) PC.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><font size="1"></font></div><div dir="ltr"><font size="1"><br></font></div><div dir="ltr"><font size="1">2. Bjacobi is a precondition method in theory. Why is there a subsystem of linear equations solver object ksp? In my understanding, precondition is a matrix decomposition method, and there is no linear equations,. Therefore, there should be no subKSP here. </font></div><div dir="ltr"><font size="1"><br></font></div><div dir="ltr"><font size="1">3.when I  assemble precondition matrix, I used MatSetVales. </font></div></div></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><font size="1"><div>idleft  = row - 1 ;</div><div><br></div><div>      idright = row + 1 ;</div><div><br></div><div>      idup    = row + 20;</div><div><br></div><div>      iddown  = row - 20;</div><div><br></div><div><br></div><div><br></div><div>      /*phi1 field*/</div><div><br></div><div>      v[1] = - 1.0 / ( dx * dx / (2* 1.267) + dx * dx / (2* 1.267 ) ) ; col[1] = idleft;</div><div><br></div><div>      v[2] = - 1.0 / ( dx * dx / (2* 1.267) + dx * dx / (2* 1.267 ) ) ; col[2] = idright;</div><div><br></div><div>      v[3] = - 1.0/  ( dy * dy / (2* 1.267) + dy * dy / (2* 1.267 ) ) ; col[3] = iddown;</div><div><br></div><div>      v[4] = - 1.0 / ( dy * dy / (2* 1.267) + dy * dy / (2* 1.267 ) ) ; col[4] = idup;</div><div><br></div><div>      v[0] = v[1] + v[2] + v[3] + v[4] + v[0] ;   col[0] = row;</div><div><br></div><div>      ierr  = MatSetValues(B,1,&row,5,col,v,INSERT_VALUES);CHKERRQ(ierr);</div></font></div></div></div></div></div></blockquote></div></div></div></div></div></div></blockquote><div><br></div><div>There must be junk in "col" somehow. I don't see anything wrong with this code.  Print out the values of "col" before the MatSetValues call.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><font size="1">The wrong information is:<br></font></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div dir="ltr"><div><font size="1"><div>[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------</div><div>[0]PETSC ERROR: Argument out of range</div><div>[0]PETSC ERROR: Column too large: col 1077215232 max 960</div><div>[0]PETSC ERROR: See <a href="http://www.mcs.anl.gov/petsc/documentation/faq.html" target="_blank">http://www.mcs.anl.gov/petsc/documentation/faq.html</a> for trouble shooting.</div><div>[0]PETSC ERROR: Petsc Release Version 3.10.1, Sep, 26, 2018 </div><div>[0]PETSC ERROR: ./ex217 on a arch-linux2-c-debug named yjwu-XPS-8910 by yjwu Wed Nov  7 09:52:22 2018</div><div>[0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++ --with-fc=gfortran --download-mpich --download-fblaslapack</div><div>[0]PETSC ERROR: #1 MatSetValues_SeqAIJ() line 442 in /home/yjwu/petsc-3.10.1/src/mat/impls/aij/seq/aij.c</div><div>[0]PETSC ERROR: #2 MatSetValues() line 1349 in /home/yjwu/petsc-3.10.1/src/mat/interface/matrix.c</div><div>[0]PETSC ERROR: #3 FormJacobian() line 272 in /home/yjwu/petsc-3.10.1/src/snes/examples/tutorials/ex217.c</div><div>[0]PETSC ERROR: #4 SNESComputeJacobian() line 2555 in /home/yjwu/petsc-3.10.1/src/snes/interface/snes.c</div><div>[0]PETSC ERROR: #5 SNESSolve_NEWTONLS() line 222 in /home/yjwu/petsc-3.10.1/src/snes/impls/ls/ls.c</div><div>[0]PETSC ERROR: #6 SNESSolve() line 4396 in /home/yjwu/petsc-3.10.1/src/snes/interface/snes.c</div><div>[0]PETSC ERROR: #7 main() line 108 in /home/yjwu/petsc-3.10.1/src/snes/examples/tutorials/ex217.c</div></font></div></div></blockquote><font size="1">This seems to be a very obvious question, but I don't know how to solve it. <br></font></div><div dir="ltr"><font size="1"><br></font></div><div dir="ltr"><font size="1"><div dir="ltr">Thanks for your continuous help,</div><div dir="ltr">Yingjie</div></font></div></div></div></div>
</blockquote></div></div></div>