We are looking into automatic differentiation of a coupled system for the purpose of optimization. For example, finding the gradient of some objective function with a PDE constraint where the PDE is solved by a system coupled with preCICE.
I was wondering if something like this has been done or discussed since I haven’t found anything on it. This would involve something like ADOL-C with AMPI, at least when MPI is used as the communication layer in preCICE.
to my knowledge there has been no combination of preCICE and automatic differentiation so far. Looking at our past workshops or community projects, I also do not really find a good fit.
If you want to get started in this direction: Using one of our tutorials and modifying it to your needs is usually a good approach for a first prototype.
I’m aware that this is probably not too much help, but maybe it still helps you getting started.
The scientific computing group in Kaiserslautern does a lot of automatic differentiation for CFD. To my knowledge, they mainly work with SU2 though an I am not sure if the use preCICE for coupling.
I think @mattfrei has been working with the group and with preICE, but I am not sure if he did anything w.r.t. to automatic differentiation and optimisation.
Maybe it is worthwhile to have a look into the work of the group from Kaiserslautern.