[petsc-users] Use of DMDAVecGetArrayF90 and DMDAVecRestoreArrayF90

TAY wee-beng zonexo at gmail.com
Sat Nov 21 20:01:53 CST 2015


On 21/11/2015 9:58 PM, Matthew Knepley wrote:
> On Sat, Nov 21, 2015 at 7:47 AM, TAY wee-beng <zonexo at gmail.com 
> <mailto:zonexo at gmail.com>> wrote:
>
>
>     On 10/11/2015 8:47 PM, Matthew Knepley wrote:
>>     On Tue, Nov 10, 2015 at 6:30 AM, TAY wee-beng <zonexo at gmail.com
>>     <mailto:zonexo at gmail.com>> wrote:
>>
>>
>>         On 10/11/2015 8:27 PM, Matthew Knepley wrote:
>>>         On Tue, Nov 10, 2015 at 3:27 AM, TAY wee-beng
>>>         <zonexo at gmail.com <mailto:zonexo at gmail.com>> wrote:
>>>
>>>             Hi,
>>>
>>>             Inside my subroutine, I need to access the DA variable
>>>             cu_types_array frequently.
>>>
>>>             So I need to call DMDAVecGetArrayF90 and
>>>             DMDAVecRestoreArrayF90 before and after frequently.
>>>
>>>             Is this necessary? Can I call DMDAVecGetArrayF90 at the
>>>             start and only call DMDAVecRestoreArrayF90 towards the
>>>             end, where I don't need to modify the values of
>>>             cu_types_array anymore?
>>>
>>>             Will this cause memory corruption?
>>>
>>>
>>>         You cannot use any other vector operations before you have
>>>         called Restore.
>>
>>         Hi,
>>
>>         What do you mean by vector operations? I will just be doing
>>         some maths operation to change the values in cu_types_array.
>>         Is that fine?
>>
>>
>>     While you have the array, no other operation can change the values.
>     Hi,
>
>     Let me clarify this. I declare in this way:
>
>     DM  da_cu_types
>
>     Vec cu_types_local,cu_types_global
>
>     PetscScalar,pointer :: cu_types_array(:,:,:)
>
>     call
>     DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,(end_ijk_uniform(1)
>     - sta_ijk_uniform(1) + 1),(end_ijk_uniform(2) - sta_ijk_uniform(2)
>     + 1),&
>
>     (end_ijk_uniform(3) - sta_ijk_uniform(3) +
>     1),PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,stencil_width_IIB,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da_cu_types,ierr)
>
>     call DMCreateGlobalVector(da_cu_types,cu_types_global,ierr)
>
>     call DMCreateLocalVector(da_cu_types,cu_types_local,ierr)
>
>     So when I need to change the values in DA variable cu_types, I call:
>
>     call
>     DMDAVecGetArrayF90(da_cu_types,cu_types_local,cu_types_array,ierr)
>
>     .... math operations, changing the values of cu_types_array, such as:
>
>     cu_types_array = 0.d0
>
>     call
>     DMDAVecRestoreArrayF90(da_cu_types,cu_types_local,cu_types_array,ierr)
>
>     1st of all, does these DMDAVecGetArrayF90 and
>     DMDAVecRestoreArrayF90 take a lot of time, especially if I call
>     them many times.
>
>
> No.
Hi,

Another qn is supposed the sta_ijk_uniform and end_ijk_uniform change 
every time step. Hence I need to destroy the DM etc and re-create at 
each time step.

If that's the case, will this slow down my code?

Thanks.
>
>     Next qn is whether if I can call DMDAVecGetArrayF90 at the start,
>     and DMDAVecRestoreArrayF90 after operations similar to the one
>     above is finished.
>
>
> You cannot do other Vec operations before you call Restore.
>
>   Matt
>
>     Thanks.
>>
>>        Matt
>>
>>>             Also, must the array be restored using
>>>             DMDAVecRestoreArrayF90 before calling
>>>             DMLocalToLocalBegin,DMLocalToLocalEnd?
>>>
>>>
>>>         Yes.
>>>
>>>           Matt
>>>
>>>
>>>             -- 
>>>             Thank you.
>>>
>>>             Yours sincerely,
>>>
>>>             TAY wee-beng
>>>
>>>
>>>
>>>
>>>         -- 
>>>         What most experimenters take for granted before they begin
>>>         their experiments is infinitely more interesting than any
>>>         results to which their experiments lead.
>>>         -- Norbert Wiener
>>
>>
>>
>>
>>     -- 
>>     What most experimenters take for granted before they begin their
>>     experiments is infinitely more interesting than any results to
>>     which their experiments lead.
>>     -- Norbert Wiener
>
>
>
>
> -- 
> What most experimenters take for granted before they begin their 
> experiments is infinitely more interesting than any results to which 
> their experiments lead.
> -- Norbert Wiener

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20151122/62f02202/attachment.html>


More information about the petsc-users mailing list