We would have to have full details of what happens in the debugger during 
those crashes. 

  Barry

> On Aug 18, 2015, at 7:25 PM, Reza Yaghmaie <[email protected]> wrote:
> 
> 
> Thank you very much for the insight. It helped.
> 
> I am trying to solve the system using snes routines. Let's say the I execute 
> the below command in Fortran
> 
>       call SNESSolve(snes,PETSC_NULL_OBJECT,xvec,ierr)
> 
> In the residual calculation and Jacobian update routines I need to finalize 
> the vectors and matrix assemblies using the commands as following otherwise 
> SNESSolve will crash:
> 
>       call VecAssemblyBegin (FVEC, ierr)
>       call VecAssemblyEnd   (FVEC, ierr)
> 
>         call MatAssemblyBegin(jac_prec,MAT_FINAL_ASSEMBLY,ierr)
>         call MatAssemblyEnd(jac_prec,MAT_FINAL_ASSEMBLY,ierr)
> 
> I face the issue that my debugger crashes at the locations of theses final 
> vector and matrix assemblies. It worked for the sequential version of the 
> code but for the parallel version it stops there. I am sure all processors in 
> the mpi framework reach to these pointers simultaneously. Any insights?
> 
> Thanks,
> Reza 
> 
> 
> 
> On Mon, Aug 17, 2015 at 2:25 PM, Barry Smith <[email protected]> wrote:
> 
>   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