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 <[email protected]> wrote:
> 
> On Mon, Aug 17, 2015 at 11:46 AM, Reza Yaghmaie <[email protected]> 
> 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

Reply via email to