<html><head><style type='text/css'>p { margin: 0; }</style></head><body><div style='font-family: Times New Roman; font-size: 12pt; color: #000000'>Use TSComputeDefaultJacobian instead of SNESComputeDefaultJacobian if you want to use TS objects only.<div><br></div><div><span class="Apple-style-span" style="font-size: medium; "><pre><span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal; font-size: 16px; ">&gt; ierr = TSComputeDefaultJacobian(ts,t,CV_Y,&amp;J,&amp;J,&amp;flag,PETSC_NULL);CHKERRQ(ierr); &nbsp;</span></pre></span></div><div><div style="font-family: Times New Roman; font-size: 12pt; color: #000000"><div><div><div>&nbsp;&gt; ierr = MatGetColoring(J,MATCOLORINGSL,&amp;iscoloring);CHKERRQ(ierr);</div><div>&nbsp;&gt; ierr = MatFDColoringCreate(J,iscoloring,&amp;matfdcoloring);CHKERRQ(ierr);</div><div>&nbsp;&gt; ierr = ISColoringDestroy(iscoloring);CHKERRQ(ierr); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...you missed this</div><div>&nbsp;&gt; ierr = MatFDColoringSetFunction(matfdcoloring,(PetscErrorCode (*)(void))f,(void*)&amp;appctx);CHKERRQ(ierr);</div><div>&nbsp;&gt; ierr = MatFDColoringSetFromOptions(matfdcoloring);CHKERRQ(ierr);</div><div>&nbsp;&gt; ierr = TSSetRHSJacobian(ts,J,J,TSDefaultComputeJacobianColor,matfdcoloring);</div></div></div><div><br></div><div><br></div><div>Shri</div><div><br>&gt; ----- "Xuan YU" &lt;xxy113@psu.edu&gt; wrote:
<br>&gt; &gt; &nbsp;ierr = MatCreateSeqAIJ(PETSC_COMM_SELF,N,N,10,PETSC_NULL,&amp;J);CHKERRQ(ierr);<div><div>&nbsp;ierr = MatAssemblyBegin(J,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);</div><div>&nbsp;ierr = MatAssemblyEnd(J,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);</div><div><div>&nbsp;ierr = SNESComputeJacobian(ts_snes,CV_Y,&amp;J,&amp;J,&amp;flag);CHKERRQ(ierr);</div><div>&nbsp;ierr = MatGetColoring(J,MATCOLORINGSL,&amp;iscoloring);CHKERRQ(ierr);</div><div>&nbsp;ierr = MatFDColoringCreate(J,iscoloring,&amp;matfdcoloring);CHKERRQ(ierr);</div><div>&nbsp;ierr = MatFDColoringSetFunction(matfdcoloring,(PetscErrorCode (*)(void))f,(void*)&amp;appctx);CHKERRQ(ierr);</div><div>&nbsp;ierr = MatFDColoringSetFromOptions(matfdcoloring);CHKERRQ(ierr);</div><div>&nbsp;ierr = TSSetRHSJacobian(ts,J,J,TSDefaultComputeJacobianColor,matfdcoloring);</div><div><div><br>&gt; &gt; </div><div>These are the Jacobian related codes.</div></div></div><div><br>&gt; &gt; </div><div><br>&gt; &gt; </div><div><br>&gt; &gt; </div><div><br>&gt; &gt; </div><div><div>On Jul 7, 2010, at 1:51 PM, Satish Balay wrote:</div><br class="Apple-interchange-newline"><blockquote><div><blockquote>total: nonzeros=1830<br>&gt; &gt; </blockquote><blockquote>mallocs used during MatSetValues calls =1830<br>&gt; &gt; </blockquote><br>&gt; &gt; Looks like you are zero-ing out the non-zero structure - before<br>&gt; &gt; assembling the matrix.<br>&gt; &gt; <br>&gt; &gt; Are you calling MatZeroRows() or MatZeroEntries() or something else -<br>&gt; &gt; before assembling the matrix?<br>&gt; &gt; <br>&gt; &gt; Satish<br>&gt; &gt; <br>&gt; &gt; On Wed, 7 Jul 2010, Xuan YU wrote:<br>&gt; &gt; <br>&gt; &gt; <blockquote>I made a change: ierr =<br>&gt; &gt; </blockquote><blockquote>MatCreateSeqAIJ(PETSC_COMM_SELF,N,N,5,PETSC_NULL,&amp;J);CHKERRQ(ierr);<br>&gt; &gt; </blockquote><blockquote><br>&gt; &gt; </blockquote><blockquote>Time of the code did not change much, and got the info:<br>&gt; &gt; </blockquote><blockquote>Matrix Object:<br>&gt; &gt; </blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=seqaij, rows=1830, cols=1830<br>&gt; &gt; </blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total: nonzeros=1830, allocated nonzeros=36600<br>&gt; &gt; </blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total number of mallocs used during MatSetValues calls =1830<br>&gt; &gt; </blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not using I-node routines<br>&gt; &gt; </blockquote><blockquote><br>&gt; &gt; </blockquote><blockquote><br>&gt; &gt; </blockquote><blockquote><br>&gt; &gt; </blockquote><blockquote>On Jul 7, 2010, at 12:51 PM, Satish Balay wrote:<br>&gt; &gt; </blockquote><blockquote><br>&gt; &gt; </blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;total: nonzeros=1830, allocated nonzeros=29280<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;total number of mallocs used during MatSetValues calls =1830<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote>There is something wrong with your preallocation or matrix<br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote>assembly. You should see zero mallocs for efficient assembly.<br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote><a href="http://www.mcs.anl.gov/petsc/petsc-as/documentation/faq.html#efficient-assembly" target="_blank">http://www.mcs.anl.gov/petsc/petsc-as/documentation/faq.html#efficient-assembly</a><br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote>satish<br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote>On Wed, 7 Jul 2010, Xuan YU wrote:<br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote><blockquote>Hi,<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>I finite difference Jacobian approximation for my TS model. The size of<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>the<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>vector is 1830. I got the following info with(-ts_view):<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>type: beuler<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>maximum steps=50<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>maximum time=50<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>total number of nonlinear solver iterations=647<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>total number of linear solver iterations=647<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>SNES Object:<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> type: ls<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;line search variant: SNESLineSearchCubic<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;alpha=0.0001, maxstep=1e+08, minlambda=1e-12<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> maximum iterations=50, maximum function evaluations=10000<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> tolerances: relative=1e-08, absolute=1e-50, solution=1e-08<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> total number of linear solver iterations=50<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> total number of function evaluations=51<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> KSP Object:<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;type: gmres<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;GMRES: restart=30, using Classical (unmodified) Gram-Schmidt<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>Orthogonalization with no iterative refinement<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;GMRES: happy breakdown tolerance 1e-30<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;maximum iterations=10000, initial guess is zero<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;tolerances: &nbsp;relative=1e-05, absolute=1e-50, divergence=10000<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;left preconditioning<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;using PRECONDITIONED norm type for convergence test<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> PC Object:<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;type: ilu<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;ILU: out-of-place factorization<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;0 levels of fill<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;tolerance for zero pivot 1e-12<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;using diagonal shift to prevent zero pivot<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;matrix ordering: natural<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;factor fill ratio given 1, needed 1<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Factored matrix follows:<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Matrix Object:<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type=seqaij, rows=1830, cols=1830<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;package used to perform factorization: petsc<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total: nonzeros=1830, allocated nonzeros=1830<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;total number of mallocs used during MatSetValues calls =0<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not using I-node routines<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;linear system matrix = precond matrix:<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;Matrix Object:<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;type=seqaij, rows=1830, cols=1830<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;total: nonzeros=1830, allocated nonzeros=29280<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;total number of mallocs used during MatSetValues calls =1830<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;not using I-node routines<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>50 output time step takes me 11.877s. So I guess there is something not<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>appropriate with my Jacobian Matrix. Could you please tell me how to speed<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>up<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>my code?<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>Thanks!<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote>Xuan YU<br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><a href="mailto:xxy113@psu.edu" target="_blank">xxy113@psu.edu</a><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote></blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote><blockquote><blockquote><br>&gt; &gt; </blockquote></blockquote><blockquote><br>&gt; &gt; </blockquote><blockquote>Xuan YU (俞烜)<br>&gt; &gt; </blockquote><blockquote><a href="mailto:xxy113@psu.edu" target="_blank">xxy113@psu.edu</a><br>&gt; &gt; </blockquote><blockquote><br>&gt; &gt; </blockquote><blockquote><br>&gt; &gt; </blockquote><blockquote><br>&gt; &gt; </blockquote><blockquote><br>&gt; &gt; </blockquote></div></blockquote></div><br>&gt; &gt; <div> <div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">&gt; &gt; <div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">&gt; &gt; <div>Xuan YU (<span class="Apple-style-span" style="font-family: arial; font-size: 16px; white-space: pre; ">俞烜<span class="Apple-style-span" style="font-family: Helvetica; font-size: medium; white-space: normal; ">)</span></span></div><div><a href="mailto:xxy113@psu.edu" target="_blank">xxy113@psu.edu</a></div><div><br>&gt; &gt; </div></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"> </div><br>&gt; &gt; </div></div></div></div></div></body></html>