On Jan 1, 2014, at 3:06 PM, Barry Smith <[email protected]> wrote:

> 
> 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.
> 

This is somehow enforced as soon as PetscInitialize is called?

-gideon


>   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