OpenMDAO Logo

An open-source MDAO framework written in Python.

Change to Case Recording

When we designed case recording, we tried to give users ultimate flexibility and control. Case recording responsibilities were given to the drivers, which allowed users to have very fine-grained control over how/when they were recorded by putting different recorders into different drivers. We also allowed users to specify multiple simultaneous case recorders. But the result has never been fully satisfying to us. The current recording API is a little ad hoc and not fully consistent, even across the drivers in our standard library. So we’ve been thinking about improving the case recording behavior of OpenMDAO for a while now. We want to make it more automatic, easier to use, and save more information. The new method would record anything that is relevant (indicated by the data dependency graph) in your entire model. This would make sure you never had to re-run a model to get a value you didn’t think to save before. It would also provide a single consistent API for generating plots of your data.

The most significant change is that we want to move the place where you specify recorders out of the Driver and up into the Assembly. You will still be able to write your own recorders and specify as many of them as you like. But you will no longer have the ability to have separate recorders for each driver. Although we thought allowing separate recorders was a neat idea when we did it, in practice we’ve always just assigned the same recorder to all drivers (or sometimes just added a recorder to the top driver only).We’ve never seen any of our users do it either. But this will be a major backward incompatible change, and we wanted to give everyone the opportunity to weigh in. In case anyone feels strongly about this issue, we’re going to open up a discussion on our forum.

It boils down to this.┬áThis will affect anyone who has written their own case recorders but also anyone who has written their own drivers that used the case recording API. More importantly, it will also break any models where you used case recorders. It won’t be a serious challenge to fix these models. You’ll simply move the specification of case recorders up from the Driver to the Assembly. But you’ll still have to do it (or stay with an older version) to user your old models. We’ll be starting this update in the pretty near future, so if anyone has any suggestions or can relate experiences from their use of case recording, we’d love to hear ’em! We’re working on the design of the new interface now, and we’ll post some details about it in the near future.

Comments are closed.

Fork me on GitHub