On Jan 1, 2014, at 1:48 PM, Gideon Simpson <[email protected]> wrote:

> I'll try that, but I'm still a bit confused over the relationship between 
> DMDA and Vec objects. 
> 
> Supposing I called DMDACreate1d with M as my global dimension and dof as the 
> number of degrees of freedom.  So this is really managing M * dof scalars.  
> When I call DMCreateGlobalVector, isn't that associated with an M * dof size 
> vector? I really just want to clone a vector of size M, but with the same 
> partitioning.
> 
     You should create two DM objects: one with a dof argument > 1 and one with 
a dof argument of 1. Now use the DMCreateGlobalVector() on the one with dof of 
1 to create the vector of total size M.

    When you create DMDA objects with all other arguments the same except the 
dof they are guaranteed to have the same parallel distribution.

   Barry

    
> -gideon
> 
> On Jan 1, 2014, at 2:41 PM, Jed Brown <[email protected]> wrote:
> 
>> Gideon Simpson <[email protected]> writes:
>> 
>>> Suppose I have a 1D dmda structure distributed across N processors,
>>> where there are some number of degrees of freedom (dof) associated
>>> with each element.  Now, suppose I want to have a vec also distributed
>>> across the N processors, but distributed "in the same way" as the
>>> dmda.  That is to say, if I call
>>> 
>>> DMDAGetCorners(da, &idx_lo, NULL, NULL, &idx_width, NULL, NULL);
>>> 
>>> idx_lo to idx_lo+ idx_width
>>> 
>>> are the same indices I'd get if I called
>>> 
>>> VecGetOwnershipRange(vec, &idx_low, &idx_hi);
>>> 
>>> Can I do this?  How?
>> 
>> What's wrong with DMCreateGlobalVector()?
> 

Reply via email to