<div dir="ltr">Hi guys,<div><br></div><div>I've noticed a bug in my code that seems to happen right after a call to DMGlobalToLocalBegin/End and i can't seem to find a reason, it goes like this:</div><div><br></div><div>I create the DMDA (daScalars) with the following: </div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> bx = DM_BOUNDARY_GHOSTED<br> by = DM_BOUNDARY_PERIODIC<br> bz = DM_BOUNDARY_GHOSTED<br> dof = 1<br> stw = 3<br>call DMDACreate3d(PETSC_COMM_WORLD,<wbr>bx,by,bz,DMDA_STENCIL_BOX,<wbr>gridx,gridy,gridz,PETSC_<wbr>DECIDE,PETSC_DECIDE,PETSC_<wbr>DECIDE, &                                dof,stw,PETSC_NULL_INTEGER,<wbr>PETSC_NULL_INTEGER,PETSC_NULL_<wbr>INTEGER,daScalars,ierr)<br>call DMSetFromOptions(daScalars,<wbr>ierr)<br>call DMSetUp(daScalars,ierr)</blockquote></div><div><br></div><div>Then i read from a file the temperature and salinity fields of my problems, those two are giving the trouble, i do it with this template:<br></div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">call DMCreateGlobalVector(<wbr>daScalars,gTemperature,ierr)<br>call DMDAVecGetArrayF90(daScalars,<wbr>gTemperature,arrtemp,ierr)<br>   arrtemp = 99.0d0      !no idea why this fixes the problem -mv 62518<br>call getCenterInfo(daScalars,  xstart, ystart, zstart, xend, yend, zend)<br>            do k=zstart,zend-1<br>                do j=ystart,yend-1<br>                    do i=xstart,xend-1<br>                        arrtemp(i,j,k) = T0(i+1,j+1,k+1)<br>                    enddo<br>                enddo<br>            enddo<br>call DMDAVecRestoreArrayF90(<wbr>daScalars,gTemperature,<wbr>arrtemp,ierr)<br>call DMCreateLocalVector(daScalars,<wbr>LocTemperature,ierr)<br>call DMGlobalToLocalBegin(<wbr>daScalars,gTemperature,INSERT_<wbr>VALUES,LocTemperature,ierr)<br>call DMGlobalToLocalEnd(daScalars,<wbr>gTemperature,INSERT_VALUES,<wbr>LocTemperature,ierr)</blockquote></div><div><br></div><div><br></div><div>Now here is the first weirdness, if i assign a number to my array it does behave as it should for the global quantity, but it must be a greater number than the maximum of the field for this to happen, so i assign 99.0 arbitrarily, otherwise it doesn't read the array correctly, but it does as of now,</div><div><br></div><div>Next, the last two lines communicate the array to the local counterparts, but when i read LocTemperature with:</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">    call DMDAVecGetArrayReadF90(<wbr>daScalars,DimTemperature,tdim,<wbr>ierr)<br>    print*,'Copied MinT0: ', minval(tdim)<br>    call DMDAVecRestoreArrayReadF90(<wbr>daScalars,DimTemperature,tdim,<wbr>ierr)</blockquote></div><div><br></div><div>That array minimum doesn't coincide with the global minimum, it should be 1.000 but it is just 0.000, the same happens with the Salinity following an identical approach,</div><div><br></div><div>Any ideas on where to start looking? i have last month's PETSc build,</div><div><br></div><div>I'm running in 1 processor for now,</div><div><br></div><div>Thanks,</div><div><br></div><div>Manuel</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div>