<div dir="ltr"><div><div><div><div><div><div>Dear all,<br></div>I have a vector say sol which is a vector created from a dmda with dof = 3.<br>Now I need to provide an interface to the part of my code which does not use petsc but needs access to the values of sol. <br>
<br>I was thinking of providing an interface such as:<br></div>double solver::getSolutionAtPosition(int x, int y, int z, int field);<br></div>which should return a value of the vector sol at the grid position (x,y,z) and dof = field.<br>
<br></div>I know how to get the array and loop through all the values such as:<br>DMDALocalInfo info;<br>ierr = DMDAGetLocalInfo(da,&info);CHKERRQ(ierr);<br><br>Field ***sol;<br>ierr = DMDAVecGetArray(da,b,&rhs);CHKERRQ(ierr);<br>
<br>    for (PetscInt k = info.zs; k<info.zs+<a href="http://info.zm">info.zm</a>; ++k) {<br>        for (PetscInt j = info.ys; j < info.ys+info.ym; ++j) {<br>            for (PetscInt i = info.xs; i < info.xs+info.xm; ++i) {<br>
                //access sol[k][j][i].vx   or sol[k][j][i].vy or sol[k][j][i].vz depending on field<br><br>            }<br>        }<br>    }<br><br></div>But if I have a particular (x,y,z) based on global co-ordinate system, how do I get the value for the given field ? <br>
<br></div>Thanks,<br>Bishesh<br></div>