<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
In last question, the pointer xx_v is local data.&nbsp;&nbsp;However, if&nbsp;write them to the monitor or assign&nbsp;them to another array, the value is incorrect.<BR>
&nbsp;<BR>
The protion of the code&nbsp;to display them on the monitor is like as following:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>
&nbsp;call MatGetOwnershipRange(A,Istart,Iend,ierr)<BR>&nbsp;call VecGetArrayF90(x,xx_v,ierr)&nbsp; !&nbsp; Vector x is matched with Matrix A in the same communicator<BR>
&nbsp;<BR>
&nbsp;&nbsp;  write(*,*)xx_v,myid&nbsp; &nbsp; ! write the poiner array together<BR>
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do i=Istart,Iend-1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; write(6,*)'check xx_v',i,xx_v(i),myid&nbsp;&nbsp;&nbsp; !write the&nbsp;element of the array one by one&nbsp;with local range (Istart to Iend-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enddo&nbsp; <BR>
&nbsp;<BR>
&nbsp;<BR>
=========The result is as following:&nbsp; ( the values of the elements from 7 to 20 are not correct !!)<BR><BR>
&nbsp;&nbsp; &nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3000.0000000000005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3000.0000000000005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3000.0000000000009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3000.0000000000009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3000.0000000000009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2000.0000000000011&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2000.0000000000011&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2000.0000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<BR><BR>
&nbsp;&nbsp;&nbsp; &nbsp; 2000.0000000000009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2000.0000000000009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1000.0000000000003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1000.0000000000003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1000.0000000000003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 999.99999999999989&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<BR><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1000.0000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<BR><BR>
&nbsp;<BR>
&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3999.9999999999982&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp; 3000.0000000000005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3000.0000000000005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp; 1.99665037664579820E-314&nbsp; 1.99665037664579820E-314&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp; 2.61360726650019422E-321&nbsp; 2.61360726650019422E-321&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9&nbsp; 7.90505033345994471E-323&nbsp; 7.90505033345994471E-323&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10&nbsp; 1.69759663277221785E-312&nbsp; 1.69759663277221785E-312&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11&nbsp; 6.16846344148335980E-317&nbsp; 6.16846344148335980E-317&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12&nbsp; 6.16846640587723485E-317&nbsp; 6.16846640587723485E-317&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13&nbsp; 6.16838982570212945E-317&nbsp; 6.16838982570212945E-317&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14&nbsp; 1.99665037664579820E-314&nbsp; 1.99665037664579820E-314&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15&nbsp; 6.19790333112210216E-317&nbsp; 6.19790333112210216E-317&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16&nbsp; 6.20255545324334334E-317&nbsp; 6.20255545324334334E-317&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 17&nbsp; 6.20225061473985929E-317&nbsp; 6.20225061473985929E-317&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18&nbsp; 6.18242376037225006E-317&nbsp; 6.18242376037225006E-317&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 19&nbsp; 6.16846640587723485E-317&nbsp; 6.16846640587723485E-317&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20&nbsp; 6.18113523716789609E-317&nbsp; 6.18113523716789609E-317&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<BR>&nbsp;check xx_v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 24&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0000000000000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3<BR>
&nbsp;<BR>
======The vector x is :<BR>
Process [0]<BR>4000<BR>4000<BR>4000<BR>4000<BR>4000<BR>3000<BR>3000<BR>Process [1]<BR>3000<BR>3000<BR>3000<BR>2000<BR>2000<BR>2000<BR>Process [2]<BR>2000<BR>2000<BR>1000<BR>1000<BR>1000<BR>1000<BR>Process [3]<BR>1000<BR>0<BR>0<BR>0<BR>0<BR>0<BR><BR><BR>
<BR>&nbsp;<BR>
&gt; Date: Tue, 4 Jan 2011 17:50:11 -0600<BR>&gt; From: balay@mcs.anl.gov<BR>&gt; To: petsc-users@mcs.anl.gov<BR>&gt; Subject: Re: [petsc-users] error in calling VecGetArrayf90()<BR>&gt; <BR>&gt; Did you included "finclude/petscvec.h90" in your code - as the example did?<BR>&gt; <BR>&gt; satish<BR>&gt; <BR>&gt; On Tue, 4 Jan 2011, Peter Wang wrote:<BR>&gt; <BR>&gt; &gt; <BR>&gt; &gt; I am trying to obtain the value of each element of a solution Vector by KSPsolve(). <BR>&gt; &gt; <BR>&gt; &gt; The variables are defined according the example of ex4f90.F in \petsc-3.1-p5\src\snes\examples\tutorials\ as following,<BR>&gt; &gt; <BR>&gt; &gt; PetscScalar, pointer :: xx_v(:)<BR>&gt; &gt; <BR>&gt; &gt; ...<BR>&gt; &gt; call KSPSolve(ksp,b,x,ierr)<BR>&gt; &gt; call VecView(x,PETSC_VIEWER_STDOUT_WORLD,ierr)<BR>&gt; &gt; <BR>&gt; &gt; call VecGetArrayF90(x,xx_v,ierr)<BR>&gt; &gt; call VecRestoreArrayF90(x,xx_v,ierr)<BR>&gt; &gt; <BR>&gt; &gt; ...<BR>&gt; &gt; <BR>&gt; &gt; But, the error keeps coming out when call VecGetArrayF90(x,xx_v,ierr) and call VecRestoreArrayF90(x,xx_v,ierr) are not commented off.<BR>&gt; &gt; <BR>&gt; &gt; <BR>&gt; &gt; The error information shows:<BR>&gt; &gt; Caught signal number 11 SEGV: Segmentation Violation, probably memory access out of range<BR>&gt; &gt; <BR>&gt; &gt; [0]PETSC ERROR: --------------------- Stack Frames ------------------------------------<BR>&gt; &gt; [0]PETSC ERROR: Note: The EXACT line numbers in the stack are not available,<BR>&gt; &gt; [0]PETSC ERROR: INSTEAD the line number of the start of the function<BR>&gt; &gt; [0]PETSC ERROR: is given.<BR>&gt; &gt; [0]PETSC ERROR: [0] F90Array1dCreate line 52 src/sys/f90-src/f90_cwrap.c<BR>&gt; &gt; [0]PETSC ERROR: --------------------- Error Message ------------------------------------<BR>&gt; &gt; <BR>&gt; &gt; I checked the code according the example, but cannot see any difference to that. Just don't know why the pointer array xx_v doesn't work here? Thanks.<BR>&gt; &gt; <BR>&gt; &gt; <BR>&gt; <BR>                                               </body>
</html>