Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Abaqus Error related to UMAT (seems to be a Fortran related error)

Jaehyun_K_
Beginner
2,766 Views

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

0 Kudos
1 Solution
Steve_Lionel
Honored Contributor III
2,766 Views

I don't see where variable IOW gets set.

View solution in original post

0 Kudos
15 Replies
Steve_Lionel
Honored Contributor III
2,766 Views

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.

0 Kudos
Jaehyun_K_
Beginner
2,766 Views

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? 

 

0 Kudos
Steve_Lionel
Honored Contributor III
2,766 Views

In some other cases I might say it is possible, but I think it's unlikely here. Hard to know without seeing your code and how it is called. But it should be pretty easy to debug.

0 Kudos
mecej4
Honored Contributor III
2,766 Views

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.

0 Kudos
Jaehyun_K_
Beginner
2,766 Views

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??

 

0 Kudos
mecej4
Honored Contributor III
2,766 Views

I am not an Abaqus user, so your code and comments have no meaning for me. You should send those questions to Abaqus support or ask them in an Abaqus user forum.

0 Kudos
Jaehyun_K_
Beginner
2,766 Views

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  ? 

0 Kudos
Steve_Lionel
Honored Contributor III
2,767 Views

I don't see where variable IOW gets set.

0 Kudos
Jaehyun_K_
Beginner
2,766 Views

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.

 

0 Kudos
Greg_T_
Valued Contributor I
2,766 Views

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

0 Kudos
Jaehyun_K_
Beginner
2,766 Views

After I changed the statement from write(IOW,*) to write(*,*), I don't have any errors so far.

Thank you so much,  mecej4, Greg. T and Steve Lionel !!

 

0 Kudos
朱__慧安
Beginner
2,766 Views

Hi,J.K

I have encountered the same problem as you, how do you solve it?

Please help me

0 Kudos
mecej4
Honored Contributor III
2,766 Views

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.

0 Kudos
Steve_Lionel
Honored Contributor III
2,766 Views

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.

0 Kudos
WenLong__Li
Beginner
2,766 Views

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

0 Kudos
Reply