File Exchange

image thumbnail


version 1.03 (955 KB) by

Program for the extraction of Abaqus analysis results to Matlab



View License

Abaqus2Matlab is a program for the extraction of ABAQUS analysis results to MATLAB. It is an application which aims to provide a link between ABAQUS and MATLAB, which will enable ABAQUS users to perform postprocessing of ABAQUS results in MATLAB. It can be used to retrieve results from an ABAQUS analysis, which can be easily transferred from ABAQUS to MATLAB for further processing. It is written in MATLAB programming language and is available as source code distributed under a BSD-style license (see License.txt).
A new version of Abaqus2Matlab has just been released and I hope that it is of interest to you. This new release constitutes a very significant step forward in the development of this well-known software to connect Abaqus and Matlab. Abaqus2Matlab is now offered as an easy-to-install Matlab App that includes the following novelties:
1) The possibility to postprocess not only .fil files, but also .odb and .mtx
2) A new Graphical User Interface (GUI) that enables the user to easily request output variables and automatically creates a Matlab script with all the required information.
Everything has been extensively documented, including video tutorials. For more information visit
We hope that you enjoy it and we look forward to hearing your feedback.

If using Abaqus2Matlab for research or industrial purposes, please cite:
G. Papazafeiropoulos, M. Muñiz-Calvente, E. Martínez-Pañeda. Abaqus2Matlab: a suitable tool for finite element post-processing.
Advances in Engineering Software. Vol 105. March 2017. Pages 9-16. (2017)

For more information, please see:

Comments and Ratings (24)

Thanks for this extremely useful package. Is there any reason why there is not a function to read the deformation gradient, record key 90?

2nd version of Abaqus2Matlab released! Visit and give us your feedback!

Thank you very much Jin Yan!


Very helpful for my optimization research work. I was trying to write such a code on my own before and I know it is not easy. Thanks a lot! I will definitely cite your paper!

Diab Abueidda

Thanks a lot. It worked based on your answer.

Thank you for your interest in Abaqus2Matlab.
The issue that you describe appeared in a previous version of Abaqus2Matlab. More specifically, in the latest Matlab versions, the 'CollectOutput' parameter in the textscan function takes the values 0 (false) or 1 (true), whereas in the earlier Matlab versions the same parameter took the values '0' (false) or '1' (true). To ensure compatibility of Abaqus2Matlab with both the old and the new syntax, the Fil2str.m function has been modified by replacing:

C = textscan (fileID, '%s', 'CollectOutput', '1', 'delimiter', '','whitespace','','endofline','');


    C = textscan (fileID, '%s', 'CollectOutput', '1', 'delimiter', '','whitespace','','endofline','');
    C = textscan (fileID, '%s', 'CollectOutput',  1 , 'delimiter', '','whitespace','','endofline','');

namely if the try statement gives an error (which occurs for users of newer Matlab versions), then the catch statement is executed giving the correct result. The Abaqus2Matlab version that is uploaded here does not have this problem and is fully updated.

Diab Abueidda

Hey team,
When I type Verify8 for example, Abaqus runs and it creates the input, odb and other files. However, I get the following error:
Error using textscan
CollectOutput must be a numeric scalar.

Error in Fil2str (line 41)
C = textscan (fileID, '%s', 'CollectOutput', '1', 'delimiter', ...

Error in Verify8 (line 27)
Rec = Fil2str('8.fil');
Please advise

Dear Ngoc Thach Le,
Of course you can extract the results of two steps of an Abaqus analysis in Matlab using Abaqus2Matlab. At the website of Abaqus2Matlab you can either find some tutorials and examples or you can send an email at the Abaqus2Matlab work team (from the "CONTACT" tab).
Best regards.

Ngoc Thach Le

Dear George,
Thank you very much for this beautiful and great work. It would save us a lot of time indeed!
I have one question, can I use the code to extract same parameters (i.e. displacements) after two loading steps separately? I want to capture the changes after an extreme loading condition.

@Brani Dzepina: Thank you very much for your words. For further details of Abaqus2Matlab toolbox, you can check the official website:
@Ngoc Thach Le: Thank you very much for the rating. See for more information.

Ngoc Thach Le

Brani Dzepina

This will aid my PhD work in multiscale simulation greatly! George, you are a legend! Thank you!

Dear vahidar,
Thank you very much for your interest and rating.
You can contact the Abaqus2Matlab work team through, either by sending your inquiry to the work team under the CONTACT tab, or by posting under the FORUM tab. Normally, you will receive an answer within a few hours.


Thank you for very much for Abaqus2Matlab.
Could you kindly let me know if it is possible to use this code for obtaining results from multiple Abaqus input files? Actually, I need to post-process the results of hundreds Abaqus analysis in Matlab.


Dear Mr Franzoni,

Thank you very much for your good comments about Abaqus2Matlab. I hope that it will be useful for your research.
For whatever problem you may have, please feel free to contact the Abaqus2Matlab work team through

Best regards,


I just started using your plug-in in my PhD research. First, I would like to congratulate you for the remarkable work and for making it available online.
As suggestion, I created a 'b' version of the Rec1980.m file to also accept buckling modal data.
In fact, I just add a flag which accepts 'Frenquecy' or 'Buckle' and for the 'Buckle' flag only '% number of digits of eigenvalue number', '% Eigenvalue number' and '% Eigenvalue' are calculated.

This is a great code! Easy to use and powerful!


jim (view profile)

Thank you so much, George. Your codes save me loads of time!

Dear Andrey,

Firstly, thank you very much for your feedback and rating. I would like to note that each record in the results file (fil) starts with an asterisk, which is found at most 7 positions before the first digit of the record key. The first number in each record shows the number of outputs contained in the record (which is maximum 80), and the second number of each record is the record key, i.e. the type of results written in the record. More details can be found at the Abaqus Documentation.
I do not know whether you have managed to handle the results file in its binary format, but I think that such files can be treated in a similar logic. Could you elaborate a bit on what you have said "parsing the whole output file at once"? What do you mean by this?

Thank you very much!

Best regards,


Andrey Melnik

Update to my previous comment. The Abaqus binary .fil seems to be represented as a sequence of binary frames: [frameSize1, frameContent1, frameSize1], [frameSize2, frameContent2, frameSize2], and so on. In my case frameSizei is a 32-bit integer storing value 4096, while frameContenti is 4096-byte long binary data. After removing parasitic fragments frameSizei, the file becomes a sequence of records, as described in Abaqus Analysis Guide Chapter 5.1.2. It is a shame I could not find this simple clarification in Abaqus documentation. Sorry for posting off-topic.

Andrey Melnik

Dear George, thanks for this extremely useful package. I have the following concern. As far as I understand, you determine the position of a record by looking for an integer identifier, e.g. ind=strfind(Rec,'I 210I'). In this case you require that the integer 10 is followed by another integer. I imagine such occurrences may be not exclusively specific to the record key and can be encountered elsewhere. Although you do an additional check that the 80-char record indeed starts at (ind-8) with '*', I suppose such coincidence is still possible and you'll get an error. What do you think?

Another question is if you considered parsing the whole output file at once instead of extracting records one by one? I tried to follow this route to parse the binary results output format, but was unable to find an exhaustive specification of that format. For instance, the "1921" record is preceded in binary format by 12 bytes of unknown nature. Best,



Description updated to include the 2nd version release.


Modified for better viewing


Documentation.m amended


Description formatted


Description updated


Description updated


Various changes and additions (see file VersionHistory.txt).


Description updated.


Description update


Documentation configured to be more user-friendly.

MATLAB Release
MATLAB 7.12 (R2011a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video