<div dir="ltr">On Thu, Aug 29, 2013 at 4:01 PM, Jin, Shuangshuang <span dir="ltr"><<a href="mailto:Shuangshuang.Jin@pnnl.gov" target="_blank">Shuangshuang.Jin@pnnl.gov</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">






<div>
<font face="Calibri, sans-serif">
<div>Hello, when I look at IJacobian function in the example: <a href="http://www.mcs.anl.gov/petsc/petsc-current/src/ts/examples/tutorials/ex19.c" target="_blank"><font color="#0000FF"><u>http://www.mcs.anl.gov/petsc/petsc-current/src/ts/examples/tutorials/ex19.c</u></font></a></div>

<div><font face="Times New Roman, serif"> </font></div>
<div><font face="Courier New, monospace">static PetscErrorCode IJacobian(TS ts,PetscReal t,Vec X,Vec Xdot,PetscReal a,Mat *A,Mat *B,MatStructure *flag,void *ctx)</font></div>
<div><font face="Courier New, monospace">{</font></div>
<div><font face="Courier New, monospace">  PetscErrorCode ierr;</font></div>
<div><font face="Courier New, monospace">  PetscInt       rowcol[] = {0,1};</font></div>
<div><font face="Courier New, monospace">  PetscScalar    *x,J[2][2];</font></div>
<div><font face="Courier New, monospace"> </font></div>
<div><font face="Courier New, monospace">  PetscFunctionBeginUser;</font></div>
<div><font face="Courier New, monospace">  ierr    = VecGetArray(X,&x);CHKERRQ(ierr);</font></div>
<div><font face="Courier New, monospace">  J[0][0] = a;    J[0][1] = -1.;</font></div>
<div><font face="Courier New, monospace">  J[1][0] = 1.;   J[1][1] = -1. + x[1]*x[1];</font></div>
<div><font face="Courier New, monospace">  ierr    = MatSetValues(*B,2,rowcol,2,rowcol,&J[0][0],INSERT_VALUES);CHKERRQ(ierr);</font></div>
<div><font face="Courier New, monospace">  ierr    = VecRestoreArray(X,&x);CHKERRQ(ierr);</font></div>
<div><font face="Courier New, monospace"> </font></div>
<div><font face="Courier New, monospace">  ierr = MatAssemblyBegin(*A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);</font></div>
<div><font face="Courier New, monospace">  ierr = MatAssemblyEnd(*A,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);</font></div>
<div><font face="Courier New, monospace">  if (*A != *B) {</font></div>
<div><font face="Courier New, monospace">    ierr = MatAssemblyBegin(*B,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);</font></div>
<div><font face="Courier New, monospace">    ierr = MatAssemblyEnd(*B,MAT_FINAL_ASSEMBLY);CHKERRQ(ierr);</font></div>
<div><font face="Courier New, monospace">  }</font></div>
<div><font face="Courier New, monospace">  *flag = SAME_NONZERO_PATTERN;</font></div>
<div><font face="Courier New, monospace">  PetscFunctionReturn(0);</font></div>
<div><font face="Courier New, monospace">}</font></div>
<div><font face="Times New Roman, serif"> </font></div>
<div>There’s a PetscReal a. Is it a constant? And if the value of a known outside of the IJacobian function, saying the main() part.</div></font></div></blockquote><div><br></div><div>Its the shift for J_udot. See 6.1.1 in the manual.</div>
<div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><font face="Calibri, sans-serif"><div></div>
<div>If it is, then as shown in this example, <font face="Courier New, monospace">J[0][0] = a;</font><font face="Courier New, monospace"> </font><font face="Courier New, monospace">J[0][1] = -1.; J[1][0] = 1.;</font><font face="Courier New, monospace">
are constant through all the iterations. How can I use Mat</font><font face="Courier New, monospace">RetrieveValues(*A) and MatStoreValue</font><font face="Courier New, monospace">s(*A) to reuse them?</font></div>
<div><font face="Times New Roman, serif"> </font></div>
<div><font face="Courier New, monospace">I’m asking this question because I have a large Jacobian matrix, but half of the matrix contains constant values. However, I don’t know what’s “PetscReal a” when I try to use it to compute my constant elements
of Jacobian matrix which doesn’t depend on the value of x at all.</font></div>
<div><font face="Courier New, monospace"> </font></div>
<div><font face="Courier New, monospace">Thanks,</font></div>
<div><font face="Courier New, monospace">Shuangshuang</font></div>
<div><font face="Times New Roman, serif"> </font></div>
<div><font face="Times New Roman, serif"> </font></div>
<div><font face="Times New Roman, serif"> </font></div>
</font>
</div>

</blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>