[petsc-users] Regarding FormFunction in the SNES class

Barry Smith bsmith at petsc.dev
Wed Oct 7 14:19:05 CDT 2020



> On Oct 7, 2020, at 1:41 PM, baikadi pranay <pranayreddy865 at gmail.com> wrote:
> 
> Hello,
> I have a few questions regarding FormFunction when using the SNES solvers. I am using Fortran90. 
> 
> 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 ?

  We don't currently provide attributes for our Fortran stubs, so it is best if you do not mark them in your subroutines. 

  Yes the x is input only and the f is output only.

> Also, should I use the "allocatable" attribute when defining the vector x?

   I am pretty sure no.

> Please comment similarly on the output vector f as well.
> 2) Should the ctx argument of the subroutine FormFunction be defined as "PETSC_NULL_INTEGER"?

   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.

  Barry



> 
> Please let me know if you need any further information. 
> 
> Thank you.
> Best Regards,
> Pranay.



More information about the petsc-users mailing list