Warning: v2.4.3 corrupts model

A model made originally with v2.4.0, and updated with v2.4.3 works no more. Error message “The parameters could not be evaluated. Check the parameter equations” pops up. Only a ghost image with few elements is shown, no results can be opened and no actions taken to heal it. Attempt to reopen .frd creates long list of errors beginning with “Object reference not set to an instance of an object” plus about thirty others. The model represents remarkable amount of work, is there a way to get it opened again for example in v2.4.0? Any tips are welcome!

In long run, there should be a method to save models in secure format (ascii) so, that in case of incident like this, the model can be corrected with editor and downgraded if necessary for opening in a stable version. If something is lost, it is small job to add them again instead of making everything from scratch.

Best regards, Timo

P.S. Merry Christmas and Happy New Year to all colleagues!

1 Like

I cennot pinpoint the problem. Do you still have the model and could you share it with me?

The amount of work to add this is really huge since it was an early decision to not guarantee 100 % forward compatibility of older models.

We now have a command history that could help with smaller models, but it is usually not suited for larger models with long command histories (especially if the source geometry files changed but kept the same file names).

But even if the file were an editable ASCII file, if it gets corrupted in a newer version and saved to an existing working file, it will overwrite the old file and corrupt it.

What I could add is a check if the file to overwrite is from an older version, and show a warning to the user. Then, if the user agrees to continue, I could save the file to a temp file and try to read it in the background to check for errors (not all errors will be caught here). Only if there are no errors will the file be overwritten.

Any other ideas?

Abaqus /CAE doesn’t overwrite files when this happens. It checks 1st if file to open is older version ; if yes ==> makes a copy prepended with the version (e.g. V2.4.0_model_name.pmx), then updates to new version and saves with original name. In that way you keep both worlds in the working directory.

This caught me out on a couple of models when I upgraded to V2.4.0. It modified the files and due to some bug didn’t work as before, no going back after (with old version) if I saved the new update. Luckily I had backups….

1 Like

I like this idea. But I do not understand when the corruption happens. When the file is opened, it looks OK, but then, when it is written, it gets corrupted.

Dear Matej,

I send it vie wetransfer

It is now obsolete, I had to make everything again from much older version, so no need to heal it.

Best regards,

Timo

Looking into the file, I found out that all visualisations were gone. The rest of the data is there, but it is very hard to correctly recreate the visualisation edges from existing elements. Without the edges, the outer surface cannot be split into surfaces, which are the basis of all selection routines.

I will have to investigate how this problem occurred.

Apologies, lazy writing in my post, have edited it now. Didn’t corrupt the files, but e.g. hit new bugs with new version, and after a save I couldn’t go back to older version.

Ok, I understand. I will prevent PrePoMax from overwriting files containing older version models. This feature will rename the old model.pmx file to model_v#.#.#.pmx file when saving to keep it as a backup.

1 Like

For reference, more on how this works for model and output databases in Abaqus/CAE (maybe something will be useful):

  1. First, a prompt pops-up:

  1. Then a conversion summary is printed in the Message Area and a conversion log is created. There’s also a pop-up window:

The log file contents are as follows:

The file “xxx.cae” was copied to a backup file named “xxx-release.cae”.
The file “xxx.jnl” was copied to a backup file named “xxx-release.jnl”.
Upgrading database tables
Conversion of model database “xxx.cae” completed successfully.

  1. Custom keyword edits might be misplaced and in such a case it’s advised to use the Discard All Edits option and recreate them in the correct location.

  2. This procedure automatically locks parts and assembly:

Abaqus/CAE automatically locks the assembly and all the parts in a model when it upgrades a database from an older release of Abaqus. Locking the assembly and the parts allows Abaqus/CAE to complete the upgrade faster than if the assembly and all the parts were also regenerated. If you unlock a part that was locked by a database upgrade, Abaqus/CAE regenerates that part. Similarly, if you unlock an assembly that was locked by a database upgrade, Abaqus/CAE regenerates the assembly.

  1. Alternatively, there’s also a command abaqus upgrade available for output databases.
1 Like

Interesting. This is probably a better approach :slight_smile: The backup file is created when the model is opened and converted, not when it is saved. So if I have a file model.pmx and open it in the new version, first the old file is copied into a backup, and the model is converted. What happens to the original file, model.pmx, if the user does not save the opened model? Does it remain unchanged? And what if the user opens it again? Is the backup created for the second time?

Even if you agree to do the conversion, but afterwards just exit without saving, the original file will still be converted. So reopening it won’t prompt for conversion anymore.

If you open the backed-up file (with old version number in the name), it will prompt for conversion and just create another file with prepended version number (so the version number will be repeated, e.g. model-old_version_no-old_version-no.pmx).

1 Like

I made some code changes to prevent data loss, but I could not reproduce the problem, so I am not sure it is a 100% solution. I think the problem occurred because a save attempt failed.

To add an additional safeguard, the .pmx files from an older PrePoMax cannot be overwritten. If the user saves the model to a file that already exists and the file is an older .pmx file, the older file is backed up with a version extension.

So the backup happend when the file is saved and not when the file is opened.

3 Likes