Skip to main content

Help with ABAQUS SIGINI subroutine

Submitted by Sherif Kamel on

Dear ABAQUS Users,

I am trying to assign the initial stresses for a region in my model using the SIGINI subroutine. I learned some fortran programming skills the last week and I managed to open the file where the stresses that I retrieve from an Abaqus analysis and assign these stresses in Array using fortran commands.

Now I am stuck with the writing of the SIGINI subroutine where I have the corresponding stresses that I store in my Array to the corresponding NOEL and NPT.

I wish to know if I have to include my fortran code that I use to retrieve the stresses and store them in the array. then I include the subroutine commands found in ABAQUS document where I include a Do loop statement to repeat the assignment for each integration point of the elements located in the region where I am interested to assign the stored stresses.

I will appreciate if anyone has similar code written in FORTRAN where I can learn the linking between the FORTRAN code to open and read the data in the external file (i.e. the external file includes the stresses generated as output by an ABAQUS analysis) where later the subroutine SIGINI statements should be added to assign the stored stresses for the second analysis.

Sorry for the long post but I wish to thank in advance everyone who has any light for such situation.

Best Regards

Sherif 

*INCLUDE,INPUT=initial.ipe500

 

*INITIAL CONDITIONS,TYPE=STRESS,USER

*USER SUBROUTINES

SUBROUTINE SIGINI(SIGMA,COORDS,NTENS,NCRDS,NOEL,NP,LA,M,LR,RE)

INCLUDE ‘ABA_PARAM.INC’

DIMENSION SIGMA(NTENS),COORDS(NCRDS)

CHARACTER*8 RE

IF(NOEL.GE.1.AND.NOEL.LE.100)THEN

IF(M.EQ.1.OR.M.EQ.17.OR.M.EQ.33.OR.M.EQ.49)THEN

SIGMA(1)=-7.050

ELSE IF(M.EQ.2.OR.M.EQ.16.OR.M.EQ.34.OR.M.EQ.48)THEN

SIGMA(1)=-5.2875

ELSE IF(M.EQ.3.OR.M.EQ.15.OR.M.EQ.35.OR.M.EQ.47)THEN

SIGMA(1)=-3.525

ELSE IF(M.EQ.4.OR.M.EQ.14.OR.M.EQ.36.OR.M.EQ.46)THEN

SIGMA(1)=-1.7625

ELSE IF(M.EQ.5.OR.M.EQ.13.OR.M.EQ.37.OR.M.EQ.45)THEN

SIGMA(1)=0.

ELSE IF(M.EQ.6.OR.M.EQ.12.OR.M.EQ.38.OR.M.EQ.44)THEN

SIGMA(1)=1.7625

ELSE IF(M.EQ.7.OR.M.EQ.11.OR.M.EQ.39.OR.M.EQ.43)THEN

SIGMA(1)=3.525

ELSE IF(M.EQ.8.OR.M.EQ.10.OR.M.EQ.40.OR.M.EQ.42)THEN

SIGMA(1)=5.2875

ELSE IF(M.EQ.9.OR.M.EQ.41)THEN

SIGMA(1)=7.050

ELSE IF(M.EQ.18.OR.M.EQ.32)THEN

SIGMA(1)=5.3439

ELSE IF(M.EQ.19.OR.M.EQ.31)THEN

SIGMA(1)=3.6378

ELSE IF(M.EQ.20.OR.M.EQ.30)THEN

SIGMA(1)=1.9317

ELSE IF(M.EQ.21.OR.M.EQ.29)THEN

SIGMA(1)=0.2256

ELSE IF(M.EQ.22.OR.M.EQ.28)THEN

SIGMA(1)=-1.4805

ELSE IF(M.EQ.23.OR.M.EQ.27)THEN

SIGMA(1)=-3.1866

ELSE IF(M.EQ.24.OR.M.EQ.26)THEN

SIGMA(1)=-4.8927

ELSE IF(M.EQ.25)THEN

SIGMA(1)=-6.5988

ENDIF

ENDIF

RETURN

END

Mon, 07/11/2011 - 11:34 Permalink