<div dir="ltr"><div><div><div>Hi,<br><br></div>If you want to use other arrays, you can either put them in modules and then "use" the module at the very top of the subroutine, or create a new type which can contain anything (scalars, integers, arrays but also more complex PETSc objects), and put an instance of this type in the place of your dummy array.<br><br></div>For instance<br><br>module types<br>  type levelcontext<br>#include "petsc/finclude/petscdmdef.h"<br><br></div><div> DM :: da<br></div> PetscScalar :: MyArray(10)<br><div><br></div><div>  end type levelcontext<br></div><div>end module types<br></div><div><br></div><div>and then in your main you can do<br><br></div><div>use types<br></div><div>type(levelcontext) :: ctx<br><br></div><div>Finally you call SNESSetFunction as <br><br>CALL SNESSetFunction(snes,r,FormFunction,ctx,ierr)<br><br></div><div>Inside SNESSetFunction you can then access your array or your DMDA as ctx%MyArray, ctx%da etc etc.<br><br></div><div>Also, in principle I think you should set the context ctx of SNES with <br>call SNESSetApplicationContext(snes,ctx,ierr)<br></div><div><br></div><div>Best<br><br></div><div>Timothée<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-03-26 13:21 GMT+09:00 Josh Lo <span dir="ltr"><<a href="mailto:ysjosh.lo@gmail.com" target="_blank">ysjosh.lo@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div>I am trying to SNES with Fortran.</div><div>In FormFunction in SNESSetFuction, i need to call other subroutine and many array to calculate F(x), but seems like SNESSetFunction only allows one user-defined array as input argument, say, "dummy" in the next line.</div><div><br></div><div>CALL SNESSetFunction(snes,r,FormFunction,dummy,ierr)</div><div><br></div><div>How can I pass more than one array through SNESSetFunction to FormFunction?</div><div><br></div><div>I am a beginner for PETSc, so the question maybe naive.</div><div><br></div><div>Thanks,</div><div>Lo</div><div><br></div></div>
</blockquote></div><br></div>