[petsc-users] Questions abt DM and DMDALocalToLocalBegin / End
TAY wee-beng
zonexo at gmail.com
Sun Apr 6 21:31:19 CDT 2014
Hi,
I understand that I need to use
call DMDAVecGetArrayF90(da,u_local,u_array,ierr)
if I want to access the u_local values.
And then DMDAVecRestoreArrayF90 once it's done.
I need to access the u_local values many times for each time step. So
must I restore the array after each access?
Or do I only have to do it when I need to call some routines like
DMLocalToGlobalBegin, DMDALocalToLocalBegin etc?
Thank you
Yours sincerely,
TAY wee-beng
On 6/4/2014 10:54 PM, Jed Brown wrote:
> TAY wee-beng <zonexo at gmail.com> writes:
>
>> Hi,
>>
>> I have questions abt DM and DMDALocalToLocalBegin / End.
>>
>> I have 3 dof for u,v,w using DMDACreate3d.
>>
>> Currently I'm using the topology of DM to help update the ghost values
>> on each processor.
>>
>> I found that to update the ghost values, I only need to use
>> DMDALocalToLocalBegin / End.
> It is common for explicit methods to be implemented using only local
> vectors. I recommend using global vectors if you might want to use
> implicit methods.
>
>> Another thing is updating ghost values of only a single variable e.g. u.
>>
>> Is that possible if my DMDACreate3d has 3 dof u,v,w?
>>
>> Or must I create DMDACreate3d with only 1 dof u?
> Just update all variables. It is usually not very wasteful. If
> profiling and performance analysis shows that your method is limited by
> network bandwidth (as opposed to latency or local compute and bandwidth)
> then you can profile the same operations having extracted the single
> variable. It is usually not worth it and you're better off structuring
> your code to work with all variables.
More information about the petsc-users
mailing list