Hi, I'm doing some simulation using Abaqus UMAT (material user subroutine coded in Fortran).
The strange problem is that I sometimes got an error as below for the same simulation which is completed successfully.
Once I got this error, I restart Abaqus and submit the job again, then the job is completed successfully but not all the time.
Could anyone have some experience about this??
forrtl: severe (32): invalid logical unit number, unit -991156787, file unknown
Image PC Routine Line Source
libifcoremd.dll 00000000002227EF Unknown Unknown Unknown
libifcoremd.dll 000000000021C5A3 Unknown Unknown Unknown
libifcoremd.dll 00000000002059AF Unknown Unknown Unknown
libifcoremd.dll 00000000001683E8 Unknown Unknown Unknown
libifcoremd.dll 00000000001DF5A6 Unknown Unknown Unknown
standardU.dll 00007FFDE0EB19FD Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDF7499E4 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDF748393 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDE00EF9C3 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDF5A13C6 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDF087CE6 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDF084946 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDFD64FAD Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDEF7C252 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDFD32462 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDFD2E9E1 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDF127CE4 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDF121B85 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDE77F024 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDE074EEA1 Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDDF1142FA Unknown Unknown Unknown
ABQSMAStaCore.dll 00007FFDE00488B9 Unknown Unknown Unknown
standard.exe 00007FF770184161 Unknown Unknown Unknown
standard.exe 00007FF770181316 Unknown Unknown Unknown
standard.exe 00007FF770197193 Unknown Unknown Unknown
KERNEL32.DLL 00007FFE3B1C8364 Unknown Unknown Unknown
ntdll.dll 00007FFE3D0E70D1 Unknown Unknown Unknown
連結已複製
Something in standardu.dll is doing I/O specifying an uninitialized value as the unit number. That it happens occasionally is a clue that it is an uninitialized memory location. You'll have to debug this on your own, or get help from Abaqus support.
Steve Lionel (Ret.) wrote:
Something in standardu.dll is doing I/O specifying an uninitialized value as the unit number. That it happens occasionally is a clue that it is an uninitialized memory location. You'll have to debug this on your own, or get help from Abaqus support.
Thank you for your quick reply!
Could the fact that I didn't declare some of the variables in my UMAT code cause this error?
If you do not declare a variable, it is given a type based on the implicit declaration rules. If the intended type does not match the implicit type for variables with the first character in its name, errors will probably occur. From the symptoms, however, I suspect that an uninitialized variable is being used somewhere, or array bounds are being overrun, causing memory corruption.
I suggest that you add the /traceback compiler option, rebuild and rerun. You should then obtain more useful information in the traceback.
Here's the part of my UMAT code. But I omitted the main calculations part.
Originally I used the subroutine UMATYPP as UMAT itself. But I made it to the subroutine of UMAT because I need to solve something outside UMAT. So the number of variables are the same but the dimension of some arrays are different. This might be a reason for this error??
Hi mecej4, I'm not trying for you to debug my problem but I thought you could check some declared arrays. And the code I posted is just the structure not whole calculations.
How about you, Steve Lionel ?
Steve Lionel (Ret.) wrote:
I don't see where variable IOW gets set.
I just used the statement, write(IOW,*), to write some information to *.log file.
I don't remember where I got the expression especially "IOW" but it seems that uninitialized IOW can cause this error occasionally.
Anyway I'm going to use write(*,*) instead of write(IOW,*) and I'll let you know results.
Thank you so much anyway.
Abaqus has some predefined file unit numbers that you could also use, or at least avoid conflicting with. The Abaqus Analysis User's Guide, section 3.7.1 "Fortran unit numbers used by Abaqus" gives a helpful list of the file unit numbers and the associated file. For debugging a user subroutine I have had success using file unit 7 to write to the "message" file *.msg that Abaqus writes during the analysis. Then view the *.msg file with a text editor to find you debugging information.
Regards,
Greg
How can you say, "I have encountered the same problem", when the code that Jaehyun K. talks about is no longer visible in this thread? If it actually is the same problem, the solution is to set IOW to a known integer, in which case you should open the appropriate file before writing to it, or replace IOW by '*', which will send output to the standard output.
For better responses, please provide a description of your problem.
FWIW, Jaehyun K wrote me to say:
This is Barney Kim whom you help to solve Fortran problem in Intel Fortran Forum. With your accurate solution, I managed to publish two scientific papers using Abaqus UMAT. (link: https://doi.org/10.1016/j.ijmecsci.2018.10.018) doi.org/10.1016/j.ijme… (link: https://doi.org/10.1016/j.jmatprotec.2019.02.016) doi.org/10.1016/j.jmat… Thank you so much for your help.
Greg T. wrote:Abaqus has some predefined file unit numbers that you could also use, or at least avoid conflicting with. The Abaqus Analysis User's Guide, section 3.7.1 "Fortran unit numbers used by Abaqus" gives a helpful list of the file unit numbers and the associated file. For debugging a user subroutine I have had success using file unit 7 to write to the "message" file *.msg that Abaqus writes during the analysis. Then view the *.msg file with a text editor to find you debugging information.
Regards,
Greg
Hi,Greg
I really want to know more about your way to debug a user subroutine in abaqus, but I'm a fresh man,could you give me more information (a example will be better) about how to use this debug method?
Your reply will really help me a lot.
Regards,
Wenlong
