PDA

View Full Version : ask for help---Problem with UMAT subroutine


Michelle
2006-10-09, 16:10
Hi all,

I am so glad to find this forum. Hope somebody can help me out.
I am trying to use ABAQUS to model artery vessel wall motion,
and need to use UMAT to give an anisotropic strain energy density function.

By some reason, I always got a error message as follows, I have no idea what is going wrong.

Your help will be greatly appreciated!
Thanks,
Michelle

I use ABAQUS 6.3.1 under unix system. The user subroutine is written in Fortran77.

------------- error message ------------------------------------------

Begin ABAQUS/Standard Analysis
Fri Sep 22 16:16:06 2006
Run /home/abaqus/6.3-1/exec/standard.x
ld.so.1: standard.x: fatal: relocation error: file /opt/SUNWspro/lib/libf77compat.so.1: symbol __f90_default_input_unit: referenced symbol not found
Fri Sep 22 16:16:06 2006
ABAQUS Error: The executable /home/abaqus/6.3-1/exec/standard.x aborted with error code 9.
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=all" 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
----------end of error message----------------------------

Jorgen
2006-10-09, 18:15
Hello Michelle,

First, I am curious, can you explain more about the material model you have implemented into a UMAT?

Here are few comments/questions:
:arrow: The error message that you provided unfortunately does not pinpoint what the problem is. I suspect that the problem is related to some incompatibility between the version of ABAQUS that you are using, the Fortran compiler that you are using, and the OS version on your computer.
:arrow: Do you have access to a more recent version of ABAQUS?
:arrow: Have you been able to run any UMAT on your computer?

- Jorgen

Michelle
2006-10-10, 03:56
Hello, Jorgen,

Thank you very much for your reply.
:arrow: I am using an exponential strain energy density function,
W=c/2 * EXP{b1*E1**2+b2*E2**2+b3*E3**2+2*b4*E1*E2+2*b5*E2* E3+2*b6*E3*E1};
:arrow: I can access to ABAQUS 6.5-1, but there is no f77 compiler installed in that machine, I am trying to install a f77 compiler now, and will run ABAQUS with UMAT again after that to see how it goes;
:arrow: You said it! I can not run any UMAT on my computer, even examples from the verification manual.

Thanks a lot and best wishes,
Michelle[/img]

Dave_Holmes
2006-10-10, 16:04
This passage is given by the My ABAQUS resource to be found at http://abaqus.custhelp.com/. This describes the error codes for Unix and Linux Systems:

The error codes depend on the system on which ABAQUS is being executed and are standardized for each specific system by the system provider. Unix and Linux error codes are defined in file signal.h under the heading "Signal Numbers". This file is located in /usr/include/sys or in /usr/include/asm on Linux systems. There is not a direct correlation among all error codes on all Unix platforms; however the following error codes typically have identical meanings across most platforms:


4: An Illegal Instruction was made.

6: An unexpected error condition has caused the program to terminate itself.

On rare occasions this error code may be thrown when the computer has run out of disk space. In this situation it is more often the case that a proper error message will be delivered.

8: Floating point exception; the code has attempted an invalid floating point operation.

9: External job kill; the operating system or the user has killed the job.

10: Bus error; sometimes caused by writing past the end of a local array in a user subroutine.

11: Segmentation fault or Illegal memory reference; an error in which the program is attempting to access memory not allocated to it.

13: An error caused by an attempt to write to a pipe with no one to read it.

The main purpose of the error code is to assist the ABAQUS, Inc. support and development personnel in determining the cause of the analysis failure. ABAQUS users are not expected to be familiar with these error codes and are encouraged to report them to the assisting support engineer.

Apart from error code 9, in most cases the only time these errors are caused by the user is when a user subroutine is part of the analysis. Good programming practices will reduce the number of occasions that may lead to the above mentioned error codes. ABAQUS, Inc. is continuing to improve the diagnostics provided in cases where the analysis aborts due to system errors. Future releases of the program will provide a text message providing more information about the cause of the abnormal termination in most situations. The quality and reliability of all ABAQUS products is a continuing focus of ABAQUS, Inc. and we constantly strive to create a robust software suite with minimal abnormal terminations.

Michelle
2006-11-08, 06:17
Hi,

I can use user subroutine on my machine finally.
the UMAT program is finished according to my own understanding --
it gives error messages as expected. I tried some ideas but none of them worked :(

Can somebody give me a direction, thanks a lot!
Michelle


The error message in .msg file says:
***WARNING: THE SOLUTION APPEARS TO BE DIVERGING.
***NOTE: THE INCREMENT WILL BE ATTEMPTED AGAIN WITH A TIME INCREMENT OF 9.76563E-05
***ERROR: TOO MANY ATTEMPTS MADE FOR THIS INCREMENT: ANALYSIS TERMINATED

The error message in .dat file says:
***WARNING: USER SUBROUTINE UMAT WILL BE USED WITH THE STAVEV ARRAY DIMENSIONED TO ZERO SINCE THE *DEPVAR OPTION IS NOT USED WITH THIS MATERIAL. CONSEQUENTLY, DEFINING STATEV ENTRIES IN SUBROUTINE UMAT WILL CAUSE CODE EXECUTION ERRORS.


My programme is as follows:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
1 RPL,DDSDDT,DRPLDE,DRPLDT,
2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CM NAME,
3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNE WDT,
4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KIN C)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
DIMENSION STRESS(NTENS),STATEV(NSTATV),
1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED (1),
3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGR D1(3,3)


C Quantities that must be defined by umat
C stress, svd's and material Jacobin (elastic constants, ddsdde)
C Quantities that can be defined by umat
C strain energy, plastic dissipation, creep distortion
C suggested new time increment


C stress and strains stored as vectors, in axisymmetric case
C stress(s11,s22,s33,s12), stran(e11,e22,e33,e12) 123=rzt
C ddsdde=dfrac{\partial stress}{\partial strain}


C properties fed to subroutine
C props(1)=c
C props(2)=b1
C props(3)=b2
C props(4)=b3
C props(5)=b4
C props(6)=b5
C props(7)=b6


C where W is the strain energy density function
C W=c/2*exp( b1 Et^2 + b2 Ez^2 + b3 Er^2
C + 2b4 EtEz + 2b5 EzEr +2b6 ErEt )
C----------------------------------------------------------------------
C local variables
C----------------------------------------------------------------------
C properties
REAL*8 cc,bb1,bb2,bb3,bb4,bb5,bb6,bb7
C boring elements of the strain tensor
REAL*8 err, ett, ezz, erz, lamrr, lamtt, lamzz
C elements of the stress tensor
REAL*8 srr, stt, szz, srz
C elements of the jacobian matrix
REAL*8 Crrrr,Ctttt,Czzzz
REAL*8 Crrzz,Czztt,Crrtt
REAL*8 Crzrz


C energy function
REAL*8 energy


C check we are not plane stress
C IF(ndi.NE.3) THEN
C WRITE(7,*) "Needs three direct strain components"
C ENDIF


C set parameters
cc=props(1)
bb1=props(2)
bb2=props(3)
bb3=props(4)
bb4=props(5)
bb5=props(6)
bb6=props(7)
bb7=bb2+bb3-2*bb5


C Setup various strain related quantities
C stretch ratio
lamrr=EXP(STRAN(1))
lamzz=EXP(STRAN(2))
lamtt=EXP(STRAN(3))


C Green Strain Tensor
err=(lamrr*lamrr-1)/2
ezz=(lamzz*lamzz-1)/2
ett=(lamtt*lamtt-1)/2
erz=STRAN(4)


C Energy function
energy=cc/2*EXP( bb1*ett**2 + bb2*ezz**2 + bb3*err**2
1 +bb7*erz**2
2 +2*bb4*ett*ezz+2*bb5*ezz*err+2*bb6*err*ett)


C Elements of the stress tensor
srr=2*energy*(bb3*err+bb5*ezz+bb6*ett)*lamrr*lamrr
stt=2*energy*(bb1*ett+bb4*ezz+bb6*err)*lamtt*lamtt
szz=2*energy*(bb2*ezz+bb4*ett+bb5*err)*lamzz*lamzz
srz=2*energy*bb7*erz*lamrr*lamzz


C Elements of the jacobian matrix
Crrrr=2*lamrr*lamrr*energy*(2*lamrr*lamrr*(bb3*err
1 +bb5*ezz+bb6*ett)*(bb3*err+bb5*ezz+bb6*ett)
1 +2*(bb3*err+bb5*ezz+bb6*ett)+bb3*lamrr*lamrr)
Czzzz=2*lamzz*lamzz*energy*(2*lamzz*lamzz*(bb2*ezz
1 +bb4*ett+bb5*err)*(bb2*ezz+bb4*ett+bb5*err)
1 +2*(bb2*ezz+bb4*ett+bb5*err)+bb2*lamzz*lamzz)
Ctttt=2*lamtt*lamtt*energy*(2*lamtt*lamtt*(bb1*ett
1 +bb4*ezz+bb6*err)*(bb1*ett+bb4*ezz+bb6*err)
1 +2*(bb1*ett+bb4*ezz+bb6*err)+bb1*lamtt*lamtt)
Crzrz= 2*energy*bb7*lamrr*lamzz
Crrzz=2*lamrr*lamrr*lamzz*lamzz*energy*(2*(bb3*err
1 +bb5*ezz+bb6*ett)*(bb2*ezz+bb4*ett+bb5*err)+bb5)
Czztt=2*lamzz*lamzz*lamtt*lamtt*energy*(2*(bb1*ett
1 +bb4*ezz+bb6*err)*(bb2*ezz+bb4*ett+bb5*err)+bb4)
Crrtt=2*lamrr*lamrr*lamtt*lamtt*energy*(2*(bb3*err
1 +bb5*ezz+bb6*ett)*(bb1*ett+bb4*ezz+bb6*err)+bb6)


C Fill them up


STRESS(1)=srr
STRESS(2)=szz
STRESS(3)=stt
STRESS(4)=srz


DDSDDE(1,1)=Crrrr
DDSDDE(2,2)=Czzzz
DDSDDE(3,3)=Ctttt
DDSDDE(4,4)=Crzrz


DDSDDE(1,2)=Crrzz
DDSDDE(2,1)=Crrzz
DDSDDE(2,3)=Czztt
DDSDDE(3,2)=Czztt
DDSDDE(3,1)=Crrtt
DDSDDE(1,3)=Crrtt


DDSDDE(1,4)=0
DDSDDE(4,1)=0
DDSDDE(2,4)=0
DDSDDE(4,2)=0
DDSDDE(3,4)=0
DDSDDE(4,3)=0
C all done


RETURN
END
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Jorgen
2006-11-08, 20:13
Michelle,

At first sight, your code looks OK. Do you run your simulation on one element with prescribed displacements? What results do you get in the sta-file?

I would add print statements to your code to output what is going on with the code and what values it calculates. That will allow you to verify that the values that are calculated are what you think they should be.

- Jorgen