> On Dec 12, 2020, at 2:59 PM, Thibault Bridel-Bertomeu 
> <[email protected]> wrote:
> 
> Dear Jed, dear Barry,
> 
> Thank you for the fast answers ! 
> 
> If I have any success I will make sure to make a pull request to provide some 
> version of ex11 in Fortran. 
> 
> Regarding the stubs, I admit I started looking in that direction to add the 
> missing wrappers but I am not sure I fully understand the process yet. 
> For each C function, I gotta provide a Fortran interface in a .h90 file as 
> well as a C function that has a Fortran-like prototype and calls the C 
> function - right ?

  Yes,

> However there are a few things I could not find / understand yet. 
> For instance, it appears that for C functions that have character string 
> arguments take an extra argument in their Fortran-like-prototype-wrapper, 
> namely the length of the string. Is that passed automatically ? I couldn’t 
> find where it could come from ...

   This secret argument is put automatically by the Fortran compiler.

> Another thing is for functions like PetscFVView. I guess the wrapping is less 
> straightforward because I tried a quick something and it segfault’ed. I 
> couldnt find the wrapper for DMView although there is such a routine in 
> Fortran too. Could you please detail how to wrap such functions ? 

PETSC_EXTERN void dmview_(DM *da,PetscViewer *vin,PetscErrorCode *ierr)
{
  PetscViewer v;
  PetscPatchDefaultViewers_Fortran(vin,v);
  *ierr = DMView(*da,v);
}

dm/interface/ftn-custom/zdmf.c


> 
> Thank you very much again,
> 
> Thibault Bridel-Bertomeu
> 
> Le sam. 12 déc. 2020 à 21:48, Barry Smith <[email protected] 
> <mailto:[email protected]>> a écrit :
> 
>    PETSc Fortran interfaces are a combination of automatically generated and 
> manually generated. 
> 
>    For any C PETSc function if the manual page begins with /*@  it generates 
> the Fortran interface automatically (make allfortranstubs).  If it begins 
> /*@C then either the Fortran interface is done manually or is missing. 
> 
>    C functions that have character string arguments or function arguments (or 
> a few other special cases) need to be manually provided.  The automatically 
> generated stubs go in the directory ftn-auto while manually generated ones go 
> in the directory fin-custom.
> 
>    Perhaps you could first generate a list of "missing" Fortran stubs and 
> then for each stub determine why it is missing and if it can be provided. 
> Some are likely easy to provide but a few (involving function arguments) will 
> be more involved. Once you have all the stubs available translating ex11.c 
> becomes straightforward.
> 
>   Barry
> 
> 
>> On Dec 12, 2020, at 9:30 AM, Thibault Bridel-Bertomeu 
>> <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> Dear all, 
>> 
>> Is there somewhere a version of the TS tutorial ex11.c in Fortran ?
>> I am looking into building in F90 (let's say that it is an unavoidable 
>> constraint) an unstructured 3D solver of the Euler equations using the "new" 
>> features of PETSc - mostly DMPlex & PetscFV - but I think there are some 
>> interfaces missing and I find it hard to find workarounds in Fortran. I 
>> would be grateful if anyone could please give me some pointers ...
>> 
>> Thank you very much in advance,
>> 
>> Thibault Bridel-Bertomeu
>> —
>> Eng, MSc, PhD
>> Research Engineer
>> CEA/CESTA
>> 33114 LE BARP
>> Tel.: (+33)557046924
>> Mob.: (+33)611025322
>> Mail: [email protected] 
>> <mailto:[email protected]>
> 
> -- 
> Thibault Bridel-Bertomeu
> —
> Eng, MSc, PhD
> Research Engineer
> CEA/CESTA
> 33114 LE BARP
> Tel.: (+33)557046924
> Mob.: (+33)611025322
> Mail: [email protected] 
> <mailto:[email protected]>

Reply via email to