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

Matthew Knepley knepley at gmail.com
Tue Jul 10 11:05:33 CDT 2012


On Tue, Jul 10, 2012 at 11:03 AM, TAY wee-beng <zonexo at gmail.com> wrote:

>
> 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> 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)*
>

The right thing to do here is to implement DMDAVecGetArratDOFF90().

    Matt


> 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
>
>
>
>


-- 
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/2c4d58cd/attachment-0001.html>


More information about the petsc-users mailing list