Unfortunately, FMUs (fmi-standard.org) are not differentiable by design. To enable their full potential inside Julia, FMISensitivity.jl makes FMUs fully differentiable, regarding to: states and derivatives | inputs, outputs and other observable variables | parameters | event indicators | explicit time | state change sensitivity by event
Different AD frameworks have different requirements.
The common ChainRules interface, that is currently used, is not optimal in terms of allocations (there are allocations necessary because of type restrictions to be compliant with all AD frameworks, even if only one specific framework actually needs them).
Implement a dedicated ReverseDiff-Dispatch for eval/rrule
inplace eval! function for FMU2Output
Improve the common (ChainRules) functions eval/frule/rrule, so they don't need to cover for the ReverseDiff case (like e.g. this issue)
This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!