<div dir="ltr"><span style="color:rgb(80,0,80)">Bernard,</span><div><font color="#500050">The bug is fixed in branch hzhang/fix-elementalSetOption.</font></div><div><font color="#500050"><a href="https://bitbucket.org/petsc/petsc/commits/891a05710665f381fc66132810d0b09973b0e049">https://bitbucket.org/petsc/petsc/commits/891a05710665f381fc66132810d0b09973b0e049</a><br></font></div><div><font color="#500050"><br></font></div><div><font color="#500050">It will be merged to petsc-release after night tests.</font></div><div><font color="#500050">Thanks for reporting it!</font></div><div><font color="#500050"><br></font></div><div><font color="#500050">Hong</font></div><div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 28, 2016 at 8:04 PM, Hong <span dir="ltr"><<a href="mailto:hzhang@mcs.anl.gov" target="_blank">hzhang@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Bernard:</div><div class="gmail_quote">With your code, I reproduced error and found that the default </div><div class="gmail_quote">MAT_ROW_ORIENTED for MatSetValues() is changed to MAT_COLUMN_ORIENTED. This is a bug in our library. I'll fix it.</div><div class="gmail_quote"><br></div><div class="gmail_quote">You can add</div><div class="gmail_quote">MatSetOption(C,MAT_ROW_<wbr>ORIENTED,PETSC_TRUE); </div><div class="gmail_quote">before 2nd call of matrixC(C,t).</div><div class="gmail_quote"><br></div><div class="gmail_quote">Thanks for reporting the bug.</div><span class="gmail-HOEnZb"><font color="#888888"><div class="gmail_quote"><br></div><div class="gmail_quote">Hong</div></font></span><div><div class="gmail-h5"><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word">Hello,<div><br></div><div>Here is a trimmed down piece of code that illustrates a strange behaviour that I am desperately trying to understand.</div><div><br></div><div>The problem is that I would expect successive calls to MatView(C,…) to display the same numbers. However, the numbers displayed are different, even though the content of the matrix C should be the same.</div><div><br></div><div>Any help to resolve this would be appreciated.</div><div><br></div><div>Cheers,</div><div>Bernard.</div><div><br></div><div>Code:</div><div>******</div><div><br></div><div><div>static char help[] = "Elemental test\n\n";</div><div><br></div><div>/*T</div><div>   </div><div>T*/</div><div><br></div><div>#include <petscmat.h></div><div><br></div><div>PetscScalar pi=3.141592653589793;</div><div><br></div><div>/* Prototypes */</div><div>PetscErrorCode matrixC(Mat C, PetscScalar t);</div><div><br></div><div>#undef __FUNCT__</div><div>#define __FUNCT__ "main"</div><div>int main(int argc, char **args){</div><div><br></div><div>   Mat C;</div><div> </div><div>   PetscInt N = 8;</div><div>   PetscScalar t=0.1, dt=0.0001;</div><div>   PetscErrorCode ierr;</div><div><br></div><div>   /* parameters */</div><div>   ierr = PetscInitialize(&argc, &args, (char*) 0, help) ;CHKERRQ(ierr);</div><div>  </div><div>   ierr = MatCreate(PETSC_COMM_WORLD, &C); CHKERRQ(ierr);</div><div>   ierr = MatSetSizes(C, PETSC_DECIDE, PETSC_DECIDE, N, N); CHKERRQ(ierr);</div><div>   ierr = MatSetType(C, MATELEMENTAL); CHKERRQ(ierr);</div><div>   ierr = MatSetFromOptions(C); CHKERRQ(ierr);</div><div>   ierr = MatSetUp(C); CHKERRQ(ierr);</div><div>   </div><div>   ierr=matrixC(C,t);</div><div>   ierr = MatView(C,PETSC_VIEWER_STDOUT_<wbr>WORLD);</div><div>   </div><div>   ierr=matrixC(C,t);</div><div>   ierr = MatView(C,PETSC_VIEWER_STDOUT_<wbr>WORLD);</div><div>   </div><div>   ierr = MatDestroy(&C);CHKERRQ(ierr);</div><div>  </div><div>   ierr = PetscFinalize();</div><div>   </div><div>   return ierr;</div><div>}</div><div><br></div><div>/* Matrix C*/</div><div>PetscErrorCode matrixC(Mat C, PetscScalar t){</div><div>   </div><div>   PetscErrorCode ierr; </div><div>   IS isrows,iscols;</div><div>   const PetscInt *rows,*cols;</div><div>   PetscScalar    *v;</div><div>   PetscInt i,j,nrows,ncols;</div><div>   PetscInt n,m;</div><div>   </div><div>   /* Set local matrix entries */</div><div>   ierr = MatGetOwnershipIS(C,&isrows,&i<wbr>scols);CHKERRQ(ierr);</div><div>   ierr = ISGetLocalSize(isrows,&nrows);<wbr>CHKERRQ(ierr);</div><div>   ierr = ISGetIndices(isrows,&rows);CHK<wbr>ERRQ(ierr);</div><div>   ierr = ISGetLocalSize(iscols,&ncols);<wbr>CHKERRQ(ierr);</div><div>   ierr = ISGetIndices(iscols,&cols);CHK<wbr>ERRQ(ierr);</div><div>   ierr = PetscMalloc1(nrows*ncols,&v);C<wbr>HKERRQ(ierr);</div><div>   </div><div>   for (i=0; i<nrows; i++) {</div><div>      n=rows[i];</div><div>      for (j=0; j<ncols; j++) {</div><div>         m=cols[j];</div><div>         v[i*ncols+j] = -0.5*(exp(-(m+n+1.5)*(m+n+1.5)<wbr>*pi*pi*t)-exp(-(m-n+0.5)*(m-n+<wbr>0.5)*pi*pi*t));</div><div>      }</div><div>   }</div><div>  </div><div>   ierr = MatSetValues(C,nrows,rows,ncol<wbr>s,cols,v,INSERT_VALUES);CHKERR<wbr>Q(ierr);</div><div>   ierr = MatAssemblyBegin(C,MAT_FINAL_A<wbr>SSEMBLY);CHKERRQ(ierr);</div><div>   ierr = MatAssemblyEnd(C,MAT_FINAL_ASS<wbr>EMBLY);CHKERRQ(ierr);</div><div>   ierr = ISRestoreIndices(isrows,&rows)<wbr>;CHKERRQ(ierr);</div><div>   ierr = ISRestoreIndices(iscols,&cols)<wbr>;CHKERRQ(ierr);</div><div>   ierr = ISDestroy(&isrows);CHKERRQ(ier<wbr>r);</div><div>   ierr = ISDestroy(&iscols);CHKERRQ(ier<wbr>r);</div><div>   ierr = PetscFree(v);CHKERRQ(ierr);</div><div><br></div><div>    PetscFunctionReturn(0);</div><div>}</div><div><br></div></div><div>Output:</div><div>********</div><div><br></div><div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>mpirun -n 2 ./elemental</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span><br></span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>Mat Object: 2 MPI processes</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>  type: elemental</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>Elemental matrix (cyclic ordering)</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>0.336403 2.8059e-06 0.0532215 1.04511e-09 0.00104438 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>0.00104718 0.390672 0.0542687 0.0542687 0.390672 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>0.389625 0.00104718 0.390669 2.80695e-06 0.0542687 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>2.80695e-06 0.390672 0.00104718 0.390672 0.0542687 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>0.0542659 0.0542687 0.390672 0.00104718 0.390672 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255);min-height:15px"><span></span><br></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>Elemental matrix (explicit ordering)</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>  Mat Object: 2 MPI processes</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>    type: mpidense</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>3.3640319378153799e-01 5.3221486768492490e-02 1.0443777750910219e-03 2.8059034408741489e-06 1.0451056906250189e-09 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>3.8962468055003047e-01 3.9066905832512150e-01 5.4268670447024388e-02 1.0471847236375868e-03 2.8069486006233780e-06 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>5.4265864543583515e-02 3.9067186422856237e-01 3.9067186527366804e-01 5.4268671492184138e-02 1.0471847236916457e-03 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>1.0471836785318962e-03 5.4268671492130077e-02 3.9067186527372211e-01 3.9067186527372211e-01 5.4268671492184138e-02 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>2.8069485465647739e-06 1.0471847236916453e-03 5.4268671492184138e-02 3.9067186527372211e-01 3.9067186527372211e-01 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>Mat Object: 2 MPI processes</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>  type: elemental</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>Elemental matrix (cyclic ordering)</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>0.336403 2.8059e-06 0.390672 2.80695e-06 0.00104718 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>0.0532215 1.04511e-09 0.389625 0.390672 0.0542687 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>0.00104438 0.390672 0.390669 0.390672 0.0542659 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>0.00104718 0.0542687 0.0542687 0.0542687 0.390672 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>0.0542687 0.00104718 2.80695e-06 0.00104718 0.390672 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255);min-height:15px"><span></span><br></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>Elemental matrix (explicit ordering)</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>  Mat Object: 2 MPI processes</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>    type: mpidense</span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>3.3640319378153799e-01 3.9067186527372211e-01 1.0471847236916453e-03 2.8059034408741489e-06 2.8069486006233780e-06 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>1.0443777750910219e-03 3.9066905832512150e-01 5.4265864543583515e-02 3.9067186527372211e-01 3.9067186527372211e-01 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>5.4268671492130077e-02 2.8069485465647739e-06 3.9067186527366804e-01 1.0471847236375868e-03 1.0471847236916457e-03 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>5.3221486768492490e-02 3.8962468055003047e-01 5.4268671492184138e-02 1.0451056906250189e-09 3.9067186527372211e-01 </span></div><div style="margin:0px;font-size:13px;line-height:normal;font-family:menlo;background-color:rgb(255,255,255)"><span>1.0471836785318962e-03 5.4268670447024388e-02 3.9067186422856237e-01 5.4268671492184138e-02 5.4268671492184138e-02 </span></div></div><div><span><br></span></div><div><br></div><div><br></div></div></blockquote></div><br></div></div></div></div>
</blockquote></div><br></div></div></div>