On Wed, Sep 12, 2012 at 12:13 PM, Constantine Khroulev <span dir="ltr"><<a href="mailto:ckhroulev@alaska.edu" target="_blank">ckhroulev@alaska.edu</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
While updating our code to work with PETSc 3.3 I noticed that (as far<br>
as I can tell) there is no SNESDAFormFunction/SNESDAComputeJacobian<br>
equivalent in 3.3.<br>
<br>
I came up with a workaround (see below), but I am not sure if this is<br>
legal. (See the "SNESSetFunction(snes, F, PETSC_NULL, PETSC_NULL)",<br>
for example.)<br>
<br>
What would you recommend?<br>
<br>
/* begin code snippet */<br>
{<br>
  ierr = DMDACreate2d(..., &da); CHKERRQ(ierr);<br>
<br>
  ierr = DMCreateGlobalVector(da, &F); CHKERRQ(ierr);<br>
  ierr = DMCreateMatrix(da, "baij",  &J); CHKERRQ(ierr);<br>
<br>
  ierr = SNESCreate(com, &snes);CHKERRQ(ierr);<br>
<br>
  ierr = DMDASetLocalFunction(da,(DMDALocalFunction1)LocalFunction);CHKERRQ(ierr);<br>
  ierr = DMDASetLocalJacobian(da,(DMDALocalFunction1)LocalJacobian);CHKERRQ(ierr);<br>
<br>
#if I_HAVE_PETSC32==1<br>
  ierr = SNESSetFunction(snes, F, SNESDAFormFunction, &ctx); CHKERRQ(ierr);<br>
  ierr = SNESSetJacobian(snes, J, J, SNESDAComputeJacobian, &ctx);<br>
CHKERRQ(ierr);<br>
#else  /* PETSc 3.3 */<br>
  ierr = SNESSetFunction(snes, F, PETSC_NULL, PETSC_NULL); CHKERRQ(ierr);<br>
  ierr = SNESSetJacobian(snes, J, J, PETSC_NULL, PETSC_NULL); CHKERRQ(ierr);<br></blockquote><div><br></div><div>You do not need these two. If the DM is set, SNES will take the assembly function from the</div><div>DM. Refer to SNES ex5.</div>
<div><br></div><div>  Thanks,</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">
  ierr = DMSetApplicationContext(da, &ctx); CHKERRQ(ierr);<br>
#endif<br>
<br>
  ierr = SNESSetDM(snes, da); CHKERRQ(ierr);<br>
<br>
  ierr = SNESSetFromOptions(snes);CHKERRQ(ierr);<br>
}<br>
/* end code snippet */<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Constantine<br>
</font></span></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<br>