<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jun 2, 2015 at 9:30 AM, Francesco Caimmi <span dir="ltr"><<a href="mailto:francesco.caimmi@polimi.it" target="_blank">francesco.caimmi@polimi.it</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tuesday 02 June 2015 07:43:21 Matthew Knepley wrote:<br>
> On Tue, Jun 2, 2015 at 4:52 AM, Francesco Caimmi <<a href="mailto:francesco.caimmi@gmail.com">francesco.caimmi@gmail.com</a><br>
> > wrote:<br>
> > with global_vec as v:<br>
> >         for i in xrange(start,end):<br>
> >             v[i] = 5.0*rank<br>
><br>
> The 'with' construction just uses<br>
><br>
>   VecGetArray()<br>
><br>
> which return the raw C pointer. This is indexed from 0 always, so you want<br>
><br>
>   v[i-start] = 5.0*rank<br>
><br>
> If you want to index using [start, end), you need something like<br>
><br>
>   DMDAVecGetArray()<br>
><br>
>   Thanks,<br>
><br>
>      Matt<br>
Matt,<br>
thank you very much for your answer. Unfortunately I wasn't able to find<br>
documentation for the 'with' construction.<br>
<br>
As far as I understand using DMDAVecGetArray would give me an object with<br>
shape (M,N) in this case, not a vector with shape M*N as global_vec, so I<br>
would have to resort to something different than VecGetOwnershipRange to get<br>
the indexes.<br>
I would prefer to avoid it because I don't feel it would be very clear.<br>
Ithink I will go with the "v[i-start]" thing .<br>
<br>
Anyway, would it be ok to do as follows?<br>
<br>
for i in xrange(start,end):<br>
        global_vec[i] = 5.0*rank<br></blockquote><div><br></div><div>No, you would need xrange(end-start):</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
global_vec.assemblyBegin()<br>
global_vec.assemblyEnd()<br>
<br>
I ask because, while the program works, I cannot see assembly operation in the<br>
C code for ex2, so I am trying to figure out why.<br>
Is there some (python related ) reason that would make such an approach<br>
unwise?<br></blockquote><div><br></div><div>Direct access to arrays can only happen for local values. Thus you do not need the assembly calls.</div><div><br></div><div>  Thanks,</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thanks,<br>
<span class="HOEnZb"><font color="#888888">--<br>
Francesco Caimmi<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><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>-- Norbert Wiener</div>
</div></div>