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.
I somehow missed your discussion and was not able to pitch-in in due time. But here come my 2 cents anyway...
@FedericoC makes a very good description of LMS Imagine.Lab Sysdm and when highlighting the reasons why it would be interesting to save in some situations some results into the repository he hits the main reasons why indeed we have added an option to LMS Sysdm to allow for such a workflow. When reaching a milestone (like final version of the model) one might want to finally store at least one version which includes simulation results (rather than in every version). Please note that we consider best practice not to store simulation results since 1D simulations are normally fast and can be repeated in a relatively easy way - meaning little investment. The most important setup to capture is the model and all its related data like tables or libraries that were used. And this is were LMS Sysdm excels. It ensures the complete configuration (input data (tables), libraries and others) to each and every version you store into the repository.
@aditya_shah going back to your question regarding connecting LMS Sysdm to an existing SVN repository I must disappoint you since LMS Sysdm is not able to do this (at least without a big work behind the scenes which is normally prohibitive). LMS Sysdm is a combination of an SVN Repository and a Database to create a working frame that enables true Model Management (opposed to "just" model versioning). The capabilities of this framework have been well listed by @FedericoC in a previous post but it is indeed the combination of all these (capabilities) that make the solution powerful and scalable.
Let me know if you still have questions around this topic. I will be glad to help