Good morning all,Thank you Barry for your answer.I started adding some interfaces (PetscFVSetComponentName, PetscFVView & PetscFVSetType so far) and I have to say I think it is working quite well, but the prototypes of those functions are still quite "simple".I am stuck at how to implement the wrappers for PetscDSSetRiemannSolver and PetscDSSetContext though, especially on how to pass a function as an argument to PetscDSSetRiemannSolver ... Are there any similar functions that may already have their wrappers ?Thank you very much,ThibaultLe sam. 12 déc. 2020 à 23:28, Barry Smith <bsmith@petsc.dev> a écrit :On Dec 12, 2020, at 2:59 PM, Thibault Bridel-Bertomeu <thibault.bridelbertomeu@gmail.com> 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.cThank you very much again,Thibault Bridel-Bertomeu--Le sam. 12 déc. 2020 à 21:48, Barry Smith <bsmith@petsc.dev> 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.BarryOn Dec 12, 2020, at 9:30 AM, Thibault Bridel-Bertomeu <thibault.bridelbertomeu@gmail.com> 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,Eng, MSc, PhDThibault Bridel-Bertomeu
—Research EngineerCEA/CESTA33114 LE BARPTel.: (+33)557046924Mob.: (+33)611025322Eng, MSc, PhDThibault Bridel-Bertomeu
—Research EngineerCEA/CESTA33114 LE BARPTel.: (+33)557046924Mob.: (+33)611025322