We are halfway through the OpenMDAO 2020 Reverse Hackathon, so it is time to give all you users an update on what we’ve learned so far and what to expect for the last week.
What we have learned so far
From all of the problems submitted, we identified three solution approaches that were broadly relevant:
- Using OpenMDAO as a compute engine, and writing your own run-scripts around it
- Using sub-problems in OpenMDAO
- Building unsteady/transient analysis in OpenMDAO
I will be adding more detailed write ups of these topics into the repository for RevHack 2020, but I want to cover one over-arching idea that is common across all of them: OpenMDAO does not have to be in charge, nor does it have to be the interface you present to your users
Though the dev team tends to let OpenMDAO be in charge, that doesn’t mean that you have to. In fact, it’s possible that for some applications adding a different layer on top that provides a simpler and more standardized interface for your users is the better solution. You’ll see a lot of our answers to the problems posed for RevHack2020 are going to be posed this way — not all, but many.
We have some good features to support this kind of use case, even some specifically for analytic derivative situations. Fairly recently we added a feature that allows you to propagate derivatives across an entire problem in an efficient manner using a for-loop around a problem.
Moving forward, I think we’ll try to emphasize this use-case more. The native OpenMDAO way isn’t the solution to every single problem. More importantly I am trying to see the world through your (the users) perspective, and would like to find ways to map OpenMDAO use the common — some might argue more natural — types of coding patterns.
What to expect for the second week of RevHack2020
We have started work on solutions for every problem. Most of our effort in the first week went into figuring out what needed to be done and how best to do it. Now that we have had a chance to make some progress, we’ll be posting actual solutions to the repo soon, along with some detailed explanation of why we did things that way. (there are some solutions up already for the CMA-ES problem).
I am putting a lot of effort into seeing the world from your perspective, and the solutions we post will reflect that. As we see them, please feel free to post your own PR’s to modify/question our solutions. The more feedback we get, the better we can tailor things to be useful to you.