<div dir="ltr"><div dir="ltr">On Mon, Mar 11, 2019 at 8:09 PM Maahi Talukder via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>> wrote:<br></div><div class="gmail_quote"><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"><br>Thank you for your reply. <div><br></div><div>I still have some confusion. So if (i,j) is a point on the structured grid( Where "i" is the column and "j" is the row), and the information associated with the (i,j) point on the grid is stored in some (m,n) location of the matrix A (Where Ax =b), I still don't </div><div>understand why both of  row(MatStencil_i,1) and row(MatStencil_j,1) are necessary? I mean is it something like mapping "i" from grid to its location in the matrix? Would you please explain that?</div></div></blockquote><div><br></div><div>I don't think you are understanding. (i, j) is a grid location, so it corresponds to a dof number n. A location (m, n) in the Jacobian</div><div>relates two variables, one at some location (i_m, j_m) in the grid and another at location (i_n, j_n) in the grid. The matrix grid</div><div>and spatial grid are completely different things. For example, you could have a 3D spatial grid, but you still have a 2D matrix.</div><div><br></div><div>  Matt</div><div> </div><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>Regards,</div><div>Maahi </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Mar 11, 2019 at 4:41 PM Patrick Sanan <<a href="mailto:patrick.sanan@gmail.com" target="_blank">patrick.sanan@gmail.com</a>> wrote:<br></div><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">There are two different types of rows and columns:<br><div>1. Rows and columns in a grid</div><div>2. Rows and columns in a matrix</div><div><br></div><div>"i" and "j"  refer to rows and columns in the grid, but "row" and "col"  refer to rows and columns in the matrix.</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Mo., 11. März 2019 um 21:18 Uhr schrieb Maahi Talukder via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" target="_blank">petsc-users@mcs.anl.gov</a>>:<br></div><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">Hello all, <div><br></div><div>I am trying to solve Poisson Equation on structured grid using 9-point stencil in 2D. Now to setup my matrix, I came across C structure MatStencil in ex22f.F90</div><div><br></div><div>...........................................................................................................</div><div><pre width="80" style="color:rgb(0,0,0)"><pre width="80">call <a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/DMDA/DMDAGetCorners.html#DMDAGetCorners" target="_blank">DMDAGetCorners</a>(da,xs,ys,zs,xm,ym,zm,ierr)

<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line107">107: </a>      <font color="#4169E1">do</font> 10,k=zs,zs+zm-1
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line108">108: </a>        <font color="#4169E1">do</font> 20,j=ys,ys+ym-1
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line109">109: </a>          <font color="#4169E1">do</font> 30,i=xs,xs+xm-1
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line110">110: </a>          row(MatStencil_i) = i
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line111">111: </a>          row(MatStencil_j) = j
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line112">112: </a>          row(MatStencil_k) = k
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line113">113: </a>          <font color="#4169E1">if</font> (i.eq.0 .or. j.eq.0 .or. k.eq.0 .or. i.eq.mx-1 .or. j.eq.my-1 .or. k.eq.mz-1) then
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line114">114: </a>            v(1) = 2.0*(HxHydHz + HxHzdHy + HyHzdHx)
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line115">115: </a>            call <a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatSetValuesStencil.html#MatSetValuesStencil" target="_blank">MatSetValuesStencil</a>(jac,i1,row,i1,row,v,<a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/INSERT_VALUES.html#INSERT_VALUES" target="_blank">INSERT_VALUES</a>,ierr)
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line116">116: </a>          <font color="#4169E1">else</font>
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line117">117: </a>            v(1) = -HxHydHz
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line118">118: </a>             col(MatStencil_i,1) = i
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line119">119: </a>             col(MatStencil_j,1) = j
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line120">120: </a>             col(MatStencil_k,1) = k-1
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line121">121: </a>            v(2) = -HxHzdHy
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line122">122: </a>             col(MatStencil_i,2) = i
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line123">123: </a>             col(MatStencil_j,2) = j-1
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line124">124: </a>             col(MatStencil_k,2) = k
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line125">125: </a>            v(3) = -HyHzdHx
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line126">126: </a>             col(MatStencil_i,3) = i-1
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line127">127: </a>             col(MatStencil_j,3) = j
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line128">128: </a>             col(MatStencil_k,3) = k
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line129">129: </a>            v(4) = 2.0*(HxHydHz + HxHzdHy + HyHzdHx)
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line130">130: </a>             col(MatStencil_i,4) = i
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line131">131: </a>             col(MatStencil_j,4) = j
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line132">132: </a>             col(MatStencil_k,4) = k
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line133">133: </a>            v(5) = -HyHzdHx
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line134">134: </a>             col(MatStencil_i,5) = i+1
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line135">135: </a>             col(MatStencil_j,5) = j
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line136">136: </a>             col(MatStencil_k,5) = k
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line137">137: </a>            v(6) = -HxHzdHy
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line138">138: </a>             col(MatStencil_i,6) = i
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line139">139: </a>             col(MatStencil_j,6) = j+1
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line140">140: </a>             col(MatStencil_k,6) = k
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line141">141: </a>            v(7) = -HxHydHz
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line142">142: </a>             col(MatStencil_i,7) = i
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line143">143: </a>             col(MatStencil_j,7) = j
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line144">144: </a>             col(MatStencil_k,7) = k+1
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line145">145: </a>      call <a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatSetValuesStencil.html#MatSetValuesStencil" target="_blank">MatSetValuesStencil</a>(jac,i1,row,i7,col,v,<a href="https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/INSERT_VALUES.html#INSERT_VALUES" target="_blank">INSERT_VALUES</a>,ierr)
<a name="m_712265297886885157_m_-6006225487238240700_m_-5189516850187789077_m_-1465235793313435427_line146">146: </a>          endif</pre><pre width="80">.....................................................................................</pre><pre width="80">What I am confused about is what it means to have the value of row in i and j directions(row(MatStencil_i,1) & row(MatStencil_j,1)).</pre><pre width="80">Same confusion goes for the column values as well. I mean generally in a  2D Matrix row values are in j/y direction and column values are in i/x direction.</pre><pre width="80">Could you please explain that?</pre><pre width="80"><br></pre><pre width="80">Regards,</pre><pre width="80">Maahi Talukder</pre><pre width="80">Department of Mechanical Engineering</pre><pre width="80">Clarkson University</pre></pre></div></div>
</blockquote></div>
</blockquote></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>