Barry Smith <bsm...@mcs.anl.gov> writes: >> On Oct 20, 2017, at 12:31 PM, Jed Brown <j...@jedbrown.org> wrote: >> >> Barry Smith <bsm...@mcs.anl.gov> writes: >> >>> Adrian, >>> >>> You should not use F90Array1d *rptr as arguments in the Fortran >>> interface. You should just use a regular Fortran one dimensional array of >>> real/scalar. >>> Fortran doesn't handle polymorphism in this way at all. You have to have >>> multiple f90 interfaces, one for each type and provide a C stub for real, >>> int, or whatever else you want to send. >> >> Barry, look at the "use mpi_f08" way of calling MPI from Fortran. > > Jed, > > Rather terse response. > > Are you suggesting in PETSc we use type(*) to manage multiple types > through the same function? Looks doable, I wasn't aware of this. This could > possibly reduce a lot of code duplication we currently have.
PetscSF uses MPI type handling and thus it would make sense to use a similarly designed Fortran module. > Still I would like to get rid of the use PetscDataType rather than write > new code that uses it. > > I need to think more in this case. > > Waiting to hear from Adrian what types he needs to pass around (use of > PetscDataType restricts to built in MPI datatypes regardless of what Fortran > interface approach we use What does that has to do with PetscSF, which never used PetscDataType and uses MPI datatypes with support for derived types (albeit with a limited number of combiners)?