<div dir="ltr">Hum, sorry, I don't know. I asked you to provide the definitions of start and end values of i,j,k, because I was concerned whether you may mess up the boundaries. Especially because you seem to treat x differently from y and z. You have the problem also on only 1 process ?<br></div><div class="gmail_extra"><br><div class="gmail_quote">2015-09-23 18:13 GMT+09:00 TAY wee-beng <span dir="ltr"><<a href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Hi Timothée,<br>
    <br>
    Maybe I can send you part of it 1st. I'm trying to pinpoint why my
    matrix using MatView shows zero for a lot of the values<br>
    <br>
    For i=1,j=1,k=1,<br>
    <br>
    It should be :<br>
    <br>
    Mat Object: 1 MPI processes<br>
      type: seqaij<br>
    row 0: (0, 2)  (12, -2)<br>
    <br>
    but now it's:<br>
    <br>
    row 0: (0, 0)  (1, 0)  (2, 0)  (3, 0)  (4, 0)  (5, 0)  (6, 0)  (7,
    0)  (8, 0)  (12, 0)  (13, 0)  (14, 0)  (24, 0)  (25, 0)  (26, 0) 
    (96, 0)  (97, 0)  (98, 0)  (192, 0)  (193, 0)  (194, 0) <br>
    <br>
    I used:<br>
    <br>
    <i>call
DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,size_x,size_y,&</i><i><br>
    </i><i><br>
    </i><i>size_z,1,PETSC_DECIDE,PETSC_DECIDE,3,stencil_width,lx,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da_uvw_ast,ierr)</i><i><br>
    </i><i><br>
    </i><i>call DMSetMatType(da_uvw_ast,MATAIJ,ierr)</i><i><br>
    </i><i>        </i><i><br>
    </i><i>    call DMCreateMatrix(da_uvw_ast,A_semi_xyz,ierr)</i><i><br>
    </i><i><br>
    </i><i>    call MatSetFromOptions(A_semi_xyz,ierr)</i><i><br>
    </i><i><br>
    </i><i>i = 1, j = 1, k = 1</i><span class=""><i><br>
    </i><i><br>
    </i><i>row(MatStencil_i,1) = i - 1</i><i><br>
    </i><i>                </i><i><br>
    </i><i>                    row(MatStencil_j,1) = j - 1</i><i><br>
    </i><i>                    </i><i><br>
    </i><i>                    row(MatStencil_k,1) = k - 1</i><i><br>
    </i><i>                    </i><i><br>
    </i></span><i>                    row(MatStencil_c,1) = 0</i><span class=""><i><br>
    </i><i>                    </i><i><br>
    </i><i>                    col(MatStencil_i,1) = i - 1</i><i><br>
    </i><i>                </i><i><br>
    </i><i>                    col(MatStencil_j,1) = j - 1</i><i><br>
    </i><i>                </i><i><br>
    </i><i>                    col(MatStencil_k,1) = k - 1</i><i><br>
    </i><i>                </i><i><br>
    </i></span><i>                    col(MatStencil_c,1) = 0</i><i><br>
    </i><i>                    </i><i><br>
    </i><i>                    value_insert(1) = 2.</i><i><br>
    </i><i><br>
    </i><i>                    call
MatSetValuesStencil(A_mat,ione,row,ione,col(:,1),value_insert(1),INSERT_VALUES,ierr)</i><span class=""><i><br>
    </i><i><br>
    </i><i>                    col(MatStencil_i,2) = i - 1 !north</i><i><br>
    </i><i>                    </i><i><br>
    </i><i>                    col(MatStencil_j,2) = j + 1 - 1</i><i><br>
    </i><i>                        </i><i><br>
    </i><i>                    col(MatStencil_k,2) = k - 1</i><i><br>
    </i><i>                        </i><i><br>
    </i></span><i>                    col(MatStencil_c,2) = 0</i><i><br>
    </i><i>                    </i><i><br>
    </i><i>                    value_insert(2) = -2.</i><i><br>
    </i><i><br>
    </i><i>                    call
MatSetValuesStencil(A_mat,ione,row,ione,col(:,2),value_insert(2),INSERT_VALUES,ierr)</i><span class=""><br>
    <pre cols="72">Thank you

Yours sincerely,

TAY wee-beng</pre>
    </span><div><div class="h5"><div>On 23/9/2015 4:45 PM, Timothée Nicolas
      wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">
        <div>
          <div>Yes, I had understood that, I am doing the same, but with
            8 dof. This does not change the declaration for row and col.<br>
            <br>
          </div>
          Can you send (i) the commands you use to create the DMDA, (ii)
          the commands to create the matrix and (iii) those for the
          definitions of ksta2,kend2,jsta2,jend2,size_x ?<br>
          <br>
        </div>
        Timothée<br>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">2015-09-23 17:37 GMT+09:00 TAY wee-beng
          <span dir="ltr"><<a href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>></span>:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor="#FFFFFF" text="#000000"> Hi Timothée,<br>
              <br>
              The matrix is created with 3 dof - u,v,w. So for each
              i,j,k, there are 3 values. Actually I got 3 eqns from the
              u,v,w momentum eqns. They are not coupled together so I
              can also solve them individually. But I was told it's
              faster to group them together. The global indices is
              something like this:<br>
              <br>
              i, j, k, ijk global indices, dof<br>
              1 1 1 1 u<br>
              1 1 1 2 v<br>
              1 1 1 3 w<br>
              2 1 1 4 u<br>
              <br>
              ...<br>
              <br>
              Hope it's clearer now. <br>
              <br>
              Ok, I changed the stencil, it's now working.<span><br>
                <pre cols="72">Thank you

Yours sincerely,

TAY wee-beng</pre>
              </span>
              <div>
                <div>
                  <div>On 23/9/2015 4:22 PM, Timothée Nicolas wrote:<br>
                  </div>
                  <blockquote type="cite">
                    <div dir="ltr">Can you also tell how you created the
                      matrix ? Just in case you created it with the 1
                      dof DMDA, it would not work if you try to input
                      values at places where it is not allocated (which
                      could explain the error message)<br>
                    </div>
                    <div class="gmail_extra"><br>
                      <div class="gmail_quote">2015-09-23 17:18
                        GMT+09:00 Timothée Nicolas <span dir="ltr"><<a href="mailto:timothee.nicolas@gmail.com" target="_blank"></a><a href="mailto:timothee.nicolas@gmail.com" target="_blank">timothee.nicolas@gmail.com</a>></span>:<br>
                        <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                          <div dir="ltr">
                            <div>
                              <div>
                                <div>
                                  <div>The first thing that strikes me
                                    is your definition of the stencils <br>
                                    <br>
                                    <b><i>MatStencil  ::
                                        row(6,1),col(6,7)</i></b><b><i><br>
                                        <br>
                                      </i></b></div>
                                  Why is it not defined with <br>
                                  <br>
                                  <b><i>MatStencil  :: row(4,1),col(4,7)</i></b><b><i><br>
                                    </i></b><br>
                                </div>
                                instead ?<br>
                                <br>
                              </div>
                              Where does the 6 come from ?<span><font color="#888888"><br>
                                  <br>
                                </font></span></div>
                            <span><font color="#888888">Timothée<br>
                                <div>
                                  <div>
                                    <div><br>
                                    </div>
                                  </div>
                                </div>
                              </font></span></div>
                          <div>
                            <div>
                              <div class="gmail_extra"><br>
                                <div class="gmail_quote">2015-09-23
                                  17:14 GMT+09:00 TAY wee-beng <span dir="ltr"><<a href="mailto:zonexo@gmail.com" target="_blank"></a><a href="mailto:zonexo@gmail.com" target="_blank">zonexo@gmail.com</a>></span>:<br>
                                  <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                                    <div bgcolor="#FFFFFF" text="#000000"> Hi,<br>
                                      <br>
                                      I have successfully used
                                      MatSetValuesStencil to insert
                                      values into a Poisson eqn matrix
                                      which has 1 DOF (pressure). Now
                                      I'm trying to insert values in a
                                      momentum eqn matrix which has 3
                                      DOF (u,v,w)<br>
                                      <br>
                                      However, I got the error: <br>
                                      <br>
                                      <i><b>[0]PETSC ERROR:
                                          --------------------- Error
                                          Message
                                          ----------------------------</b></i><i><b><br>
                                        </b></i><i><b>----------------------------------</b></i><i><b><br>
                                        </b></i><i><b>[0]PETSC ERROR:
                                          Argument out of range</b></i><i><b><br>
                                        </b></i><i><b>[0]PETSC ERROR:
                                          Inserting a new nonzero at
                                          (111,5) in the matrix</b></i><i><b><br>
                                        </b></i><i><b>[0]PETSC ERROR:
                                          See <a href="http://www.mcs.anl.gov/petsc/documentation/faq.html" target="_blank">http://www.mcs.anl.gov/petsc/documentation/faq.html</a>
                                          for trou</b></i><i><b><br>
                                        </b></i><i><b>ble shooting.</b></i><br>
                                      <br>
                                      I wonder what's wrong.  For the
                                      momentum eqn, for each DOF, at at
                                      node (dof,i,j,k), I have coupling
                                      i +/- 1, j +/- 1 and k +/- 1.<br>
                                      <br>
                                      The error happens at 111,5, which
                                      corresponds to i = 2, j = 2, k =
                                      2, which is an internal node.<br>
                                      <br>
                                      Here's part of my code below. Hope
                                      someone can help. Thanks!<br>
                                      <b><i><br>
                                        </i></b><b><i>PetscScalar ::
                                          value_insert(7)</i></b><b><i><br>
                                        </i></b><b><i><br>
                                        </i></b><b><i>MatStencil  ::
                                          row(6,1),col(6,7)</i></b><b><i><br>
                                        </i></b><b><i><br>
                                        </i></b><b><i>ione = 1;   iseven
                                          = 7</i></b><b><i><br>
                                        </i></b><b><i><br>
                                        </i></b><b><i>if (cell_type ==
                                          'u') then</i></b><b><i><br>
                                        </i></b><b><i><br>
                                        </i></b><b><i>    offset = 1</i></b><b><i><br>
                                        </i></b><b><i>    </i></b><b><i><br>
                                        </i></b><b><i>else if (cell_type
                                          == 'v') then</i></b><b><i><br>
                                        </i></b><b><i><br>
                                        </i></b><b><i>    offset = 2</i></b><b><i><br>
                                        </i></b><b><i>    </i></b><b><i><br>
                                        </i></b><b><i>else if (cell_type
                                          == 'w') then</i></b><b><i><br>
                                        </i></b><b><i><br>
                                        </i></b><b><i>    offset = 3</i></b><b><i><br>
                                        </i></b><b><i>    </i></b><b><i><br>
                                        </i></b><b><i>end if</i></b><b><i><br>
                                        </i></b><b><i><br>
                                        </i></b><b><i>do k=ksta2,kend2</i></b><b><i><br>
                                        </i></b><b><i><br>
                                        </i></b><b><i>    do j =
                                          jsta2,jend2</i></b><b><i><br>
                                        </i></b><b><i><br>
                                        </i></b><b><i>        do
                                          i=2,size_x-1</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          row(MatStencil_i,1) = i - 1</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          row(MatStencil_j,1) = j - 1</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          row(MatStencil_k,1) = k - 1</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          row(MatStencil_c,1) = offset -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          value_insert = 0.d0</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_i,3) = i + 1 -
                                          1 !east</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_j,3) = j - 1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_k,3) = k - 1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_c,3) = offset -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          value_insert(3) = -(
1./(cell_x(i)%pd_E+cell_x(i+1)%pd_W))*(c_yz(j,k)%fc_E)*inv_Re</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_i,5) = i - 1 -
                                          1 !west</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_j,5) = j - 1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_k,5) = k - 1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_c,5) = offset -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          value_insert(5) = -(
1./(cell_x(i)%pd_W+cell_x(i-1)%pd_E))*(c_yz(j,k)%fc_E)*inv_Re</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_i,2) = i - 1
                                          !north</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_j,2) = j + 1 -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_k,2) = k - 1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_c,2) = offset -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          value_insert(2) = -(
1./(cell_y(j)%pd_N+cell_y(j+1)%pd_S))*(c_zx(i,k)%fc_N)*inv_Re</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_i,4) = i - 1
                                          !south</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_j,4) = j - 1 -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_k,4) = k - 1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_c,4) = offset -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          value_insert(4) = -(
1./(cell_y(j)%pd_S+cell_y(j-1)%pd_N))*(c_zx(i,k)%fc_N)*inv_Re</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_i,6) = i - 1
                                          !front</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_j,6) = j - 1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_k,6) = k + 1 -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_c,6) = offset -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          value_insert(6) = -(
1./(cell_z(k)%pd_F+cell_z(k+1)%pd_B))*(c_xy(i,j)%fc_F)*inv_Re</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_i,7) = i - 1
                                          !back</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_j,7) = j - 1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_k,7) = k - 1 -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_c,7) = offset -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>                </i></b><b><i><br>
                                        </i></b><b><i>           
                                          value_insert(7) = -(
1./(cell_z(k)%pd_B+cell_z(k-1)%pd_F))*(c_xy(i,j)%fc_F)*inv_Re</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_i,1) = i - 1</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_j,1) = j - 1</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_k,1) = k - 1</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          col(MatStencil_c,1) = offset -
                                          1</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>           
                                          value_insert(1) =
                                          2.*c(i,j,k)%vol/del_t -
(value_insert(2)+value_insert(3)+value_insert(4)+value_insert(5)+value_insert(6)+value_insert(7))</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>            call
MatSetValuesStencil(A_semi_xyz,ione,row,iseven,col,value_insert,INSERT_VALUES,ierr)</i></b><b><i><br>
                                        </i></b><b><i>            </i></b><b><i><br>
                                        </i></b><b><i>        end do</i></b><b><i><br>
                                        </i></b><b><i>        </i></b><b><i><br>
                                        </i></b><b><i>    end do</i></b><b><i><br>
                                        </i></b><b><i><br>
                                        </i></b><b><i>end do    </i></b><br>
                                      <pre cols="72">Thank you

Yours sincerely,

TAY wee-beng</pre>
                                      <br>
                                    </div>
                                  </blockquote>
                                </div>
                                <br>
                              </div>
                            </div>
                          </div>
                        </blockquote>
                      </div>
                      <br>
                    </div>
                  </blockquote>
                  <br>
                </div>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </div></div></div>

</blockquote></div><br></div>