<div dir="ltr"><div><div><div>Hello,<br><br></div>The code segment I wrote based on "src/dm/da/examples/tutorials/ex2.c" crashes when destroying things / freeing memory as given below. <br>I can't figure out what I'm missing? Any comments are welcome. (Petsc 3.1.p8, intel fortran compiler). The code and error are below.<br></div><br> !...Create scatter from global DA parallel vector to local vector that contains all entries<br> call DAGlobalToNaturalAllCreate(da,tolocalall,ierr)<br> call DAGlobalToNaturalAllCreate(da,tolocalall2,ierr)<br> call DAGlobalToNaturalAllCreate(da,tolocalall3,ierr)<br><br> call VecCreateSeq(PETSC_COMM_SELF,im*jm*km,CSRENOMlocalall,ierr)<br> call VecScatterBegin(tolocalall,CSRENOM,CSRENOMlocalall,INSERT_VALUES,SCATTER_FORWARD,ierr)
<br> call VecScatterEnd( tolocalall,CSRENOM,CSRENOMlocalall,INSERT_VALUES,SCATTER_FORWARD,ierr)<br><br> call VecCreateSeq(PETSC_COMM_SELF,im*jm*km,CSDENOMlocalall,ierr)<br> call VecScatterBegin(tolocalall2,CSDENOM,CSDENOMlocalall,INSERT_VALUES,SCATTER_FORWARD,ierr)
<br> call VecScatterEnd( tolocalall2,CSDENOM,CSDENOMlocalall,INSERT_VALUES,SCATTER_FORWARD,ierr)<br><br> call VecCreateSeq(PETSC_COMM_SELF,im*jm*km,CSlocalall,ierr)<br> call VecScatterBegin(tolocalall3,CS,CSlocalall,INSERT_VALUES,SCATTER_FORWARD,ierr)
<br> call VecScatterEnd( tolocalall3,CS,CSlocalall,INSERT_VALUES,SCATTER_FORWARD,ierr)<br><br><br> call VecGetArray(CSRENOMlocalall,scaCSRENOMlocalall,idCSRENOMlocalall,ierr)<br> call VecGetArray(CSDENOMlocalall,scaCSDENOMlocalall,idCSDENOMlocalall,ierr)<br> call VecGetArray( CSlocalall,scaCSlocalall ,idCSlocalall ,ierr)<br><br> <br></div> SOME WORK HERE<br><br><br><div> call VecRestoreArray(CSlocalall ,scaCSlocalall ,idCSlocalall,ierr)<br> call VecRestoreArray(CSRENOMlocalall,scaCSRENOMlocalall,idCSRENOMlocalall,ierr)<br> call VecRestoreArray(CSDENOMlocalall,scaCSDENOMlocalall,idCSDENOMlocalall,ierr)<br><br><br> !...scatter back to global vector<br> call DANaturalAllToGlobalCreate(da,fromlocalall,ierr)<br> call DANaturalAllToGlobalCreate(da,fromlocalall2,ierr)<br> call DANaturalAllToGlobalCreate(da,fromlocalall3,ierr)<br><br> call VecScatterBegin(fromlocalall,CSRENOMlocalall,CSRENOM,INSERT_VALUES,SCATTER_FORWARD,ierr)
<br> call VecScatterEnd( fromlocalall,CSRENOMlocalall,CSRENOM,INSERT_VALUES,SCATTER_FORWARD,ierr)<br><br> call VecScatterBegin(fromlocalall2,CSDENOMlocalall,CSDENOM,INSERT_VALUES,SCATTER_FORWARD,ierr)
<br> call VecScatterEnd( fromlocalall2,CSDENOMlocalall,CSDENOM,INSERT_VALUES,SCATTER_FORWARD,ierr)<br><br> call VecScatterBegin(fromlocalall3,CSlocalall,CS,INSERT_VALUES,SCATTER_FORWARD,ierr)
<br> call VecScatterEnd( fromlocalall3,CSlocalall,CS,INSERT_VALUES,SCATTER_FORWARD,ierr)<br><br></div><div> !..free memory<br> call VecScatterDestroy(fromlocalall,ierr)<br> call VecScatterDestroy(fromlocalall2,ierr)<br> call VecScatterDestroy(fromlocalall3,ierr)<br><br> call VecScatterDestroy(tolocalall,ierr)<br> call VecScatterDestroy(tolocalall2,ierr)<br> call VecScatterDestroy(tolocalall3,ierr)<br><br> call VecDestroy(CSDENOMlocalall,ierr)<br> call VecDestroy(CSRENOMlocalall,ierr)<br> call VecDestroy(CSlocalall,ierr)<br><br><br>.<br>.<br>.<br>.<br>.<br>.<br> ...................... SGS model is called<br> MUT computed<br> MUT computed<br> MUT computed<br> MUT computed<br>[1]PETSC ERROR: ------------------------------------------------------------------------<br>[1]PETSC ERROR: [0]PETSC ERROR: ------------------------------------------------------------------------<br>[0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation, probably memory access out of range<br>[0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger<br>[0]PETSC ERROR: or see <a href="http://www.mcs.anl.gov/petsc/petsc-as/documentation/troubleshooting.html#Signal[0]PETSC">http://www.mcs.anl.gov/petsc/petsc-as/documentation/troubleshooting.html#Signal[0]PETSC</a> ERROR: or try <a href="http://valgrind.org">http://valgrind.org</a> on GNU/linux and Apple Mac OS X to find memory corruption errors<br>[0]PETSC ERROR: configure using --with-debugging=yes, recompile, link, and run <br>[0]PETSC ERROR: to get more information on the crash.<br>.<br>.<br>.<br>.<br>.<br><br></div><div>Thank you<br><br></div><div>Ilyas.<br></div></div>