Dear George,
First, warm congratulations for the Abaqus2Matlab tool development and users support.
On the other hand, I generated a script using the Abaqus2Matlab tool to run a two-step cosimulation, where the second step uses the results of the first. Both simulations are performed without issues. However, I am getting errors from the postprocessing and ODB file exploration part of the script. The errors are below:
_______________________________________________________________________________
Warning: In step STEP-5, history region Assembly Assembly-1, there is no history output
with identifier POR.
> In readHistoryOdb (line 251)
In Script_job2_A2M (line 67)
NO NEED TO UPGRADE. THE OUTPUT DATABASE FILE IS ALREADY UP-TO-DATE
________________________________________
Warning: An assembly-level node set named sensors does not exist in the output database
job2_A2M.odb
> In readNodeFieldOdb (line 292)
In Script_job2_A2M (line 76)
Warning: An instance-level node set named sensors does not exist in the output database
job2_A2M.odb
> In readNodeFieldOdb (line 292)
In Script_job2_A2M (line 76)
Warning: The specified node set was not found in the output database job2_A2M.odb. All
node sets will be processed
> In readNodeFieldOdb (line 292)
In Script_job2_A2M (line 76)
If the working dimension of MAX or MIN is variable in length, it must not have zero
length at runtime.
Error in eml_min_or_max (line 73)
Error in eml_min_or_max (line 18)
Error in max (line 16)
Error in readFilCat1 (line 117)
Error in readFil (line 88)
outi=readFilCat1(Rec,recordKey,zeros(1,0),zeros(1,0));
Error in Script_job2_A2M (line 78)
POR =readFil([ Inp_file '.fil' ], 18 );%Obtain the Pore or Acoustic Pressure(POR) ;
_______________________________________________________________________
Can you, please, propose a solution to this errors. Thank you in advance for your kind support!
Dear Abdellah,
Could you send me the Matlab code at gpapazafeiropoulos@yahoo.gr? In this way it will be easier for me to check and run it.
Best regards,
George
Dear Abdellah,
It seems that stepName, nsetName and instanceName are case-sensitive.
Please specify the following commands in the Matlab script and then rerun it. Please let me know if the problem is resolved.
stepName='STEP-5'; nsetName='SENSORS'; instanceName= 'PART-1-1' ;
Best.
George
Hello George,
Thank you so much for your generous and kind support!
The issue is not resolved. I tried it and did not work. I have the same issue. It does not find the node set.
The input files, generated using Hypermesh, are not organized into assembly, parts and instances. The problem may be related to that. What do you think?
I really want to use Abaqus2Matlab to post-process the data, though I would be able to do it via Abaqus.
Again, thank you so very much!
With kind regards,
Dear Abdellah,
Please replace the following command in the Matlab code that you are running:
instanceName= 'False' ;
with the following command:
instanceName= 'PART-1-1' ;
Let me know if the problem is solved. Thank you in advance.
Best regards!
Dear George,
I am pleased to forward to you the script file and a picture of the odb visualization in Abaqus to see that the node set sensors is indeed present. Maybe the name has changed or it has something to do with the assembly, parts and instances. I am unable to upload the script file. Below is a copy:
_______________________
% If using this code for research or industrial purposes please cite:
% G. Papazafeiropoulos, M. Muniz-Calvente, E. Martinez-Paneda
% Abaqus2Matlab: a suitable tool for finite element post-processing.
% Advances in Engineering Software. Vol. 105, pp 9-16 (2017)
% DOI:10.1016/j.advengsoft.2017.01.006
% % G. Papazafeiropoulos, M. Muniz Calvente, E. Martinez-Paneda
% % % Abaqus2Matlab@gmail.com
% www.abaqus2matlab.com
%close all
clear
% Change the current directory
S = mfilename('fullpath');
f = filesep;
ind=strfind(S,f);
S1=S(1:ind(end)-1);
cd(S1) ;
%% 1st STEP - Run one FEM model
Inp_file= 'job2_A2M';
disp('Simulation Started')
% Run the input file with Abaqus
% Initialize sw (boolean switch) as true
dos('abq6141 job=job2_A2M.inp inp=job2_A2M.inp oldjob=job1_A2M interactive')
%system(['abaqus job=' Inp_file]);
sw=true;
tic;
while sw
% Pause Matlab execution in order for the lck file to be created
pause(0.5);
% While the lck file exists, pause Matlab execution. If it is
% deleted, exit the while loop and proceed.
while exist([Inp_file '.lck'],'file')==2
pause(0.1)
% the lck file has been created and Matlab halts in this loop.
% Set sw to false to break the outer while loop and continue
% the code execution.
sw=false;
end
% In case that the lck file cannot be detected, then terminate
% infinite execution of the outer while loop after a certain
% execution time limit (5 sec)
if sw && (toc>5)
sw=false;
end
end
% NOTE: Alternatively, you can replace lines 27 to 49 by system(['abaqus job=' Inp_file ' interactive'])
disp('Simulation Finished')
%% 2st STEP - Postprocess Abaqus results file with Abaqu2Matlab
% Obtain the desired output data
disp('Obtaining desired output data by Abaqus2Matlab')
% NOTE: Some output variables are Matlab Cells, If you are not confortable working with Cells, you can use cell2mat()
% Explore the history output contained in AbaqusInputFile.odb
odb_name='job2_A2M.odb';
out=exploreHistoryOdb(odb_name);
% Read the field output contained in AbaqusInputFile.odb
odb_name='job2_A2M.odb';
stepName='STEP-5';
indOut='False'; %(no dat file)
indOut='True'; %(create dat file)
%indOut,
outputVar='POR';
[odbOut_POR,odbDat_POR,rpyOut_POR]=readHistoryOdb(odb_name,stepName,outputVar,indOut);
% Read the field output contained in AbaqusInputFile.odb
odb_name='job2_A2M.odb';
stepName='STEP-5';
nsetName='sensors';
instanceName= 'False' ;
indOut='False'; %(no dat file)
indOut='True'; %(create dat file)
outputVar='POR';
[odbOut_POR,odbDat_POR,rpyOut_POR]=readNodeFieldOdb(odb_name,stepName,instanceName,nsetName,outputVar,indOut);
%save POR1.txt odbOut_POR -ascii
POR =readFil([ Inp_file '.fil' ], 108 );%Obtain the Pore or Acoustic Pressure(POR);
Thank you so much in advance for your kind support!
With kind regards,
Abdellah
Hello George,
Thank you so much! I will look at it and come back to you.
Thank you immensely! With kind regards,
Dear Abdellah,
Thanks, you too!
Obviously there is a problem with the syntax of the function readNodeFieldOdb (line 76 of the Script_job2_A2M.m file). You have to ensure that the input arguments that you specify for this function are correct by checking if they exist in the odb file that is processed by the function.
You can send me the file Script_job2_A2M.m and the odb file that you are trying to read if you want. Confidentiality in the various files and/or models shared with the Abaqus2Matlab work team is explicitly declared.
Best regards.
Dear George, thank you so much for your very kind prompt reply and time!!!
The issue is fixed. However, I am still have warning. It looks as though it does not find the node set sensors in the ODB file.
______________________________________________
. Warning: In step STEP-5, history region Assembly Assembly-1, there is no history output
with identifier POR.
> In readHistoryOdb (line 251)
In Script_job2_A2M (line 67)
NO NEED TO UPGRADE. THE OUTPUT DATABASE FILE IS ALREADY UP-TO-DATE
Abaqus License Manager checked out the following license(s):
"cae" release 6.14 from Flexnet server clsfmc1.dearborn.ford.com
<19 out of 21 licenses remain available>.
Warning: An assembly-level node set named sensors does not exist in the output database
job2_A2M.odb
> In readNodeFieldOdb (line 292)
In Script_job2_A2M (line 76)
Warning: An instance-level node set named sensors does not exist in the output database
job2_A2M.odb
> In readNodeFieldOdb (line 292)
In Script_job2_A2M (line 76)
Warning: The specified node set was not found in the output database job2_A2M.odb. All
node sets will be processed
> In readNodeFieldOdb (line 292)
In Script_job2_A2M (line 76)
>> ________________________________________________
Have a wonderful day! With kind regards, Abdellah
Hello,
Thank you very much for your kind comments.
Please try the following:
(1) In the file Script_job2_A2M.m, line 78, try to replace the following command:
POR =readFil([ Inp_file '.fil' ], 18 );%Obtain the Pore or Acoustic Pressure(POR);
with the following command:
POR =readFil([ Inp_file '.fil' ], 108 );%Obtain the Pore or Acoustic Pressure(POR);
Then rerun the file Script_job2_A2M.m and check if the pore pressure output is extracted.
(2) Check if there is an option in the Abaqus input file for output to the fil file. The options:
*FILE FORMAT, ASCII *EL FILE POR
must be specified in the input file in order for your Matlab code to work properly.
(3) If the options in (2) have been specified correctly, please check the data line of *EL FILE option if two or more incompatible types of output are specified. You can also see if this happens by editing the Abaqus dat or msg files and checking for warnings about variables that will not be printed in the results file.
Let me know if the problem is fixed.
Best regards!