I use SVN to manage my Amesim related files. Because simulation results are stored inside of the Amesim ame model file, the model is considered to have changed even just by running a simulation.
Therefore, SVN would consider this a new revision, and also the file size could be potentially very large.
According to SVN practices, I would only want to check in a new version when the model itself has changed.
How best to reconcile these two different perspectives?
One way could be to export out the results of a model after simulation. Then purge the model and commit to SVN if necessary. There are 2 benefits to this: 1) efficient use of revision control (because simulation results are no longer saved every time in the repository), 2) the model is only checked in if structural changes occur.
What is considered best practice from an Amesim perspective?
Yes, it is a good practice indeed to purge the model before committing it. You can save and export the model parameters and the simulation results by using the function "save as linked experiment" of the run monitor window.
You may want to consider LMS Imagine.Lab Sysdm as a more comprehensive versioning tool for models and data management.
Couple of thoughts:
1) From a end-user workflow perspective, this is pretty convoluted to expect every time before committing... I will be exploring some ways of automating certain steps using APIs. Basically, I am considering the following:
i) create an embedded experiment to store parameter and simulation data. Then export this to a linked experiment.
ii) save and close model.
iii) purge model
iv) commit model to version control
Then the trick is to create automation around some of these steps to make it more user-friendly.
2) How does SysDM handle versioning? How does it manage the structural change of a model with the presence of simulation data? In the past, Siemens has said that SysDM would interface with SVN which is the tool we use internally. If we were to do that, would we run into the same issue as just using SVN? Why is SysDM better? Any information on this will be very helpful.
Thanks for sharing your thoughts.
LMS Sysdm is built around models and data management in the context of the extended enterprise, enabling then collaborative model development and sharing among the actors of the modeling process. Just to mention a few valuable features, with Sysdm you can:
- Version models and data with a branches/trunk approach
- Structure your repository around your company/department organization and/or the product complexity
- Coordinate the user’s interactions with the repository using role-based access control adapted to users profile
- Define and assign attributes to the models and data under revision to provide meta-data information
- Perform search and retrieval of system models and data based on their attributes or other models-related information
Concerning your question, Sysdm compares the version of the model which is published in the repository with the one on your local workspace. Each modification on your local models will be interpreted as a new version that you can decide to commit/publish. Please, note that Sysdm is able to detect if the Amesim model you want to publish to the repository contains simulation data. If so, it provides you with several pre-publish options: you can decide either to purge before commit, keep the simulation data, or purge the model according to the purging options selected in Amesim.
Please, do not hesitate to contact your local support if you are interested in evaluating LMS Sysdm.
I hope this answers your questions,
Regarding the pre-publish options: does SysDM provide a way to keep the simulation data but not in version control? Example: if a model contains simulation data, can I extract the simulation data before purging and committing?
I think it would be a rare circumstance to commit the model with the simulation results - it would be very common to want to save the simulation data outside of version control though, e.g. archive it as part of an analysis report.
As a versioning tool, Sysdm assists you in versioning your models and data associated to it. For this reason it provides the possibility to either keep or purge results data before committing. Then, if you decide not to version your model’s results, you can just export them with Amesim.
You mentioned that “it would be a rare circumstance to commit the model with the simulation results”. I would be interested in knowing why you think so. In my opinion this could be very useful for at least two reasons. One is for models that have been validated or reached some sort of “milestone gate” and then having the results associated could represent a baseline for future models developments. So you want to keep track of the model and also the results. The second is for models that need a considerable simulation time: in this case you might not want to re-run simulations and keep the results. If you are concerned by the size of the files to version, please note that in Amesim you can also adopt “saving strategies” and decide which variables to save, reducing the results file size.