<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Supposing that I do not have a priori information as to the number of degrees of freedom per DA vertex; I want the number of mesh points along each sample path to be variable.  Hence, I can’t really use a statically defined structure as you suggest.  In that case, are the DOF routines the only option?<div class=""><br class=""><div class="">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;  ">-gideon</span>

</div>
<br class=""><div><blockquote type="cite" class=""><div class="">On Feb 28, 2015, at 2:42 PM, Matthew Knepley <<a href="mailto:knepley@gmail.com" class="">knepley@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote">On Sat, Feb 28, 2015 at 1:35 PM, Gideon Simpson <span dir="ltr" class=""><<a href="mailto:gideon.simpson@gmail.com" target="_blank" class="">gideon.simpson@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">I’m having some trouble understanding what the difference between these two routines are, though I am finding that there certainly is a difference.  I have the following monte carlo problem.  I am generating n_sample paths each of length n_points, and storing them in a 1D DA:<br class="">
<br class="">
DMDACreate1d(PETSC_COMM_WORLD,DM_BOUNDARY_NONE, n_samples, n_points, 0, NULL, &da);<br class="">
DMCreateGlobalVector(da,&paths_vec);<br class="">
<br class="">
When I then go to access them,<br class="">
<br class="">
PetscScalar **u_array;<br class="">
<br class="">
I find that:<br class="">
<br class="">
DMDAVecGetArrayDOF(da, paths_vec, &u_array);<br class="">
<br class="">
works as exepected, in that u_array[i] is a pointer to the first index of the i-th sample path, but if I call:<br class="">
<br class="">
DMDAVecGetArray(da, paths_vec, &u_array);<br class="">
<br class="">
u_array[i] is something else, and my attempts to manipulate it result in segmentation faults, even though the code compiles and builds.</blockquote><div class=""><br class=""></div><div class="">Suppose that you have 4 PetscScalar values at each vertex of the 1D DMDA. If you use </div><div class=""><br class=""></div><div class="">  PetscScalar **u;</div><div class=""><br class=""></div><div class="">  DMDAVecGetArrayDOF(da, uVec, &u);</div><div class=""><br class=""></div><div class="">  u[i][2] /* refers to 3rd scalar on vertex i */</div><div class=""><br class=""></div><div class="">On the other hand you could use</div><div class=""><br class=""></div><div class="">typedef struct {</div><div class="">  PetscScalar a, b, c, d;</div><div class="">} Vals;</div><div class=""><br class=""></div><div class=""> Vals *u;</div><div class=""><br class=""></div><div class=""><div class=""> DMDAVecGetArray(da, uVec, &u);</div></div><div class=""><br class=""></div><div class=""> u[i].c /* refers to the same value as above */</div><div class=""><br class=""></div><div class="">Basically the DOF version gives you an extra level of indirection for the components.</div><div class=""><br class=""></div><div class="">  Thanks,</div><div class=""><br class=""></div><div class="">     Matt</div><div class=""> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class=""><font color="#888888" class=""><br class="">
-gideon<br class="">
<br class="">
</font></span></blockquote></div><br class=""><br clear="all" class=""><div class=""><br class=""></div>-- <br class=""><div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br class="">-- Norbert Wiener</div>
</div></div>
</div></blockquote></div><br class=""></div></body></html>