<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1">
<div style="direction: ltr; font-family: Tahoma; color: rgb(0, 0, 0); font-size: 13px;">
<div style=""><br>
Hi, Petsc Team, <br>
<br>
Recently I encounter a weird problem for segmentation violation. I wrote a simple test code to describe it. Here the line&nbsp; &quot; pp = sk[j&#43;1][i].p; &quot; causes segmentation violation trouble when I try to invoke values of ghost points in j direction. If I change it
 into &quot;pp = sk[j][i&#43;1].p;&quot; invoking ghost point values in i diection, then it works smoothly. I check previous archives about segmentation violation, but cannot find any clue for this. Can you point out where is wrong here or is it a bug?<br>
<br>
<br>
Thank you.<br>
<br>
<br>
Zhisong Li<br>
<br>
<br>
<br>
static char help[] = &quot;test&quot;;<br>
#include &quot;petscda.h&quot;<br>
<br>
typedef struct { PetscScalar p; } Field;<br>
<br>
int main(int argc, char **args)<br>
{ Vec&nbsp; xx;&nbsp; <br>
&nbsp; PetscInt&nbsp;&nbsp; dof = 1, m = 24, n= 32, i, j, xs, ys, xm, ym, yints, yinte, xints, xinte;<br>
&nbsp; PetscScalar pp;<br>
&nbsp; DA&nbsp;&nbsp; da;<br>
&nbsp; Field&nbsp; **sk;<br>
&nbsp; PetscInitialize(&amp;argc, &amp;args, (char *)0, help) ;<br>
&nbsp;&nbsp; &nbsp;<br>
&nbsp; DACreate2d(PETSC_COMM_WORLD, DA_NONPERIODIC, DA_STENCIL_STAR, m, n, PETSC_DECIDE, PETSC_DECIDE, dof, 1, PETSC_NULL, PETSC_NULL, &amp;da);<br>
&nbsp; DACreateGlobalVector(da, &amp;xx); <br>
&nbsp; DAGetCorners(da, &amp;xs, &amp;ys, 0, &amp;xm, &amp;ym, 0);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xints = xs;&nbsp;&nbsp; xinte = xs&#43;xm;&nbsp;&nbsp; yints = ys;&nbsp;&nbsp; yinte = ys&#43;ym;&nbsp;&nbsp; &nbsp;<br>
&nbsp; &nbsp;<br>
&nbsp; VecSet(xx,1.0);<br>
&nbsp; <br>
&nbsp; DAVecGetArray(da, xx, &amp;sk);&nbsp;&nbsp; &nbsp;<br>
&nbsp; if (xints == 0){ xints = xints &#43; 1; } &nbsp;<br>
&nbsp; if (yints == 0){ yints = yints &#43; 1; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp; if (xinte == m){ xinte = xinte - 1; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp; if (yinte == n){ yinte = yinte - 1; } &nbsp;<br>
<br>
&nbsp;&nbsp;&nbsp; for (j=yints; j&lt;yinte; j&#43;&#43;){ <br>
&nbsp;&nbsp; &nbsp;&nbsp; for (i=xints; i&lt;xinte; i&#43;&#43;)&nbsp;&nbsp; { pp = sk[j&#43;1][i].p; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp; DAVecRestoreArray(da, xx, &amp;sk);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp; VecDestroy(xx);<br>
&nbsp; DADestroy(da);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>
&nbsp; PetscFinalize();<br>
&nbsp; PetscFunctionReturn(0);<br>
}<br>
<br>
</div>
</div>
</body>
</html>