[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