User login

Navigation

You are here

UMAT: Calling a another subroutine in UMAT, Errors during job execution

Hi,

I am in process of implementing the Bergstroem-Boyce Model. In a first
step I am just considering the hyperlastic part of it (Network A:
8-chain). I have implemented this part in a UMAT using a numerical
approach for the elasticity tensor (Forward Difference Approximation
with perturbation of F).

I have two problems:

1.
------------------------
In order to keep my UMAT as easy to read as possible I have tried to keep the FDA in a separate file using

call KFDA_Jaumann(dfgrd1,......)

to call the KFDA_Jaumann.for which includes the numerical approach.

Now when I run the job using the command window I get an error in the log file:

Creating library standardU.lib and object standardU.exp
eightchain_Jaumann.obj : error LNK2019: unresolved external symbol _KFDA_JAUMANN@40 referenced in function _UMAT
standardU.dll : fatal error LNK1120: 1 unresolved externals
Abaqus Error: Problem during linking - Abaqus/Standard User Subroutines.
This error may be due to a mismatch in the Abaqus user subroutine arguments.
These arguments sometimes change from release to release, so user subroutines
used with a previous version of Abaqus may need to be adjusted.
Abaqus/Analysis exited with errors

To me that means it cannot find the second fortran code, although it is
in the same folder as the main file. Is there a way to include this
file in the command window?

2.
--------------------------------
Now in an attempt to get around this issue I included the
KFDA_Jaumann.for directly in the main UMAT file and ran the job again
using the command window. At first it looked like the simulation worked
- no errors in the command window. However, I checked the log file and
found that Abaqus aborted just before it started the actual simulation.
Compiling and setting up all worked, but just before it starts with the
first increment it aborts with the following error:

Abaqus Error: The executable C:\Program Files\SIMULIA\Abaqus\6.8-1\exec\standard.exe
aborted with system error code 148.
Please check the .dat, .msg, and .sta files for error messages if the files
exist. If there are no error messages and you cannot resolve the problem,
please run the command "abaqus job=support information=support" to report and
save your system information. Use the same command to run Abaqus that you
used when the problem occurred. Please contact your local Abaqus support
office and send them the input file, the file support.log which you just
created, the executable name, and the error code.
Abaqus/Analysis exited with errors

Unfortunately, neither the .dat nor the .msg file give any clues (.sta does obviously not exist).

Has anyone had similar problems?

Thanks,
Andreas

Comments

 

I do not know UMAT, never use it, and this is just my wild guess.

It looks like the symbol is not loaded. Maybe you need to tell the dll where the function is actually is. Or use depandancy.exe to check. 

Anyway just a wild guess.

Try specifying the subroutines as externals. I think the compiler is not able to recognize that the subroutine is an external subroutine.

Sreekanth Akarapu
Graduate Research Assistant
School of Mechanical and Materials Engineering
Washington State University, Pullman, WA-99164

I have been getting this sort of problem using UEL

If you want to call a second subroutine from within UMAT, I find it is easier to put it at the end of the main subroutine so you only have to tell abaqus to call one directly.  Make sure you are running abaqus with the command

abaqus job=A user=B datacheck interactive

or similar where B is the subroutine 

For the second problem, this often means that a variable passed between your subroutines is declared with different dimensions in different subroutines.  You could also check the IMPLICIT statement used. 

I currently have a problem where abaqus aborts when something innocuous like an extra variable assignment is added to the subroutine code: "aborts with error code 5".  I think this is due to where variables are stored and how they are overwritten.  The code is fine when compiled seperately, though.

Does anyone know how to deal with this?

Thanks,

Ben Edmans

Brunel University

Sometimes when I get a "unexplainable" system error code 5 from running a UMAT, I have found that it is often due to some error in the code. The error is usually not in violation with the Fortran compiler, but it is in violation with the rules in ABAQUS, so to say. My advice is to check the code again and again. In my case the errors often were typos that are difficult to find if the code is long.

When it comes to handling seperate fortran codes, I think it is possible to create a library from different codes by using the make command in the command window. See abaqus help in the command window for syntax.

 

Jim S. Olsen

I was able to solve the problem with the error.  It was indeed a problem in my code.  I have used the letter L for one of my variables thus defining it as an integer.  This resulted in the variable becoming 0 and then later in the code division by 0.  Beginner's mistake I guess :)

 @ Ben Edmans: I am still quite new to UMAT and I was wondering if  I append my "2nd" routine after the main UMAT and call it in my main UMAT, will Abaqus then find it?

So say in the same UMAT file have:

Subroutine UMAT(Stress,Statev,......)

Include 'ABA_PARAM.INC'

.

.

.

call KFDA_Jaumann(dfgrd1,......)

.

.

Return

end

Subroutine KFDA_Jaumann(dfgrd1,....)

 Include 'ABA_PARAM.INC'

.

.

.

Return

End

 Is that what you meant?

 

Thanks,

Andreas

Is your second problem  solved?I have met the some problem.

Subscribe to Comments for "UMAT: Calling a another subroutine in UMAT, Errors during job execution"

Recent comments

More comments

Syndicate

Subscribe to Syndicate