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 > >
