This is also the spot where you can, and want to, introduce optimizations, which IMHO advocates for simplicity of interfacing with the libraries, but I have to admit that the monkey in my brain plays the cymbals when I try to understand reverse communication.
When extending a derived data type (if I’m not mistaken) you can introduce additional dependencies. This means that I could extend my base absOperator_dp
and add the module mpi_f08 and create an mpiOperator_dp
. In the same way I could extend Operator_dp
with openMP, or openACC and so on. Moreover, these extension are standalone from the library and thus easily testable outside. Could reverse communication be as simple/user friendly as this?