Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations KootK on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

abaqus-subroutine: problem with writing data to external file

Status
Not open for further replies.

JulerS89

Materials
Aug 1, 2014
5
Hello everyone!
I've got a problem with my UMAT. I'd like to write the element number to an external file if a certain stress is reached. Everything is working fine, but my UMAT writes the every element number exactly three times. Do you have an Idea where that comes from and how to fix it?
Thanks for your help
 
Replies continue below

Recommended for you

It'd be a lot easier to tell if you posted your code.

Are you writing every element once the threshold has been passed? Only the element for which the threshold has passed? Are you looping over different components of the stress (so printing the element each time S11, S22, S12, etc exceeeds the threshold)?
 
Hi zwtipp05! Here's my code(Sorry, it's a little bit messy :)). It's a damage criteria, and I'd like to write the broken elements to an external file.


IF(Y==1.D0)THEN
X = X + 1.D0
STATEV(1)= X
END IF

IF (X==1 .AND. NPT.EQ.1) THEN
open(unit=18,file=filex,status='old',position='append')
write(18,*)TIME(2),NOEL, NPT
GOTO 500
END IF

IF(Y==1.D0)THEN
GOTO 200
END IF


EMOD= PROPS(1) * PERCSIC + PROPS(3) * PERCAIR
ENU = PROPS(2) * PERCSIC + PROPS(4) * PERCAIR
HEALEDVOLUME = 0.D0
EBULK3 = EMOD/(1.0-2.0*ENU)
EG2 = EMOD/(1.0+ENU)
EG = EG2/2.0
ELAM = (EBULK3-EG2)/3.0

DO K1 = 1, 3
DO K2 = 1, 3
DDS(K2,K1) = ELAM
END DO
DDS(K1,K1) = EG2 + ELAM
END DO
C
DDS(4,4) = EG
C
C DETERMINE STRESS INCREMENT
C
TRVAL = DSTRAN(1)+DSTRAN(2)+DSTRAN(3)
DO K=1,3
DSTRESS(K) = 2*EG*DSTRAN(K)+ELAM*TRVAL
END DO
DSTRESS(4) = EG*DSTRAN(4)
C UPDATE STRESS
DO K = 1,NTENS
STRESS(K) = STRESS(K) + DSTRESS(K)
END DO
C DETERMINE JACOBIAN
DO I=1,3
DO J=1,3
DDSDDE(I,J) = DDS(I,J)
END DO
END DO
DDSDDE(4,4) = DDS(4,4)

IF(STRESS(1).GT.2280 .AND. NOEL.NE.10 .AND. NOEL.NE.91) THEN
Y = 1
STATEV(2) = Y
END IF
GOTO 300

500 CONTINUE
200 CONTINUE

DO K = 1, NTENS
STRESS(K) = 0.D0
END DO
DSTRESS(4) = 0.D0
DO K = 1, NTENS
DSTRAN(K) = 0.D0
END DO

300 CONTINUE

The Problem is, that my data-file Looks like this:
50
51
50
51
50
51
150
151
150
151
150
151
...
Do you have an idea how to fix it?
 
Try using a "very simple" UMAT with one reduced integration element under uniaxial tensile test by modifying your code in such a way that does absolutely nothing, for example, and write whatever you wish to write to a file. Unless I am missing something, you will see exactly the same result i.e., writing being performed more than once; it has to do with how the Abaqus solver requests the UMAT and how many times. Note, that this separate from the convergence that implicit solver attempts at an increment.

Another option is try, if you have a VUMAT, the explicit version and see if you notice the same behavior.

Are you new to this forum? If so, please read these FAQ:

 
Status
Not open for further replies.

Part and Inventory Search

Sponsor