[petsc-users] SNESSetFunction

Barry Smith bsmith at mcs.anl.gov
Mon Aug 17 13:25:46 CDT 2015


  Reza,

    See src/snes/examples/tutorials/ex5f90.F for how this may be easily done using a Fortran user defined type

  Barry

> On Aug 17, 2015, at 12:39 PM, Matthew Knepley <knepley at gmail.com> wrote:
> 
> On Mon, Aug 17, 2015 at 11:46 AM, Reza Yaghmaie <reza.yaghmaie2 at gmail.com> wrote:
> 
> Hi,
> 
> I have problems with passing variables through  SNESSetFunction in my code. basically I have the following subroutines in the main body of the Fortran code. Could you provide some insight on how to transfer variables into the residual calculation routine (FormFunction1)?
> 
> Extra arguments to your FormFunction are meant to be passed in a context, through the context variable.
> 
> This is difficult in Fortran, but you can use a PetscObject as a container. You can attach other
> PetscObjects using PetscObjectCompose() in Fortran.
> 
>    Matt
>  
> Thanks,
> Reza
> ------------------------------------------------------------------------------------------------------------------
> main code
> 
> 	SNES      snes
> 	Vec          xvec,rvec
> 	external   FormFunction1
> 	real*8       variable1(10),variable2(20,20),variable3(30),variable4(40,40)
> 
> 
>       call SNESSetFunction(snes,rvec,FormFunction1,
>      &		PETSC_NULL_OBJECT,
>      &		variable1,variable2,variable3,variable4,
>      &		ierr)
> 
>       end
> 
>       subroutine FormFunction1(snes,XVEC,FVEC,
>      &		dummy,
>      &		varable1,varable2,varable3,varable4,
>      &		ierr)
> 
> 	SNES                      snes
> 	Vec                         XVEC,FVEC
> 	PetscFortranAddr    dummy
> 	real*8                       variable1(10),variable2(20,20),variable3(30),variable4(40,40)
> 
> 
>       return
>       end
> --------------------------------------------------------------------------------------------------------------
> 
> 
> 
> 
> 
> 
> 
> 
> -- 
> What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
> -- Norbert Wiener



More information about the petsc-users mailing list