<div dir="ltr"><div dir="ltr">On Wed, Oct 7, 2020 at 4:26 PM Barry Smith <<a href="mailto:bsmith@petsc.dev">bsmith@petsc.dev</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
> On Oct 7, 2020, at 1:41 PM, baikadi pranay <<a href="mailto:pranayreddy865@gmail.com" target="_blank">pranayreddy865@gmail.com</a>> wrote:<br>
> <br>
> Hello,<br>
> I have a few questions regarding FormFunction when using the SNES solvers. I am using Fortran90. <br>
> <br>
> 1) I went through the example (ex1f.F90) provided in the documentation that uses Newton method to solve a two-variable system. In the subroutine FormFunction, the first argument is an input vector (x). However in the code, no attributes are specified saying that it is an input argument for the subroutine (i.e. intent attribute is not specified). Is this automatically taken care of or should I be defining the intent attribute in my code ?<br>
<br>
  We don't currently provide attributes for our Fortran stubs, so it is best if you do not mark them in your subroutines. <br>
<br>
  Yes the x is input only and the f is output only.<br></blockquote><div><br></div><div>Are you certain? We do not change the f pointer, you change the data hiding inside.</div><div><br></div><div>   Matt</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">
> Also, should I use the "allocatable" attribute when defining the vector x?<br>
<br>
   I am pretty sure no.<br>
<br>
> Please comment similarly on the output vector f as well.<br>
> 2) Should the ctx argument of the subroutine FormFunction be defined as "PETSC_NULL_INTEGER"?<br>
<br>
   The context is how you convey additional information into FormFunction(). Should you choose to not use it then in your function you can declare it as a integer and simply not use it. If you are calling your FormFunction() from Fortran then just pass a meaningless integer as that argument.  PETSC_NULL_INTEGER is for call PETSc functions that take integer array arguments that you are not supplying.<br>
<br>
  Barry<br>
<br>
<br>
<br>
> <br>
> Please let me know if you need any further information. <br>
> <br>
> Thank you.<br>
> Best Regards,<br>
> Pranay.<br>
<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>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><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>