[petsc-users] Declaring struct to represent field for dof > 1 for DM in Fortran

TAY wee-beng zonexo at gmail.com
Tue Jul 10 11:03:27 CDT 2012


Yours sincerely,

TAY wee-beng

On 10/7/2012 2:07 PM, Matthew Knepley wrote:
> On Tue, Jul 10, 2012 at 5:39 AM, TAY wee-beng <zonexo at gmail.com 
> <mailto:zonexo at gmail.com>> wrote:
>
>     Hi,
>
>     I read in the manual in page 50 that it's recommended to declare
>     struct to represent field for dof > 1 for DM.
>
>
> We mean C struct. C makes it easy (just use a pointer type cast). 
> Fortran makes it hard unfortunately.
>
>    Matt
Ok, I'll try to use another mtd.

Btw, if I declare:

/PetscScalar,pointer :: array2(:,:,:)

with DMDACreate2d using dof = 2,

call DMDAVecGetArrayF90(da,x_local,array2,ierr)

access array2 ....

call DMDAVecRestoreArrayF90(da,x_local,array2,ierr)/

How is the memory for "array2" allocated ? Is it allocated all the time, 
or only between the DMDAVecGetArrayF90 and DMDAVecRestoreArrayF90?

Also, can I "reuse" array2? For e.g., now for y_local:

/call DMDAVecGetArrayF90(da,y_local,array2,ierr)

access array2 ..../ /

call DMDAVecRestoreArrayF90(da,y_local,array2,ierr)/


Thank you!

>
>     I'm using Fortran and for testing, I use dof = 1 and write as:
>
>     /type field
>
>     //PetscScalar//u        (or real(8) :: u)
>
>     end type field
>
>     type(field), pointer :: field_u(:,:)/
>
>     When I tried to use :
>
>     /call DMDAVecGetArrayF90(da,x_local,field_u,ierr)/
>
>     I got the error : There is no matching specific subroutine for
>     this generic subroutine call.   [DMDAVECGETARRAYF90]
>
>     The da, x_local has been defined with the specific DM routines. It
>     worked if I use :
>
>     /PetscScalar,pointer :: array(:,:) and
>
>     call DMDAVecGetArrayF90(da,x_local,array,ierr)/
>
>     May I know what did I do wrong?
>
>
>     -- 
>     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


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


More information about the petsc-users mailing list