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>
