0% found this document useful (0 votes)
140 views53 pages

Elastoplast o 11

This document describes a program for elasto-plastic analysis of anisotropic shell structures using quadratic degenerate shell elements. The program accounts for large displacements, selective integration, and layered anisotropic material properties that remain constant during plastic flow. It includes restart capabilities and solution algorithms. Key aspects include reading problem data, computing applied loads, initializing arrays, solving iteratively using a frontal solver approach, checking for convergence, and outputting results. Subroutines are described for various tasks like computing stiffness matrices and residual forces.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
140 views53 pages

Elastoplast o 11

This document describes a program for elasto-plastic analysis of anisotropic shell structures using quadratic degenerate shell elements. The program accounts for large displacements, selective integration, and layered anisotropic material properties that remain constant during plastic flow. It includes restart capabilities and solution algorithms. Key aspects include reading problem data, computing applied loads, initializing arrays, solving iteratively using a frontal solver approach, checking for convergence, and outputting results. Subroutines are described for various tasks like computing stiffness matrices and residual forces.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 53

C PROGRAM PLSHELL (INPUT,OUTPUT,TAPE5=INPUT,TAPE6=OUTPUT,

C TAPEl,TAPE2,TAPE4,TAPE7.TAPE8,TAPE12)
c******
C
c*** PROGRAM FOR ELASTO-PLASTIC ANALYSIS OF ANISOTROPIC SHELL STRUCTURES
C USING QUADRATIC DEGENERATE SHELL ELEMENTS(8-NODE, HETEROSIS AND 9-NODE
C AND A LAYERED APPROACH. ACCOUNTING FOR LARGE DISPLACEMENTS AND SELECTIV
C INTEGRATIONS(TRANSVERSE SHEAR TERMS).THE ANISOTROPIC PARAMETERS REMAIN
C CONSTANT DURING PLASTIC FLOW. RESTART FACILITES INCLUDED.
C
c*******
c
C
DIMENSION ASDIS(500),COORD(lOO,8),ELOAD(20,45),EQRHS(lO),
EQUAT(75,lO),EFFST(1800) ,EPSTN(1800),ESTIF(45,45),
FIXED(500),GLOAD(75),GSTIF(28S0),GRAVI(3),
IFFIX(500),LOCEL(4S),LNODS(20,9),MATNO(20,lO),
NACVA(7S) ,NAMEV(lO),NDEST(45),NDFRO(20),
NOFIX(36) , NOUTP (2) ,NPIVO(lO) ,POSGP(5) ,THICK(lOO),
PRESC(36,5),PROPS(5,17),RLOAD(20,4S) ,STFOR(500),
STRSG(5,1800),TDISP(500) ,TLOAD(20,45),TOFOR(500),
TREAC(36,5),VECRV(7S),WEIGP(5),DICOS(3,300) ,
AMATX(9,5),DMATT(S,5,5)
INTEGER MSG(3)
COMMON / XXXSEC / CPUO
DATA MSG/'PLSH','ELL ','ANFG'/
CPUO = SECOND(X)
CALL ANZEIGE (MSG,3,O)
C EROEFFNEN DER FILES
C
CALL OPEN
C
C*** PRESET VARIABLES ASSIOATED WITH DYNAMIC DIMENSIONING
C
C
CALL DIMEN (MBUFA,MELEM,MEVAB,MFRON,MMATS,MPOIN,MSTIF,MTOTG,
*
MTOTV,MVFIX,NDOFN,NPROP,NSTRE,M3POI,MLAYR)
C*** CALL THE SUBROUTINE WHICH READS MOST OF THE PROBLEM DATA
C
*
*
CALL INPUT (ANVEL, COORD, GRAVI, IFFIX, LNODS,
*
MATNO, MFRON, MELEM, MMATS, MPOIN,
*
MTOTV, MVFIX, NDFRO, NDOFN, NELEM, NCOLA,
*
NEVAB, NGAUS, NGAUZ, NMATS, NNODE, MLAYR,
*
NOFIX, NPOIN, NPROP, NTOTG, NLAYR, NREST,
*
NTOTV, NVFIX, POSGP, PRESC, PROPS, WEIGP,
*
NALGO, NINCS, LARGE)
CALL MODAN (AMATX, DMATT, NMATS, NPROP, PROPS,MMATS,
*
MATNO,MELEM,MLAYR,NELEM,NLAYR)
c CREATE THE THICKNESS AND A LOCAL ORTHOGONAL SET AT EACH C NODAL POINT
CALL WORKS (COORD, DICOS,LNODS,THICK,MELEM,MPOIN,
*
NPOIN,M3POI)
c CALL SUBROUTINE WHICH COMPUTES BMATX AND GMATX.THESE C MATRICES
c ARE STORED ON TAPE 8 FOR LATER USAGE
CALL BGMAT (COORD, DICOS, LNODS, MATNO, MELEM,
*
MLAYR, MMATS, MPOIN, M3POI, NELEM,
*
NEVAB, NGAUS, NGAUZ, NLAYR, NNODE,
*
NPROP,

*
POSGP, PROPS, THICK, WEIGP)
C*** CALL THE SUBROUTINE WHICH COMPUTES THE APPLIED LOADS
C AFTER READING SOME LOADING DATA
C
C
CALL LOADS (ANVEL,COORD,RLOAD,GRAVI,LNODS,
*
MATNO,MELEM,MEVAB,MMATS,MPOIN,DICOS,
*
NELEM,NEVAB,NGAUS,THICK,
*
NNODE,NPROP,NSTRE,POSGP,M3POI,
*
PROPS,WEIGP,MLAYR,NLAYR)
C*** INITIALISE CERTAIN ARRAYS
C
C
CALL ZERO (EFFST,ELOAD,EPSTN,MELEM,MEVAB,KINCS,
*
MTOTG,MTOTV,NDOFN,NELEM,NEVAB,NREST,
*
NSTRE,NTOTG,NTOTV,NVFIX,MVFIX,STRSG,
*
TDISP,TFACT,TLOAD,TREAC)
C*** LOOP OVER EACH INCREMENT
C
DO 100 IINCS = 1, NINCS
C
C*** READ DATA FOR CORRENT INCREMEMT
C
C
*
*
*
*
CALL INCREM (ELOAD, FIXED, IINCS, MELEM, MEVAB,
*
MITER,
*
MTOTV, MVFIX, NDOFN, NELEM, NEVAB,
*
NOUTP,
*
NOFIX, NTOTV, NVFIX, PRESC, RLOAD,
*
TFACT,
*
TLOAD, TOLER, LNODS, IFFIX, NNODE,
*
NCOLA,
*
NREST, KINCS)
C*** LOOP OVER EACH ITERATION
C
C
KSTOP = 0
KUNLO = 0
DO 50 lITER = 1, MITER
KITER = IINCS+IITER
JINCS = IINCS-KINCS
C*** CALL SUBROUTINE WHICH SELECTS SULOTION ALGORITHM VARIABLE KRESL
C
*
C
CALL ALGOR (FIXED, KITER, lITER, KRESL, MTOTV,
*
NALGO,NTOTV, KUNLO, KINCS)
C*** CHECK WHETHER A NEW EVALUATION OF THE STIFFNESS MATRIX
C IS REQUIRED
C
IF(KRESL .EQ. 1)
*
CALL STIFF(EPSTN,ESTIF,KITER,LNODS,MATNO,
*
MELEM,MEVAB,MMATS,MPOIN,MTOTG,NDOFN,
*
NELEM,NEVAB,NGAUS,NNODE,NPROP,
*
NSTRE,POSGP,PROPS,STRSG,WEIGP,AMATX,
*
DMATT,MLAYR, NLAYR, THICK,

*
TDISP,MTOTV,LARGE)
C*** MERGE AND SOLVE THE RESULTING EQUATIONS BY THE FRONTAL SOLVER
C
CALL FRONT ( ASDIS, ELOAD, EQRHS, EQUAT, ESTIF,
*
FIXED,
*
GLOAD, GSTIF, IFFIX, JINCS, lITER,
*
KRESL,
*
LOCEL, LNODS, MBUFA, MELEM, MEVAB,
*
MFRON,
*
MSTIF, MTOTV, MVFIX, NACVA, NAMEV,
*
NDEST,
*
NDOFN, NELEM, NEVAB, NNODE, NOFIX,
*
NPIVO,
*
NPOIN, NTOTV, TDISP, TLOAD, TREAC,
*
VECRV)
CALL OUTDIS
*
(ASDIS,MTOTV,MVFIX,NOFIX,NPOIN,
*
NVFIX,TREAC)
C CALCULATE RESIDUAL FORCES
CALL RESTR(ASDIS,EFFST,ELOAD,LNODS,
*
MATNO,MELEM,MMATS,MPOIN,MTOTG,MTOTV,
*
NDOFN,NELEM,NEVAB,NGAUS,NNODE,
*
NPROP, NSTRE, POSGP, PROPS, STRSG,
*
TDISP,WEIGP,EPSTN,KUNLO,AMATX,DMATT,
*
THICK,MLAYR, NLAYR, LARGE)
C*** CHECK FOR CONVERGENCE
C
C
*
*
CALL CONYER (ELOAD, lITER,LNODS,MELEM,MEVAB,MTOTV,NCHEK,
*
NDOFN,NELEM,NEVAB,NNODE,NTOTV,STFOR,
*
TLOAD, TOFOR, TOLER)
C*** OUTPUT RESULTS IF REQUIRED
C
C
IF (lITER .EQ. 1 .AND. NOUTP(l) .GT. 0)
* CALL OUTPUT (IITER,MTOTG,MTOTV,MVFIX,NCHEK,NELEM,NGAUS,
* NOFIX, NOUTP, NPOIN, NSTRE,
* NVFIX,STRSG,TDISP,TREAC,EPSTN,POSGP,
* EFFST,MATNO,MMATS, PROPS, NPROP, MELEM, THICK,
* MPOIN,LNODS,MLAYR,NLAYR)
C*** IF SOLUTION HAS CONVERGED STOP ITERATING AND OUTPUT C RESULTS
C
C
50

IF (lITER.EQ. 1 .AND. NCHEK .EQ. 0) GOTO 100


IF (NCHEK.EQ. 0) GOTO 75
CONTINUE
KSTOP =1

75

CALL
*
*
*
*
*
*
*

OUTPUT(IITER,MTOTG,MTOTV,MVFIX,NCHEK,
NELEM,NGAUS,
NOFIX, NOUTP, NPOIN, NSTRE,
NVFIX,STRSG,TDISP,TREAC, EPSTN,
POSGP,
EFFST,MATNO,MMATS,PROPS,NPROP,
MELEM,THICK,
MPOIN,LNODS,MLAYR,NLAYR)

IF(KSTOP .EQ. 1) STOP


C*** RECORD ONTO TAPE 12 THE DATA NEEDED TO RESTART THE
C PROBLEM
C IN NEXT INCREMENT
C
CALL RESTAR(EFFST,ELOAD,EPSTN,MELEM,MEVAB,MTOTG,
MTOTV,MVFIX,TDISP,TLOAD,TREAC,STRSG,
TFACT,lINCS)
100 CONTINUE
STOP
END
C********************SUBROUTINE STARTS******************************
c**********SUBROUTINE ALGOR********************
c****************************************************************
c****************************************************************
SUBROUTINE ALGOR (FIXED, KITER, lITER, KRESL,MTOTV, NALGO,
*
NTOTV, KUNLO, KINCS)
c C
C THIS ROUTINE SETS EQUATION RESOLUTION INDEX, KRESL
C
c INTEGER MSG (3 )
DIMENSION FIXED(MTOTV)
DATA MSG/'ALGO','R ','ANFG'/
CALL ANZEIGE (MSG,3,O)
KRESL=2
IF (NALGO .EQ. 1 .AND. KITER .EQ. 2) KRESL=l
IF (NALGO .EQ. 2) KRESL=l
IF (NALGO .EQ. 3 .AND. lITER .EQ. 1) KRESL=l
IF (NALGO .EQ. 4 .AND. KITER .EQ. 2) KRESL=l
IF (NALGO .EQ. 4 .AND. lITER .EQ. 2) KRESL=l
IF (NALGO .EQ. 4 .AND. KUNLO .GT. 0) KRESL=l
IF (KITER .EQ. (KINCS+l+l KRESL=l
IF (lITER .EQ. 1) RETURN
D0 100 ITOTV = 1, NTOTV
FIXED (ITOTV) = 0.0
100
CONTINUE
RETURN
END
C***********************************************************C*******************
****************************************
SUBROUTINE BGMAT (COORD, DICOS, LNODS, MATNO,
*
MELEM,MLAYR, MMATS, MPOIN,
*
M3POI, NELEM, ? NEVAB, NGAUS,
*
NGAUZ, NLAYR, NNODE,NPROP,
*
POSGP, PROPS, THICK, WEIGP)
C
C
C... THIS ROUTINE COMPUTES BMATX AND GMATX (THE LATER FOR C LARGE
C DISPL ANALYSIS). ,THESE MATRICES ARE STORED ON TAPE 8 FOR
C LATER USAGE SELECTIVE INTEGRATION CAN BE ACCOUNTED FOR
C c
C
C
COMMON WORMX (3,24),QVALU,DJACB
INTEGER MSG(3)
DIMENSION BMATX (5,45),BDUMY (8,45),COORD(MPOIN,8),
*
DICOS (3,MJPOI),FUNCT(4),GMATX (2,45),
*
LNODS (MELEM,9),

*
*
*

MATNO (MELEM,MLAYR),POSGP (5),


PROPS (MMATS,NPROP),THICK (MPOIN),
SHAPE (3,9),WEIGP (5)
DATA MSG/'BGMA','T ','ANFG'/
CALL ANZEIGE (MSG,3,O)
REWIND 8
LGAUS = NGAUS - NGAUZ

C**
C
C
C LGAUS = 0 FOR NORMAL OR REDUCED INTEGRATION RULE. LGAUS
C SELECTIVE INTEGRATION RULE.
DO 100 IELEM = l,NELEM
IF (LGAUS .EQ. O)GOTO 25
NBORP = 0
C*** REDUCED INTEGRATION IS USED TO SET UP THE TRANSVERSE C SHEAR TERMS
C OF BMATX. FIRSTLY THESE TERMS ARE STORED IN BDUMY MATRIX
C
C
CONS1 = 1.0/POSGP (4)
CONS2 = -CONS 1
ZETSP =0.0
KGAUZ = -1
DO 20 IGAUZ = I, NGAUZ
DO 20 JGAUZ = I, NGAUZ
KGAUZ =KGAUZ+1
EXISP = POSGP (3+IGAUZ)
ETASP = POSGP (3+JGAUZ)
CALL SFR1 (SHAPE,EXISP,ETASP)
CALL FUN (BMATX,SHAPE,THICK,NBORP,
*
NNODE,ZETSP,MELEM,
*
COORD,DICOS,LNODS,IELEM,
*
MPOIN,M3POI,GMATX)
DO 15 IEVAB = I, NEVAB
DO 15 IPOSI = I, 2
JPOSI = 2*KGAUZ+IPOSI
15 BDUMY (JPOSI,IEVAB) = GMATX (IPOSI,IEVAB)
20 CONTINUE
C** SET UP BMATX AMD GMATX FOR NORMAL OR REDUCED INTEGRATION C RULE
25 NBORP = 1
C
C
C
C
C
DO 50 IGAUS = l,NGAUS
EXISP = POSGP (IGAUS)
DO 50 JGAUS = l,NGAUS
ETASP = POSGP (JGAUS)
CALL SFR1 (SHAPE,EXISP,ETASP)
ZETSP = -1.0
DO 45 ILAYR = l,NLAYR
LPROP MATNO (IELEM, ILAYR)
C DZETA 2.0 * HK / H
DZETA =PROPS (LPROP,3)
ZETSP =ZETSP + DZETA/2.0
C
CALL FUNC (BMATX, SHAPE, THICK,NBORP, NNODE,
*
ZETSP,MELEM,

*
COORD,DICOS,LNODS,IELEM,
*
MPOIN,M3POI,GMATX)
DVOLU = DJACB*WEIGP (IGAUS)*WEIGP(JGAUS)*DZETA
C
IF (LGAUS .EQ. 0) GOTO 40
C
C** SET UP THE INTEPOLATION FUNCTIONS TO PERFORM THE
C SELECTIVE INTEGRATION
C
FUNCT (1)= 0.25*(1.0+CONS1*EXISP)*
*
(1.0+CONS1*ETASP)
FUNCT (2)= 0.25*(1.0+CONS1*EXISP)*
*
(1.0+CONS2*ETASP)
FUNCT (3)= 0.25*(1.0+CONS2*EXISP) *
*
(1.0+CONS1*ETASP)
FUNCT (4)=0.25*(1.0+CONS2*EXISP)*
*
(1.0+CONS2*ETASP)
C** INTERPOLATE THE TRANSVERSE SHEAR TERMS OF BMATX FROM 4 C TO 9 G.P.
C
C
DO 30 IEVAB = I, NEVAB
DO 30 IDOFN = 4, 5
BMATX (IDOFN,IEVAB) = 0.0
DO 30 INTPO = I, 4
IGASH = 2 * INTPO + IDOFN - 5
30
BMATX (IDOFN, IEVAB) = BMATX (IDOFN, IEVAB) +
*

40

FUNCT (INTPO)*
*
BDUMY (IGASH, IEVAB)
CONTINUE
WRITE (8) BMATX, GMATX, DVOLU

C
ZETSP = ZETSP + DZETA / 2.0
C
45

CONTINUE

50

CONTINUE

C
C
100 CONTINUE
C
RETURN
END
C*******************************************************************************
**************************************C
SUBROUTINE CHECK1 (NDOFN, NELEM, NGAUS, NMATS,
*
NNODE, NPOIN,
*
MMATS, NVFIX, NGAUZ, NLAYR)
C*** THIS SUBROUTINE CHECKS THE MAIN CONTROL DATA
C
C
DIMENSION NEROR(20)
DO 10 IEROR =1, 8
10 NEROR(IEROR)=0
C
C*** CREATE THE DIAGNOSTIC MESSAGES
C
C
IF(NPOIN.LE.O) NEROR(1)=1
IF (NELEM*NNODE. LT. NPOIN) NEROR(2)=1
IF(NVFIX.LT.2.0R.NVFIX.GT.NPOIN) NEROR(3)=1

IF(NNODE.LT.8.0R.NNODE.GT.9) NEROR(4)=1
IF(NDOFN.NE.5.0R.NLAYR.GT.10) NEROR(5)=1
IF(NMATS.LT.1.0R.NMATS.GT.MMATS) NEROR(6)=1
IF(NGAUS.LT.2.0R.NGAUS.GT.3) NEROR(7)=1
IF(NGAUZ.LT.2.0R.NGAUZ.GT.3) NEROR(8)=1
C*** EITHER RETURN,OR ELSE PRINT THE ERRORS DIAGNOSED
C
C
C
KEROR=O
DO 20 IEROR=1,8
IF(NEROR(IEROR).EQ.O) GO TO 20
KEROR=l
WRITE(6,900) IEROR
900
FORMAT(//JIH *** DIAGNOSIS BY CHECK1, ERROR,I3)
20
CONTINUE
IF (KEROR.EQ.0) RETURN
C*** OTHERWISE ECHO ALL THE REMAINING DATA
C WITHOUT FURTHER COMMENT
C
CALL ECHO
C
END
C***********************************************************C*******************
***************************************C
SUBROUTINE CHECK2(COORD, IFFIX, LNODS, MATNO,
*
MELEM,MFRON, MPOIN, MTOTV,
*
MVFIX, NDFRO,
*
NDOFN, NELEM, NMATS, NNODE,
*
NOFIX,NPOIN, NVFIX, NLAYR)
C TO CRITICIZE THE DATA FROM SUBROUTINE INPUT
DIMENSION COORD (MPOIN,8), IFFIX (MTOTVl, LNODS
*
(MELEM,12),
*
MATNO (MELEM,NLAYR), NDFRO
*
(MELEM),
*
NEROR (20), NOFIX (MVFIX)
C
C*** CHECK AGAINST TWO IDENTICAL NONZERO NODAL COORDINATES
C
C
C
DO 5 IEROR = 9, 20
5
NEROR (IEROR) = 0
DO 10 IELEM = 1, NELEM
10
NDFRO (IELEM) = 0
DO 50 IPOIN = 2,NPOIN
KPOIN IPOIN - 1
DO 30 JPOIN = 1,KPOIN
DO 20 IDIME = 1,3
IF( COORD(IPOIN,IDIME) .NE. COORD
*
(JPOIN,IDIME)) GO TO 30
20
CONTINUE
NEROR(9)=NEROR(9)+1
C
30
CONTINUE
C
40
CONTINUE
C
C*** CHECK THE LIST OF ELEMENT PROPERTY' NUMBERS
C

C
DO 50 IELEM = l,NELEM
DO 50 ILAYR = l,NLAYR
50
IF(MATNO(IELEM,ILAYR).GT.
*
NMATS) NEROR(10}=NEROR(10)+1
C*** CHECK FOR IMPOSSIBLE NODE NUMBERS
C
C
DO 70 IELEM =1, NELEM
DO 60 INODE = I, NNODE
IF (LNODS (IELEM, INODE).EQ.O)NEROR (II)
60
IF(LNODS(IELEM,INODE).LT.0.OR.LNODS
*
(IELEM,INODE).GT.NPOIN} NEROR
*
(12)=NEROR(12)+1
70
CONTINUE
NEROR (1l}+1
C*** CHECK FOR ANY REPETITION OF A NODE NUMBER WITHIN AN C ELEMENT
C
C
DO 140 IPOIN = I, NPOIN
KSTAR = 0
DO 100 IELEM=l,NELEM
KZERO = 0
DO 90 INODE=l,NNODE
IF(LNODS(IELEM,INODE).NE.IPOIN}

GOTO 90
KZERO=KZERO+l
IF(KZERO.GT.l) NEROR(13)=NEROR
*
(13)+1
C*** SEEK FIRST,LAST AND INTERMEDIATE APPEARANCES OF NODE C IPOIN
C
C
IF(KSTAR.NE.O) GO TO 80
KSTAR=IELEM
c*** CALCULATE INCREASE OR DECREASE IN FRONTWIDTH AT EACH C ELEMENT STAGE
C
C
NDFRO(IELEM)=NDFRO(IELEM)+NDOFN
80
CONTINUE
C*** AND CHANGE THE SIGN OF THE LAST APPEARANCE OF EACH NODE
C
C
KLAST=IELEM
NLAST=INODE
90
CONTINUE
100
CONTINUE
IF(KSTAR.EQ.O) GO TO 110
IF(KLAST.LT.NELEM) NDFRO(KLAST+l)=
*
NDFRO(KLAST+l)-NDOFN
*
LNODS(KLAST,NLAST)=-IPOIN
GO TO 140
C*** CHECK THAT COORDINATES FOR AN UNUSED
C NODE HAVE NOT BEEN SPECIFIED
C
C
110
WRITE(6,900) IPOIN
900
FORMAT(/' CHECK WHY NODE',I4,'NEVER APPEARS '
NEROR(14)=NEROR(14) +1

SIGMA=O.O
DO 120 IDIME=l,3
120
SIGMA=SIGMA+ABS(COORD(IPOIN,IDIME))
IF(SIGMA.NE.O.O)
*
NEROR(15)=NEROR(15)+1
C*** CHECK THAT AN UNUSED NODE NUMBER IS NOT
C A RESTRAINED NODE
C
DO 130 IVFIX=l,NVFIX
130
IF(NOFIX(IVFIX).EQ.IPOIN) NEROR(16)= NEROR*(16)+1
140
CONTINUE
C*** CALCULATE THE LARGEST FRONTWIDTH
C
C
NFRON=O
KFRON=O
DO 150 IELEM=l,NELEM
NFRON=NFRON+NDFRO(IELEM)
150
IF(NFRON.GT.KFRON) KFRON=NFRON
WRITE(6,90S) KFRON
905
FORMAT(J/' MAXIMUN FRONTWIDTH ENCOUNTERED =' ,IS//)
IF (KFRON.GT.MFRON) NEROR(17)=1
C*** CONTINUE CHECKING THE DATA FOR THE FIXED VALUES
C
C
DO 170 IVFIX=l,NVFIX
IF( NOFIX(IVFIX) 'LE' 0 .OR.NOFIX(IVFIX)
*
.GT. NPOIN) NEROR(18) = NEROR(18) + 1
KOUNT=O
NLOCA = (NOFIX(IVFIX)-l)*NDOFN
DO 160 IDOFN=l,NDOFN
NLOCA = NLOCA + 1
160
IF(IFFIX(NLOCA).GT.O) KOUNT=l
IF( KOUNT .EQ. 0 ) NEROR(19) =NEROR(19) + 1
KVFIX=IVFIX-1
DO 170 JVFIX=l,KVFIX
170
IF(IVFIX.NE.1.AND.NOFIX(IVFIX).EQ. NOFIX(JVFIX)
NEROR(20)=NEROR(20) +1
KEROR=O
DO 180 IEROR=9, 20
IF (NEROR(IEROR) .EQ.O) GO TO 180
KEROR=l
WRITE(6,910) IEROR,NEROR(IEROR)
*
910 FORMAT(//'*** DIAGNOSIS BY CHECK2, ERROR',
*
I3,6X,' ASSOCIATED NUMBER',IS)
180
CONTINUE
IF(KEROR.NE.O) GO TO 200
C*** RETURN ALL NODAL CONNECTION NUMBERS TO
C POSITIVE VALUES
C
C
C
C
DO 190 IELEM=l,NELEM
DO 190 INODE=l,NNODE
190
LNODS(IELEM,INODE)=IABS(LNODS(IELEM,INODE)
RETURN
200
CALL ECHO
END
C***********************************************************C*******************

***************************************C
SUBROUTINE CONVE(ELOAD,IITER,LNODS,MELEM,
*
MEVAB,MTOTV,NCHEK,NDOFN,
*
NELEM,NEVAB,NNODE,NTOTV,
*
STFOR,TLOAD,TOFOR, TOLER)
c*******
C
c*** THIS ROUTINE CHECKS FOR CONVERGENCE OF THE ITERATION
C
PROCESS
c******
INTEGER MSG (3 )

*
*

DIMENSION ELOAD (MELEM,MEVAB),LNODS(MELEM,12),


STFOR(MTOTV),
TOFOR(MTOTV),TLOAD(MELEM,MEVAB)
DATA MSG/'CONV','ER ','ANFG'/
CALL ANZEIGE (MSG,3,O)
NCHEK = 0
RESID = 0.0
RETOT = 0.0
REMAX = 0.0
DO 5 ITOTV = 1, NTOTV
STFOR (ITOTV) = 0.0
TOFOR (ITOTV) = 0.0
CONTINUE
DO 40 IELEM = 1, NELEM
KEVAB = 0
DO 40 INODE = 1,NNODE
LOCNO = IABS(LNODS (IELEM,INODE)
DO 40 IDOFN = 1, NDOFN
KEVAB = KEVAB + 1
NPOSI = (LOCNO - l)*NDOFN +IDOFN
STFOR (NPOSI) = STFOR(NPOSI) + ELOAD(IELEM,KEVAB

)
40

TOFOR (NPOSI) = TOFOR(NPOSI) + TLOAD(IELEM,KEVAB

50
10
*

*
20
30

DO 50 ITOTV = 1, NTOTV
REFOR=TOFOR(ITOTV) - STFOR(ITOTV)
RESID = RESID + REFOR ** 2
RETOT = RETOT + TOFOR(ITOTV) ** 2
AGASH = ABS (REFOR)
IF (AGASH .GT. REMAX) REMAX= AGASH
DO 10 IELEM = 1, NELEM
DO 10 IEVAB = 1, NEVAB
ELOAD (IELEM,IEVAB) = TLOAD(IELEM,IEVAB)
-ELOAD(IELEM,IEVAB)
RESID = SQRT (RESID)
RETOT = SQRT (RETOT)
RATIO = 100.0 * RESID /RETOT
IF (RATIO .GT.TOLER) NCHEK =1
IF (lITER .EQ. 1) GOTO 20
IF (RATIO .GT. PVALU) NCHEK= 999
PVALU = RATIO
WRITE (6,30)NCHEK,RATIO,REMAX
FORMAT (lHO,3X,'CONVERDENCE CODE =',I4,3X,'NORM

OF RESIDUAL
*

SUM*RATIO=',E14.6,3X,'MAXlMUN RESIDUAL =',E14.6)


RETURN
END

C***********************************************************C*******************
****************************************
SUBROUTINE DIMEN(MBUFA,MELEM,
*
MEVAB,MFRON,MMATS,
*
MPOIN,MSTIF,MTOTG,
*
MTOTV,MVFIX,NDOFN,
*
NPROP,NSTRE,MJPOI,
*
MLAYR)
c******
C
C** THIE SUBROUTINE PRESETS VARIABLES ASSIOATED WITH DYNAMIC
C DIMENSIONING
C
c******
C
MBUFA=10
MELEM=20
MFRON=75
MLAYR=10
MMATS=5
MPOIN=100
M3POI=3*MPOIN
NDOFN=5
NSTRE=5
MEVAB=NDOFN*9
MSTIF=(MFRON+1)*MFRON/2
MTOTG=MELEM*MLAYR*9
MTOTV=MPOIN*NDOFN
MVFIX =36
NPROP =17
RETURN
END
C***********************************************************C*******************
****************************************
SUBROUTINE ECHO
C******
C
C
C
C IF DATA ERRORS HAVE BEEN DETECTED BY SUBROUTINES CHECK1 OR
C CHECK2,THIS SUBROUTINE READS AND WRITES THE REMAINUNG DATA C CARDS
c******
DIMENSION NTITL(80)
INTEGER MSG (3 )
DATA MSG/'ECHO',' ','ANFG'/
CALL ANZEIGE (MSG,3,0)
WRITE(6,900)
900
FORMAT(//50H NOW FOLLOWS A LISTING
*
OF POST DISASTER DATA CARDS/)
10
READ(5,905) NTITL
905
FORMAT(80A1)
WRITE(6,910) NTITL
910
FORMAT(20X,80Al)
GO TO 10
END
C***********************************************************C*******************
****************************************
SUBROUTINE FLOWS(ABETA,AVECT,DVECT,LPROP
,
*
MMATS,NPROP,PROPS,SG,A,DMATT)

c******
C
c** THIS ROUTINE CALCULATES THE FLOW VECTOR -AVECT- AND
C COMPUTES -DVECT- AND -ABETAC
c******
C
DIMENSION AVECT (5) ,DMATT(5,5,MMATS),DV
ECT(5),
*
PROPS(MMATS,NPROP),SG(5),A(9,MMATS)
C
C*** SET UP MATERIAL PROPERTIES
C
HARDS = PROPS(LPROP,7)
C
C*** COMPUTES THE VECTOR AVECT
C
C
L = LPROP
AFUNC SQRT( A(l,L)*SG(l)*SG(l) + 2.0*A
(2,L)*SG(1)*SG(2)
*
+2.0*A(3,L)*SG(1)*SG(3) + A(4,L)*SG(2
)*SG(2)
*
+2.0*A(5,L)*SG(2)*SG(3) + A(6,L)*SG(3
)*SG(3)
*
+ A(7,L)*SG(4)*SG(4) + 2.0*A(8,L)*SG(
4)*SG(5)
*
+ A(9,L)*SG(5)*SG(5))
AFUNC= 1.0/AFUNC
AVECT(l)= (A(1,L)*SG(1)+A(2,L)*SG(2)+
A(3,L)*SG(3))*AFUNC
AVECT(2)=(A(2,L)*SG(1)+A(4,L)*SG(2)+A
(5,L)*SG(3))*AFUNC
AVECT(3)=(A(3,L)*SG(1)+A(5,L)*SG(2)+A
(6,L)*SG(3))*AFUNC
AVECT(4)=(A(7,L)*SG(4)+A(8,L)*SG(5))*
AFUNC
AVECT(5)= (A(8,L)*SG(4)+A(9,L)*SG(5))
*AFUNC

C WRITE(6,910) AVECT
C 910 FORMAT(8H AVECT =,5E15.6)
C
C** COMPUTE DVECT = DMATX*AVECT
C
C

10
)*AVECT(J)
C WRITE(6,920) DVECT
C 920 FORMAT(8H DVECT =,5E15.6)
C
C** COMPUTE ABETA = 1.0/(H+ATDA)

DO 10 I =1, 5
DVECT(I) = 0.0
DO 10 J = 1, 5
DVECT(I) = DVECT (I) +DMATT(I,J,LPROP

C
C
20

DENOM = HARDS
DO 20 ISTRE = 1, 5
DENOM = DENOM+AVECT(ISTRE)*DVECT(ISTR

E)
ABETA = 1.0/DENOM
C WRITE(6,930) ABETA
C 930 FORMAT(8H ABETA =,E15.6)
C
RETURN
END
C*************************************************************************
*******************************************************************
C*************************************************************************
**********************************************************
SUBROUTINE FRAME (N1,N2,N3,NOPN)
c*******
C
C
C
C
C
C
C
C
C
C MULTIPLE VECTOR AND/OR MATRIX MANIPULATION
C NOPN =
C NOPN =
C NOPN =
C NOPN
C NOPN
C 1, CREATE UNIQUE ORTHOGONAL AXES IN MATRIX Nl INCLUDING VEC.
C 2, SCISSORS ON OTHER TWO VECTORS IN Nl,THEN N2 MADE ORTHO
C 3, BEST ORTHOGONAL APPROXIMATION TO GIVEN NON-CARTESIAN FRA
C 4, N2 BECOMES N1T*N2*Nl USING N3 GASH
C 5, N2 BECOMES Nl*N2*N1T USING N3 = GASH
C*******
C
C
C
C
COMMON WORMX(3,24),QVALU,DJACB
M3 = Nl + 2
12 = N2 - 1
IF (12 .GE.Nl) GOTO 10
I2 = 12 + 3
10
I1 = Nl + Nl + Nl + 3 - N2 - I2
GOTO (1,2,3,4,5), NOPN
C VEKTOR V-l
C
C
1 WORMX (1,I1) = WORMX (3,N2)
WORMX (2,I1) = 0.0
WORMX (3,I1) =-WORMX (1,N2)
IF ( WORMX (l,Il) .EQ. 0.0 .AND. WOR
MX (J,Il) .EQ. 0.0)
*WORMX(l,Il) = -WORMX(2,N2)
C V-2 = V-3 X V-l

C
C
C
2

CALL VECT (N2,Il,I2,4)


GOTO 14
CALL MATM (11,12,0,7)
CALL VECT (Il,I2,N2,4)
C NORMALISIERUNG

C
C
C
C
14

CALL MATM (N1,N1,0,6)


RETURN .
3
I1 == N1 + 1
I2 == M3
D0 11 I =1, 50
DO 11 N = N1, M3
CALL MATH (11,12,0,7)
I1=I2
11
I2 = N
RETURN
4
CALL MATH (N1,N2,N3,2)
CALL MATH (N3,N1,N2,3)
RETURN
5
CALL MATH (N1,N2,N3,3)
CALL MATH (N3,N3,0,5)
CALL MATH (N1,N3,N2,3)
RETURN
END
C*******************************************************************************
*********************
C*******************************************************************************
*************************
SUBROUTINE FUNC(BMATX,SHAPE,THICK,NBORP
,NNODE,ZETA,MELEM,
*
COORD,DICOS,LNODS,IELEM,MPOIN,M3POI,GMA
TX)
c*******
C
c** SETS UP THE B MATRIX AND JACOBIAN, BEING THE MOST CHARACTERISTIC
C SUBROUTINE OF THIS ELEMENT
C
c*******
C
C
C
C
REAL JACB(9),INVJAC(9)
COMMON WORMX (3,24), QVALU, DJACB
DIMENSION BMATX (5,45), SHAPE (3,9)
, THICK (MPOIN), GMATX (2,45),
*
COORD (MPOIN,8), DICOS (3,M3POI),LN
ODS (MELEM,9)
EQUIVALENCE ( JACB(1),WORMX(l,2)) ,
( INVJAC(1),WORMX(1,5))
DO 20 I = 1, 3
D0 20 J == 1, 4
20
WORMX (I,J) = 0.0
C*** THE ELEMENT GEOMETRY IS DEFINED BY THE 8-NODE SERENDIPITY

C
DO 24 INODE = 1, 8
IPOIN = lABS (LNODS (IELEM,IN
ODE)
DO 24 K = 1,3
GTOP = COORD (IPOIN,K)
GBOT = COORD (IPOIN,K+4)
GOSH = ((l.O+ZETA)*GTOP + (1.
0 - ZETA)*GBOT) * 0.5
C*** THIS CREATES X, Y, Z IN COLUMN 1 AND J-TRANSPOSE IN COLUMN 2 - 4
C
C
DO 22 J = 1,3
22
WORMX (K,J) = WORMX (K,J)
+ GOSH * SHAPE (J,INODE)
WORMX (K,4) a WORMX (K,4)
+ SHAPE (l,INODE) * (GTOP - GBOT)*0.5
24
CONTINUE
C*** THIS CREATES INVERSE VON J-TANSPOSE IN COLUMNS 5 - 7 OF WORMX
C
CALL INV3 (JACB, INVJAC, DJA
CB)
C
C TRANSPONIEREN DER INVERSEN
C
CALL MATM(5,5,0,5)
C
C*** EXIT FOR A CASE WHEN J, J-INVERSE AND DET. J ONLY ARE REQUIRED
C
IF (NBORP .EQ. 2) RETURN
C
C*** THIS CREATES DIRECTION ZETA NORMAL TO XI AND ETA
C
CALL VECT (2,3,10,4)
C
C*** THIS CREATES A LOCAL CARTESIAN SET
C
CALL FRAME (8,10,0,1)
IF (NBORP .EQ. 4) RETURN
C
C*** CREATES THE TERMS OF STRAIN/DISPLACEMENT MATRIX
C
C
DO 40 INODE = 1,NNODE
DO 40 J = 1, 5
C*** 5 SHAPE FUNCTIONS CREATED AT A NORMAL
C
C
C
C
NSHAP = 5*(INODE-1) + J
DO 26 I = 11, 17
DO 26 K = 1, 3
26
WORMX (K,I) = 0.0
IF (J .GE. 4) GOTO 30
C*** SHAPE AND XI AND ETA DERIVATES
C
C
DO 29 K = 1, 3
29
WORMX (J,K+10) = SHAPE

(K,INODE)
GOTO 36
C*** JPOSI IS 1,2 FOR LOCAL X, Y DEFLECTIONS OF ENDS OF NORMAL
C
30
JPOSI = J - 3
C
C*** X, Y, Z COMPOMENTS OF LOCAL X, Y DEFLECTIONS
C
C
C
lPOIN = lABS (LNOD
S (IELEM,INODE))
IPOSI = (IPOIN - 1
) * 3
TH2 = THICK(IPOIN)
* 0.5
GISH = ZETA * TH2
DO 35 M = 1,3
GASH = DICOS (M,IP
OSI + JPOSI)
IF (JPOSI .NE. 2)
GOTO 32
GASH = - GASH
32
GUSH = GASH * GISH
GOSH = GASH * TH2
DO 34 K = 1, 4
C*** SHAPE AND ITS XI,ETA DERIVATES - K=4 GIVES SPECIAL ZETA DERIVATES
IF (K .EQ. 4) GOTO
31
WORMX (M,K+10) = SH
APE (K,INODE) * GUSH
GOTO 34
C*** U,V,W ARE NOW IN COL 11
C
31
WORMX (M,K+10) SHAP
E (l,INODE) * GOSH
C
34
CONTINUE
C
35
CONTINUE
C
C*** THIS TRANSPOSES XI, ETA AND ZETA DERIVATES OF U, V, W
C
36
CALL MATM(12,12,0,5)
C
C*** MULTIPLIES BY J-INVERSE TO FORM X, Y, Z DERIVATES OF U, V, W
C
CALL MATM (5,12,15,3)
C
C*** THIS CONVERTS TO LOCAL AXES AT INTEGRATING POINT
C
C
C
C***
C
C
C***
C
C
CALL MATM (S,15,21,2)

CALL MATM (21,S,lS,3)


IF (NBORP .EQ. 0) GOTO
39
C SET UP THE STRAIN MATRIX
BMATX (1, NSHAP) = WOR
MX(1,18)
BMATX (2, NSHAP) WORMX
(2,19)
BMATX (3, NSHAP) WORMX
(2,18)+ WORMX(1,19)
BMATX (4, NSHAP) = WOR
MX(1,20)+WORMX(3,18)
BMATX (5, NSHAP) = WOR
MX (2,20)+ WORMX(3,19)
C LOCAL STRAINS GO IN BMATX IN THE ORDER X, Y, XY,
GMATX(1,NSHAP)=WORMX(1
,20)
GMATX(2,NSHAP) = WORMX
(2,20)
GOTO 40
XZ, YZ
C*** LOCAL DERIVATIVES GO IN -GMATX- IN THE ORDER OW/OX , DW/DY
C
39
CONTINUE
C
C*** TRANSVERSE SHEAR TERMS FOR SELECTIVE INTEGRATION
C
C
C
GMATX(1,NSHAP)=WORMX(1
,20)+WORMX(3,18)
GMATX(2,NSHAP) = WORMX
(2,20)+ WORMX(3,19)
40
CONTINUE
RETURN
END
c*******************************************************************************
**********************************************
c***************************************************************
***********************
SUBROUTINE GAUSSQ (N
GAUS,POSGP,WEIGP)
c******
C
c*** THIS ROUTINE SETS UP THE GAUS-LEGENDRE INTEGRATION CONSTANTS
C
c******
C
DIMENSION POSGP(S),W
EIGP(S)
DO 2 IGASH = 1,5
POSGP (IGASH) = 0.0
WEIGP (IGASH) = 0.0
2
IF (NGAUS .GT.2) G
OTO 4
POSGP (1) = -0.57735
0269189626
WEIGP (1) 1.0
GOTO 8

POSGP (1) = -0.7745


96669241483
4

POSGP (2) 0.0


WEIGP (1) - 0.555555

555555556
WEIGP (2) 0.88888888
8888889
8

KGAUS = NGAUSj2
DO 10 IGASH =1, KGAU

S
JGASH = NGAUS + 1 IGASH
POSGP (JGASH) = -POS
GP (IGASH)
10

WEIGP (JGASH) = WE

IGP (IGASH)
CONTINUE
C*** EXTRA POSITION FOR TWO GAUSS POINT RULE (SELECTIVE INTEGRATION)
C
POSGP (4) = -0.5773
50269189626
WEIGP (4) = 1.0
POSGP (5) = -POSGP
(4)
WEIGP (5) = WEIGP (
4)
RETURN
END
c*******************************************************************************
*********
c*******************************************************************************
**********
KGAUS,DVOLU)
c*******
C
c** THIS ROUTINE CALCULATES THE GEOMETRIC MATRIX -GEMTXC
c*******
C
SUBROUTINE GEOME (ESTIF,GMATX,STRSG,MEVAB,NEVAB,
MTOTG,
* KGAUS,DVOLU)
INTEGER MSG(3)
DATA MSG/'GEOM','E ','ANFG'j
CALL ANZEIGE (MSG,3,0)
DO 5 IEVAB = 1, NEVAB
DO 5 JEVAB =1, NEVAB
5 GEMTX (IEVAB,JEVAB) = 0.0
C** SET UP -STDUM- MATRIX WITH THE ACTUAL IN-PLANE STRESSES
C
C
STDUM (1,1)
STDUM (1,2)
STDUM (2,1)
STDUM (2,2)
STRSG (l,KGAUS)
STRSG (3, KGAUS)
STRSG (3,KGAUS)
STRSG (2,KGAUS)
c** EVALUATE THE PRODUCT OF STDUM*GMATX
C

10
I,J) * GMATX (J,IEVAB)
C** CALCULATE THE GEOMETRIC MATRIX
C

DO 10
DO 10
GDUMM
DO 10
GDUMM

I = 1, 2
IEVAB = 1, NEVAB
(I,IEVAB) = 0.0
J = 1, 2
(I,IEVAB) = GDUMM (I,IEVAB) + STDUM (

DO 20
DO 20
DO 20
GEMTX

IEVAB = 1, NEVAB
I = I, 2
JEVAB = IEVAB,NEVAB
(IEVAB,JEVAB) = GEMTX (IEVAB,JEVAB) +

20
GMATX (I,IEVAB) *
* GDUMM (I,JEVAB) * DVOLU
C
C** EVALUATE THE NEW STIFFNESS MATRIX ADDING -GEMTXDO
30
IEVAB = l,NEVAB
DO 30 JEVAB = IEVAB,NEVAB
30
ESTIF (IEVAB,JEVAB) = ESTIF (IEVAB,JEVAB) +
GEMTX (IEVAB,JEVAB)
RETURN
END
c*******************************************************************************
*****
c*******************************************************************************
*******
SUBROUTINE INCREM (ELOAD, FIXED, IINCS, MELEM,
MEVAB,
* MTOTV, MVFIX, NDOFN, NELEM, NEVAB,
* NOFIX, NTOTV, NVFIX, PRESC, RLOAD,
* TLOAD, TOLER, LNODS, IFFIX, NNODE,
* NREST, KINCS)
c******
C
C** THIS ROUTINE INCREMENTS THE APPLIED LOADING
C
c******
DIMENSION ELOAD (MELEM,MEVAB), FIXED (MTOTV),
* NOUTP (2),NOFIX (MVFIX),PRESC (MVFIX,NDOFN),
* RLOAD (MELEM,MEVAB),TLOAD (MELEM,MEVAB),
* LNODS (MELEM,9),IFFIX (MTOTV)
INTEGER MSG (3)
DATA MSG/'INCR','EM ','ANFG'/
CALL ANZEIGE (MSG,3,0)
IF (NREST .EQ. 0) GOTO 20
IF (IINCS .GT. KINCS) GOTO 20
DO 10 IINCS = 1,KINCS
10 READ (5,950) FACTO
20 WRITE (6,900) IINCS
900 FORMAT (///,5X,'*** INCREMENT NUMBER ',I5)
READ (5,950) FACTO, TOLER,MITER, NOUTP (1) ,NOU
TP(2)
950 FORMAT (2F10.5,315)
TFACT = TFACT+FACTO
WRITE (6,960) TFACT,TOLER,MITER,NOUTP(1),NOUTP(
2)
960 FORMAT (lHO,5X,'LOAD FACTOR =',F10.5,5X,
MITER,
NOUTP,

TFACT,
NCOLA,
*' CONVERGENCE TOLERANCE =',F10.5,5X,'MAX. NO.
OF ITERATIONS =',
* I5,//' INITIAL OUTPUT PARAMETER =',I5,5X,'FIN
AL OUTPUT PA
*RAMETER =',I5)
C
DO 80 IELEM = I, NELEM
DO 80 IEVAB = I, NEVAB
ELOAD (IELEM,IEVAB) = ELOAD (IELEM,IEVAB)+RLOAD
(IELEM,IEVAB)*FACTO
80 TLOAD (IELEM,IEVAB) = TLOAD (IELEM,IEVAB)+RLOAD
(IELEM,IEVAB)*FACTO
c*** INTERPRET FIXITY DATA IN VECTOR FORM
C
C
DO 100 ITOTV = I, NTOTV
100 FIXED (ITOTV)= 0.0
DO 110 IVFIX = I, NVFIX
NLOCA = (NOFIX (IVFIX)-l)*NDOFN
DO 110 IDOFN = I, NDOFN
NGASH = NLOCA + IDOFN
FIXED (NGASH) = PRESC (IVFIX,IDOFN)*FACTO
110 CONTINUE
C*** ADDITIONAL CONSTRAINTS FOR THE HETEROSIS ELEMENT
C
IF (NNODE .EQ.8 .OR. NCOLA .NE. 1) GOTO 130
DO 120 IELEM = 1,NELEM
LNOD9 = LNODS (IELEM,9)
NLOCA = (LNOD9-1)*NDOFN
C IDOFN = 3
DO 120 IDOFN = 1, 3
NGASH = NLOCA + IDOFN
120 IFFIX (NGASH) = -1
130 CONTINUE
RETURN
END
c***********************************************************************
c***********************************************************************
SUBROUTINE INPUT (ANVEL,
* MATNO,
* MTOTV,
* NEVAB,
* NOFIX,
* NTOTV,
* NALGO,
* COORD,
* MFRON,
* MVFIX,
* NGAUS,
* NPOIN,
* NVFIX,
* NINCS,
* GRAVI, IFFIX, LNODS,
* MELEM, MMATS, MPOIN,
* NDFRO, NDOFN, NELEM, NCOLA,
* NGAUZ, NMATS, NNODE, MLAYR,
* NPROP, NTOTG, NLAYR, NREST,
* POSGP, PRESC, PROPS, WEIGP,

* LARGE)
c******
C
c** THIS ROUTINE ACCEPTS MOST OF THE INPUT DATA
C
c******
C
C
DIMENSION COORD (MPOIN,B), IFFIX (MTOTV), LN
ODS (MELEM,9),
* MATNO (MELEM,MLAYR), NDFRO (MELEM), GRAVI (3)
,
* NOFIX (MVFIX), POSGP (5), PRESC (MVFIX,NDOFN)
,
* PROPS (MMATS,NPROP), TITLE (20), WEIGP (5)
INTEGER MSG(3)
DATA MSG/'INPU','T ','ANFG'/
CALL ANZEIGE (MSG,3,0)
READ (5, 920) TITLE
WRITE (6,920) TITLE
C*** READ THE FIRST DATA CARD, AND ECHO IT IMMEDIATELY
C
C
READ (5,*) NPOIN,NELEM,NVFIX, NNODE,NMATS , N
GAUS ,NGAUZ , NCO LA ,
* NALGO,NINCS,NLAYR,LARGE,NREST
NEVAB NDOFN*NNODE
NTOTV = NPOIN*NDOFN
NGAU2 = NGAUS*NGAUS
NTOTG = NELEM*NGAU2*NLAYR
WRITE (6,901) NPOIN,NELEM,NVFIX,NNODE,NMATS,N
GAUS,NGAUZ,
*NEVAB,NCOLA,NALGO,NINCS,NLAYR,LARGE,NREST
WRITE (6,912)
READ (5,*) GRAVI(l) , GRAVI(2) , GRAVI(3),ANV
EL
WRITE (6,913) GRAVI(l), GRAVI(2), GRAVI(3) ,A
NVEL
CALL CHECKI (NDOFN,NELEM,NGAUS,NMATS,NNODE,NP
OIN,
* MMATS,NVFIX,NGAUZ,NLAYR)
C*** READ THE ELEMENT NODAL CONNECTIONS, AND THE PROPERTY NUMBERS.
C
WRITE (6,902)
DO 2 IELEM = 1, NELEM
READ (5,*) NUMEL,(MATNO(NUMEL,ILAYR),ILAYR=l
,NLAYR),
* (LNODS(NUMEL,INODE),INODE=1,NNODE)
WRITE (6,903) NUMEL, (MATNO(NUMEL,ILAYR) ,IL
AYR=1,NLAYR)
WRITE (6, 940) (LNODS(NUMEL,INODE),INODE=1,N
NODE)
2 CONTINUE
C*** ZERO ALL THE NODAL COORDINATES, PRIOR TO READING SOME OF THEM.
C
C
DO 4 lPOIN = 1, NPOIN
DO 4 IDIME = 1, 8
4 COORD (IPOIN,IDlME) = 0.0
C*** READ SOME NODAL COORDINATES, FINISHING WITH THE LAST NODE OF ALL.

C
C
WRITE (6,904)
6 READ (5,*) lPOIN,(COORD (IPOIN,IDlME),IDIME
=1, 8)
IF (IPOIN .NE. NPOIN) GOTO 6
C*** INTERPOLATE COORDINATES OF MID-SIDE NODES
C
CALL NODEX (COORD,LNODS,MELEM,MPOIN,NELEM
,NNODE)
DO 10 IPOIN = 1, NPOIN
10 WRITE (6,906) IPOIN,(COORD(IPOIN,IDIME),ID
lME=1,8)
C
C*** READ THE FIXED VALUES.
C
C
C
DO 20 IVFIX = 1,MTOTV
20 IFFIX(IVFIX) = 0
WRITE (6,907)
DO 8 IVFIX = 1, NVFIX
READ(5,*) NOFIX(IVFIX),IFPRE,(PRESC(IVFIX
,IDOFN),IDOFN=l,NDOFN)
WRITE(6,908) NOFIX(IVFIX),IFPRE,(PRESC(IV
FIX,IDOFN),IDOFN=l,NDOFN)
NLOCA = (NOFIX(IVFIX)-l)*NDOFN
IFDOF = 10**(NDOFN-1)
DO 8 lDOFN = 1, NDOFN
NGASH = NLOCA + lDOFN
IF (IFPRE .LT. IFDOF) GOTO 8
IFFIX (NGASH) = 1
IFPRE = IFPRE - IFDOF
8 IFDOF = IFDOF/10
C*** READ THE AVAlLABELE SELECTION OF ELEMENT PROPERTIES.
C
C
WRITE (6,910)
DO 18 lMATS = 1,NMATS
READ (5,*) NUMAT
READ (5,*) (PROPS (NUMAT,IPROP),IPROP=l,
NPROP)
18 WRITE (6,911) NUMAT, (PROPS (NUMAT,IPROP
),IPROP=l,NPROP)
C*** SET UP GAUSSIAN INTEGRATION CONSTANTS
C
*
*
CALL GAUSSQ (NGAUS,POSGP,WEIGP)
CALL CHECK2 (COORD, IFFIX, LNODS,MATNO,ME
LEM,MFRON,MPOIN,MTOTV,
MVFIX,NDFRO,NDOFN,NELEM,NMATS,NNODE,NOFIX
,NPOIN,
NVFIX,NLAYR)
920 FORMAT(20A4)
900 FORMAT (1615,/5X,1515)
901 FORMAT (111,5X,' NPOIN =',I5/5X,' NEL
EM =',I5/5X,' NVFIX =',15/

* 5X,' NNODE =',I5/5X,' NMATS =',I5/5X,'


NGAUS =',15/
* 5X,' NGAUZ =',I5/5X,' NEVAB =',I5/5X,'
NCOLA =',I5/5X,
* , NALGO =',I5/5X,' NINCS =',15,1,
* 5X,' NLAYR =',I5/5X,' LARGE =',I5/5X,'
NREST =',15)
902 FORMAT (II' ELEMENT',5X,'PROPERTY I S
CHICHT',40X,'KNOTENNUMMERN')
903 FORMAT (lX,I5,4X,1015)
904 FORMAT (II' KNOTEN',8X,'XTOP',10X,'YT
OP',10X,'ZTOP',8X,
'PRESSTOP',12X,'XBOT',10X,'YBOT',10X,'ZBO
T',10X,'PRESSBOT')
905 FORMAT (I5,4F15.10/5X,4F15.10)
906 FORMAT (I5,4(1PE15.4),2X,4(lPE15.4
907 FORMAT (II' KNOTEN',6X,'CODE',15X,'VO
RGEGEBENE WERTE',/)
908 FORMAT (lX,I4,5X,I5,5X,5F10.6)
910 FORMAT (11,20X,'ELEMENT PROPERTIES :'
)
911 FORMAT (I,' MATNR.',5X,'EMODUL-1',9X,
'NUE-12',9X,'TZETA',9X,
'DICHTE',9X,'ALPHA',8X,'FLIESZGRENZE-1',2
X,'VERFESTIGG-1"
* I,I5,3X,7(lPE15.5),I,
*12X,'EMODUL-2',6X,'SCHUBMODUL-12',2X,'SCH
UBMODUL-13',2X,
*'SCHUBMODUL-23',2X,'FLIESZGRENZE-2',2X,'F
LIESZGRENZE-J',
*2X,'MAX.SCHUB-12',1,8X,7(lPE15.5),I,
*12X,'MAX.SCHUB-13',4X,'MAX.SCHUB-23',4X,'
MATWINKEL',I,
*8X,7(lPE15.5))
912 FORMAT (II' X-GRAVITY Y-GRAVITY Z-GRA
VITY ANG-VEL'I)
913 FORMAT (4F10.5)
930 FORMAT (7F10.5/7F10.5/7F10.5)
940 FORMAT ('+',60X,12I5)
RETURN
END
c***********************************************************************
c***********************************************************************
SUBROUTINE INVAR (A,ST,LPROP,MMATS,YIELD)
c******
C
c*** THIS ROUTINE EVALUATES THE CURRENT VALUE OF THE
C YIELD FUNCTION
C
C******
DIMENSION ST (5), A (9,MMATS)
INTEGER MSG (3 )
DATA MSGI'INVA','R ','ANFG'I
C CALL ANZEIGE (MSG,3,0)
L = LPROP
GASH=A(1,L)*ST(1)*ST(1)+2.0*A(2,L)*ST(1)*
ST(2)+2.0*A(3,L)*
* ST(1)*ST(3)+A(4,L)*ST(2)*ST(2)+2.0*A(5,
L)*ST(2)*ST(l)+
* A(6,L)*ST(3)*ST(l)+A(7,L)*ST(4)*ST(4)+2

.0*A(8,L)*ST(4)*
* ST(5)+A(9,L)*ST(5)*ST(5)
YIELD = SQRT (GASH)
RETURN
END
c***********************************************************************
c***********************************************************************
SUBROUTINE LDISP (BMATX,GMATX,ETDIS,NEVAB
)
c******
C
c*** THIS ROUTINE EVALUATES THE INITIAL DISPLACEMENT MATRIX -BLARGC
C*AND ADDS IT UP TO BMATX
C
c******
C
DIMENSION BMATX (5,45),GMATX (2,45),ETDIS
(45),ADUMM (l,2),
* BLARG (l,45)
INTEGER MSG (3 )
DATA MSGI'LDIS','P ','ANFG'I
CALL ANZEIGE (MSG,l,O)
C** CALCULATE THE ACTUAL -X- AND -Y- DERIVATIVES OF -W- DISPLACEMENT
C
DWDXX = 0.0
DWDYY = 0.0
D0 10 IEVAB 1, NEVAB
DWDXX = OWDXX + GMATX (l,IEVAB)*ETDIS(IEVAB
)
10 DWDYY = DWDYY + GMATX (2,IEVAB)*ETDIS(IEVAB
)
C** SET UP THE ADUMM MATRIX
C
C
ADUMM (1,1)= DWDXX
ADUMM (1,2)= 0.0
ADUMM (2,1)= 0.0
ADUMM (2,2)=DWDYY
ADUMM (3,1)=DWDYY
ADUMM (3,2)=DWDXX
C** NOW CALCULATE -BLARG- MATRIX
C
C
DO 20
DO 20
BLARG
DO 20
20 BLARG

IEVAB ... 1, NEVAB


I = 1, 3
(I,IEVAB)=0.0
J = 1, 2
(I,IEVAB) BLARG (I,IEVAB) + ADUMM (I,

J)*GMATX (J,IEVAB)
C** THE NEW -BMATX- IS EQUAL TO -BMATX+BLARGC
DO 30 IEVAB = 1, NEVAB
DO 30 I = 1, 3
30 BMATX (I,IEVAB) = BMATX (I, IEVAB) +BLARG(I
, IEVAB)
RETURN
END
C***************************************************************************

C***************************************************************************
SUBROUTINE LOADS (ANVEL,COORD,ELOAD,GRAVI,LN
ODS,
* MATNO,MELEM,MEVAB,MMATS, MPOIN, DICOS,
* NELEM,NEVAB,NGAUS,THICK,
* NNODE,NPROP,NSTRE,POSGP,M3POI,
* PROPS,WEIGP,MLAYR,NLAYR)
C******
C
c*** THIS ROUTINE EVALUATES THE NODAL FORCES DUE TO EXTERNAL
C APPLIED LOADS (CENTRIFUGAL, GRAVITY, PRESSURE AND POINT LOADS)
C
c******
C
COMMON WORMX (3,24),QVALU,DJACB
DIMENSION BMATX (5,45),COORD (MPOIN,8),
* ELOAD (MELEM,MEVAB),GRAVI (3),LNODS (MEL
EM,9),
* MATNO (MELEM,MLAYR),POSGP (5),DICOS (3,M
3POI),
* PROPS (MMATS,NPROP),SHAPE (3,9),STREN (5)
,
* THICK(MPOIN),WEIGP(5)
* GMATX (2,45)
INTEGER MSG(3)
DATA MSG/'LOAD','S ','ANFG'/
CALL ANZEIGE '(MSG, 3,0)
REWIND 8
C*** LOOP OVER EACH ELEMENT
C
DO 150 IELEM = 1,NELEM
c
C*** READ THE CHARACTERISTICS OF THE APPLIED LOADS
C
C
READ (5,900) NPRES,NUCLO,NBODY
WRITE (6,901) NPRES,NUCLO,NBODY
IF (NPRES .EQ. 0) GOTO 3
READ (5,902) KPRES,CFACE,PREVA,SURFA
WRITE (6,902) KPRES,CFACE,PREVA,SURFA
C*** CFACE IS +1.0 OR -1.0 ACCORDING AS PRESSURE IS ON TOP OR BOTTOM SUR
C
3 CONTINUE
C
C*** INITIALIZE THE LOAD MATRIX ELOAD ONE COLUMN AT EACH TIME
C
DO 4 IEVAB = 1, NEVAB
4 ELOAD (IELEM,IEVAB) = 0.0
C
C*** ENTER LOOPS OVER GAUSS POINTS FOR NUMERICAL INTEGRATION
C
C
DO 145 IGAUS = 1, NGAUS
DO 145 JGAUS = 1, NGAUS
EXISP = POSGP (IGAUS)
ETASP = POSGP (JGAUS)
CALL SFR1 (SHAPE ,EXISP, ETASP)
IF (NBODY .EQ. 0 ) GOTO 141
ZETSP = -1.0

DO 140 lLAYR = 1,NLAYR


LPROP = MATNO (IELEM,ILAYR)
DZETA = PROPS (LPROP,3)
ZETSP = ZETSP+DZETA/2.0
READ(S) BMATX,GMATX,DVOLU
C*** CALCULATE THE CENTRlFUGAL,GRAVITATIONAL PRESSURE AND POINT LOADS
C
C
C***
C
C CENTRIFUGAL FORCE
IF (ANVEL .EQ. 0.0) GOTO 70
NBORP = 2
C
CALL FUNC (BMATX,SHAPE,THICK,NBORP,
NNODE,ZETSP,MELEM,
* COORD,DICOS,LNODS,IELEM,MPOIN,M3POI,GM
ATX)
GASH = PROPS(LPROP,4)*ANVEL*ANVEL*DVOL
U
DO 45 I = 1, 2
45 STREN (I) = GASH*WORMX(I,l)
STREN (3) = 0.0
DO 65 INODE = 1, NNODE
C*** FIND THE POSITION OF THE V-1 AND V-2 VECTORS
C
C
IPOIN=IABS (LNODS(IELEM,INODE))
JPOSI=(IPOIN-1)*3
DO 65 ISTRE = 1, NSTRE
IEVAB = (INODE-1)*5+ISTRE
IF (ISTRE .GT. 3) GOTO 50
ELOAD(IELEM,IEVAB) ELOAD(IELEM, IEVAB)
+STREN (ISTRE) *
SHAPE (l,INODE)
GOTO 65
50 JPOSI = JPOSI + 1
GASH = SHAPE (1,INODE)*(THICK(IPOIN)/
2.0)*ZETSP
IF(ISTRE .NE. 5) GOTO 55
GASH = - GASH
55 DO 60 I = 1, 2
60 ELOAD (IELEM,IEVAB)= ELOAD(IELEM,IEVA
B)+STREN(I) *
DICOS(I,JPOSI)*GASH
65 CONTINUE
70 CONTINUE
C*** GRAVITY
C
GASH = PROPS (LPROP, 4) * DVOLU
DO 75 I = 1, 3
75 STREN (I) = GRAVI (I)*GASH
DO 95 INODE = 1, KNODE
IPOIN = lABS (LNODS(IELEM,INODE
JPOSI = (IPOIN-1)*3
DO 95 ISTRE = 1, NSTRE
IEVAB = (INODE-1)*5+ISTRE
IF (ISTRE .GT. 3) GOTO 80
ELOAD(IELEM,IEVAB) ELOAD(IELEM,IEVAB)
+STREN(ISTRE)

* SHAPE (l,INODE)
GOTO 95
80 JPOSI = JPOSI+1
GASH = SHAPE (1,INODE)*(THICK(IPOIN)/
2.0)*ZETSP
IF (ISTRE .NE. 5) GOTO 85
GASH = - GASH
85 DO 90 I = 1, 3
90 ELOAD (IELEM,IEVAB)= ELOAD(IELEM,IEVA
B)+STREN(I)*
DICOS(I,JPOSI)*GASH
95 CONTINUE
ZETSP = ZETSP + DZETA/2.0
140 CONTINUE
C*** CALCULATE THE NODAL LOADS DUE TO PRESSURE
C
141 IF (NPRES .EQ. 0) GOTO 142
CALL PRES (BMATX,COORD,ELOAD,LNODS,P
OSGP,SHAPE,THICK,
*
WEIGP,IELEM,IGAUS,JGAUS,MELEM,MPOIN
,NNODE,
*
NEVAB,KPRES,CFACE,PREVA,SURFA,DICO
S,M3POI)
142 CONTINUE
145 CONTINUE
C
c*** POINT LOADS
C
IF (NUCLO .EQ. 0) GOTO 150
C
C*** IS THE PRESENT ELEMENT A LOADED ELEMENT, IF IT IS
C READ AND ACCUMULATE THE LOADS IN ELOAD
C
DO 120 IGASP = 1,NUCLO
READ (5,950) LPOIN,LDOFN,CARGA
WRITE(6,960) LPOIN,LDOFN,CARGA
IEVAB = (LPOIN-1)*5+LDOFN
120 ELOAD (IELEM,IEVAB)=ELOAD(IELEM,IEV
AB)+CARGA
150 CONTINUE
900 FORMAT (SIS)
901 FORMAT (' NPRES =',I5,5X,' NUCLO ='
,I5,5X,' NBODY =',15)
902 FORMAT (I5,F5.1,2F15.5)
950 FORMAT (215,F10.5)
960 FORMAT (//' LPOIN =',15,' LDOFN =',
15,' LOAD =',F16.8/)
RETURN
END
C*******************************************************************************
************
C*******************************************************************************
************
SUBROUTINE MATM(Nl,N2,NJ,NOPN)
c******MATRIX MANIPULATIONS
C NOPN = 1,
C NOPN = 2,
C TRANSPOSE-INVERT N1 INTO N2, DJACB = l/QVALU
C TRANSPOSE-MULT., A(K,I)*B(K,J) = C(I,J)
C NOPN = 3, TRUE MULTIPLY, A(K,I)*B(K,J) = C(I,J)

C
C
C
C
C
C
C

NOPN = 4, MATRIX (TRANSPOSED)*VECTOR


NOPN = 5, TRANSPOSE MATRIX N1 INTO N2
NOPN = 6, NORMALISE N1 INTO N2, IN COLUMNS
NOPN = 7, Nl AND N2 OPEN SCISSORS-FASHION TO BE ORTHONONAL
NOPN =
8, TRANSFER MATRIX N1 INTO N2
NOPN = 9, MATRIX N1*VECTOR N2 = VECTOR N3
(I.E. A IS TRANSPOSED)

C******
C
COMMON WORMX (3,24),QVALU,DJACB
c
GOTO (1,2,3,4,5,6,7 ,8,9)',NOPN
C
1 K = 2
DO 10 I = 1, 3
`J = 4 - I - K
Ml= Nl + J
M2 = Nl + K
M3 =N2 + I - 1
M4 = Nl + I - 1
CALL VECT (Ml,M2,M3,4)
CALL VECT (M4,M3,0,l)
IF (QVALU .NE. 0.0) GOTO 22
WRITE (6,21)
21 FORMAT ('***** MELDUNG AUS ROUTI
NE MATH NULLDETERMINANTE')
STOP
C** EXECUTATION IS TERMINATED WHEN THE DETERMINANT IS ZERO
C
C
C
C
C
C
C
22 QVALU=1.0/QVALU
CALL VECT(M3,M3,0,3)
10 K = I - 1
RETURN
2 CONTINUE
DO 11 I = 1, 3
Ml = Nl + I - 1
DO 11 K = 1, 3
M2 = N2 + K - 1
M3 = N3 + K - 1
GASH= 0.0
DO 111 L = 1, 3
111 GASH = GASH + WORMX(L,M1) * WO
RMX(L,M2)
11 WORMX(I,M3) = GASH
RETURN
3 DO 13 I = 1, 3

DO 13 K =1, 3
M2 = N2 + K - 1
M3 = N3 + K - 1
GASH=0.0
DO 12 L = 1, 3
Ml = N1 + L - 1
12 GASH = GASH +WORMX(I,M1)*WORMX(
L,M2)
13 WORMX(I,M3) = GASH
RETURN
4 DO 14 I = 1, 3
M1 = N1 + I - 1
CALL VECT (Ml,N2,0,l)
14 WORMX(I,N3) .. QVALU
RETURN
5 DO 15 I = 1, 3
NlI = N1 + I - 1
N2I = N2 + I - 1
DO 15 J = I, 3
N1J = Nl + J - 1
N2J =N2 + J - 1
GASH = WORMX (J ,NlI)
WORMX(J,N2I)= WORMX(I,N1J)
15 WORMX(I,N2J) = GASH
RETURN
6 DO 16 I = 1, 3
Il = N1 + I - 1
I2 = N2 + I - 1
16 CALL VECT (Il,I2,0,2)
RETURN
7 CALL VECT (Nl,N1,0,2)
CALL VECT (N2,N2,0,2)
CALL VECT (N1,N2,0,l)
GASH = -QVALU/(l.q + SQRT(1.0-QV
ALU*QVALU))
DO 17 I=1, 3
c*******************************************************************************
************
c*******************************************************************************
***************
SUBROUTINE MODAN (AMATX, DMATT,
NMATS, NPROP, PROPS,MMATS,
* MATNO,MELEM,MLAYR,NELEM,NLAYR)
c******
C
c*** CALCULATES THE MATRIX OF ELASTICITY -D- AND THE MATRIX OF THE
C ANISOTOPIC PARAMETERS -AMATX- FOR EACH MATERIAL
C
c******
C
C
DIMENSION AMATX(9,MMATS),DMATT(
5,5,MMATS),PROPS(MMATS,NPROP),
* APARA(5,5),TRANS(5,5),GASHM(5,
5),MATNO(MELEM,MLAYR) ,
* COEFE(2)
INTEGER MSG (3)
DATA MSG/'MODA','N ','ANFG'/
CALL ANZEIGE (MSG,3,0)
DO 15 IMATS = 1, NMATS

C*** SET UP THE MATRIX OF THE ANISOTOPIC PARAMETERS


C
C
UNIAX = PROPS(IMATS,6)
DO 5 I = 1, 9
5 AMATX(I,IMATS) = 0.0
AMATX(l,IMATS) = 1.0
AMATX( 4, lMATS) = (UNIAX/PROPS
(IMATS, 12) ) **2.0
A3Z = (UNIAX/PROPS(IMATS,13**2.0
AMATX(6,IMATS)=(UNIAX/PROPS(IMA
TS,14))**2.0
AMATX(2,IMATS) 2.0*A3Z-0.5*(1.0
+AMATX(4,IMATS)+fu~TX(6,IMATS
AMATX(7,IMATS) = (UNIAX/PROPS(I
MATS,15))**2.0
AMATX(9,IMATS) = (UNIAX/PROPS(I
MATS,16))**2.0
C*** SET UP THE ELASTIC MATRIX -DC
GASH = 1.0-PROPS (IMATS, 2) **2
.0*PROPS (IMATS, 8)/PROPS(IMATS, 1)
DO 10 I = 1, 5
DO 10 J = 1, 5
10 DMATT(I,J,IMATS)=0.0
DMATT(1, 1, IMATS)=PROPS(IMATS,
l)/GASH
DMATT(2,2,IMATS)=PROPS (IMATS,
8)/GASH
DMATT(1,2,IMATS)=PROPS (IMATS,2
) *DMATT(2, 2,IMATS)
DMATT(2,1,IMATS)=DMATT(1,2,IMAT
S)
DMATT(3,3,IMATS) = PROPS(IMATS,
9)
DMATT(4,4,IMATS) = PROPS(IMATS,
10)
DMATT(5,5,IMATS) = PROPS(IMATS,
ll)
15 CONTINUE
C*** CALCULATE THE SHEAR CORRECTION FACTOR
C
C
C
IF(NMATS .NE. 1) GOTO 25
19 DO 20 I = 1, 2
20 COEFE (I) = 5./6.
GOTO 27
25 DO 26 IELEM = 1, .NELEM
KOUNT = 0
DO 26 lLAYR = 2, NLAYR
IF (MATNO(IELEM,ILAYR) .EQ.
MATNO(IELEM,ILAYR-1)) GOTO 26
KOUNT = KOUNT + 1
26 CONTINUE
IF (KOUNT .EQ. 0) GOTO 19
CALL SHEARC (MATNO,MELEM,MLAYR,PRO
PS,MMATS,NPROP,
* COEFE,NLAYR,DMATT)
27 DO 28 lMATS = 1, NMATS
DMATT(4,4,IMATS) = DMATT(4,4,IMA

TS)*COEFE(1)
28 DMATT(5,5,IMATS) = DMATT(5,5,IMA
TS)*COEFE(2)
WRITE (6,900) (COEFE(I),I=1,2)
900 FORMAT (/'COEFE (1) =',E15.8,5X
,'COEFE (2) =',E15.8/)
DO 80 lMATS = 1, NMATS
C*** IF THE REFERENTIAL SYSTEM OF AXES COINCIDES WITH THE
C PRINCIPAL AXES OF MATERIAL -GOTO 80C
THETA = PROPS (IMATS,17)
IF (ABS(THETA) .LT. 0.001) GOTO
80
C
C*** SETS UP THE TRANSFORMATION MATRIX -TRANSC
C
DO 30 I = 1, 5
DO 30 J = 1, 5
30 TRANS(I,J) = 0.0
C = COS (THETA)
S = SIN (THETA)
TRANS(l,l) = C*C
TRANS(1,2) = s*s
TRANS (2, 1) = TRANS(1,2)
TRANS(2,2) = TRANS(l,l)
TRANS(1,3) = C*S
TRANS(3,1) = -2.0*TRANS(1,3)
TRANS (2, 3) = -TRANS(1,3)
TRANS (3, 2) = -TRANS(3,1)
TRANS(3,3) = TRANS(1,1)-TRANS(1,2)
TRANS(4,4) = C
TRANS(4,5) = S
TRANS(5,4) = -S
TRANS (5, 5) = C
C*** CALCULATE THE PRODUCT OF D MATRIX BY T MATRIX
C
C
DO 35 I = 1, 5
DO 35 J = 1, 5
GASHM (I,J) = 0.0
DO 35 K = 1, 5
35 GASHM (I,J) - GASHM (I,J)+DMATT (I,
K,IMATS)*TRANS (K,J)
C*** CALCULATE THE TRANSFORMED D MATRIX
C
DO 40 I = 1, 5
DO 40 J = 1, 5
DMATT(I,J,IMATS) = 0.0
DO 40 K = 1, 5
40 DMATT(I,J,IMATS) = DMATT(I,J,IMATS)
+TRANS (K,I)*GASHM (K,J)
DO 45 I = 1, 5
DO 45 J = 1, 5
45 DMATT(J,I,IMATS) = DMATT(I,J,IMATS)
c*** SET UP THE MATRIX OF THE ANISOTROPIC PARAMETERS FOR THIS MATERIAL
C
C
DO 50 I = 1, 5
DO 50 J = 1, 5

50 APARA
APARA
APARA
APARA
APARA
APARA
APARA
APARA

(I,J)
(1,1)
(1,2)
(2,1)
(2,2)
(3,3)
(4,4)
(5,5)

=
=
=
=
=
=
=
=

0.0
AMATX
AMATX
APARA
AMATX
AMATX
AMATX
AMATX

(1,IMATS)
(2,IMATS)
(1,2)
(4,IMATS)
(6,IMATS)
(7,IMATS)
(9,IMATS)

C*** SET UP THE NEW TRANSFORMATION MATRIX


C
C
TRANS (3, 1)=-C*S
TRANS(2,3) =2. 0*TRANS (3,1)
TRANS (3,2)= -TRANS (3,1)
TRANS (1, 3) = -TRANS(2,3)

C*** CALCULATE THE PRODUCT OF A MATRIX BY T MATRIX


C
C
DO 55 I = 1, 5
DO 55 J = 1, 5
GASHM (I,J) = 0.0
DO 55 K = 1, 5
55 GASHM (I,J) = GASHM (I,J) + APARA (
I,K) * TRANS (K,J)
C*** CALCULATE THE NEW ANISOTROPIC PARAMETERS
DO 60 I = 1, 5
C
DO 60
APARA
DO 60
60 APARA (I,J)

J = 1, 5
(I,J) = 0.0
K = 1, 5
= APARA (I,J) + TRANS (

K,I) * GASHM (K,J)


AMATX{1,IMATS)=APARA{1,1)
AMATX{2,IMATS)=APARA{1,2)
AMATX{3,IMATS)=APARA{1,3)
AMATX(4,IMATS)=APARA(2,2)
AMATX(5, IMATS) =APARA(2, 3)
AMATX(6, IMATS) =APARA(3, 3)
AMATX(7,IMATS)=APARA(4,4)
AMATX(8,IMATS)=APARA(4,5)
AMATX(9,IMATS) =APARA(5, 5)
80 CONTINUE
RETURN
END
C*******************************************************************************
***************************
C*******************************************************************************
*****************************
SUBROUTINE NODEX (COORD, LNODS,MELE
M,MPOIN, NELEM,NNODE)
c******
C
c*** THIS ROUTINE INTERPOLATES THE MIDE SIDE NODES OF STRAIGHT
C SIDES OF ELEMENTS
C
c******

C
DIMENSION COORD(MPOIN,8),LNODS(MEL
EM,9),ELCOR(8,8)
INTEGER MSG (3 )
DATA MSG/'NODE','X ','ANFG'/
CALL ANZEIGE (MSG,3,0)
C*** LOOP OVER EACH ELEMENT
C
DO 60 IELEM = 1, NELEM
C
c*** LOOP OVER EACH ELEMENT EDGE
C
NNOD1 = 7
DO 20 INODE = 1, NNOD1,2
C
C*** COMPUTE THE NODE NUMBER OF THE FIRST NODE
C
NODST = LNODS (IELEM,INODE)
IGASH = INODE + 2
IF (IGASH .GT. 8) IGASH = 1
C
C*** COMPUTE THE NODE NUMBER OF THE LAST NODE
C
NODFN = LNODS(IELEM,IGASH)
MIDPT = INODE + 1
C
C*** COMPUTE THE NODE NUMBER OF THE INTERMEDIATE NODE
C
C
NODMD=LNODS(IELEM,MIDPT)
TOTAL=ABS(COORD(NODMD,l+ABS(COOR
D(NODMD,2))+ABS(COORD(NODMD,3))
C*** IF THE TOP COORDINATES OF THE INTERMEDITE NODE ARE ZERO
C INTERPOLATE BY A STRAIGHT LINE
C
C
IF(TOTAL .GT. 0.0) GOTO 20
KOUNT = 1
10
COORD (NODMD, KOUNT) = (COORD (NO
DST, KOUNT) +COORD(NODFN,KOU NT))/2.0
KOUNT = KOUNT + 1
IF (KOUNT .LE. 8) GOTO 10
20
CONTINUE
IF (NNODE .EQ. 8) GOTO 60
C*** SET UP THE CENTRAL POINT COORDINATES
C
NODCE = LNODS (IELEM,9)
DO 30 INODE = 1,8
NODEB = LNODS (IELEM,INODE)
DO 30 IDIME = 1,8
30
ELCOR (IDIME,INODE) = COORD (NODE
B,IDIME)
DO 50 IDIME = 1,8
CENCO = 0.0
DO 35 INODE = 1,7,2
35
CENCO = CENCO + ELCOR (IDIME,INO
DE)
CENCO = CENCO* (-0.5)
DO 40 INODE = 2,8,2
40
CENCO = CENCO + ELCOR (IDIME,INO

DE)
CENCO = CENCO * 0.5
COORD (NODCE,IDIME) = CENCO
CONTINUE
RETURN
END
c*******************************************************************************
***********
c*******************************************************************************
**********
SUBROUTINE OUTPUT (IITER,MTOTG,MTOT
V,MVFIX,NCHEK,NELEM,NGAUS,
*
NOFIX, NOUTP, NPOIN, NSTRE,
*
NVFIX,STRSG,TDISP,TREAC,EPSTN,POSG
P,
*
EFFST,MATNO,MMATS,PROPS,NPROP,MELE
M,THICK,
*
MPOIN,LNODS,MLAYR,NLAYR)
50
60

C******
C
C*** THIS ROUTINE OUTPUTS DISPLACEMENTS, REACTIONS AND STRESSES
C
C******
C
DIMENSION NOFIX(MVFIX),NOUTP(2),ST
RSG(5,MTOTG),STRES(6),
*
TDISP(MTOTV),TREAC(MVFIX,5),E
PSTN(MTOTG),
*
POSGP(5),SHAPE(3,9),EFFST(MTO
TG),
*
THICK(MPOIN),LNODS(MELEM,9),
*
FORCE(8),MATNO(MELEM,MLAYR),
*
PROPS (MMATS,NPROP)
INTEGER MSG(3)
DATA MSG/'OUTP','UT ','ANFG'/
CALL ANZEIGE (MSG,3,O)
KOUTP=NOUTP(l)
IF (IITER .GT. 1) KOUTP = NOUT
P (2)
IF (IITER .EQ. 1 .AND. NCHEK .
EQ. 0) KOUTP = NOUTP(2)
C*** OUTPUT DISPLACEMENTS
C
C
IF (KOUTP .LT. 1) GOTO 10
WRITE (6,900)
WRITE (6,905)
DO 20 IPOIN = 1,NPOIN
NGASH = IPOIN * 5
NGISH = NGASH-4
20
WRITE (6,910) IPOIN,(TDISP(IGA
SH),IGASH=NGISH,NGASH)
10
CONTINUE
C*** OUTPUT REACTIONS
C
C
IF (KOUTP .LT. 2) GOTO 30
WRITE (6,920)
WRITE (6,925)

40

DO 40 IVFIX =1, NVFIX


WRITE (6,910) NOFIX(IVFIX),(TR

30

CONTINUE

EAC(IVFIX,IDOFN),IDOFN=1,5)
C*** OUTPUT STRESSES
C
C
IF (KOUTP .LT. 3) GOTO 120
WRITE (6,927)
KGAUS = 0
DO 110 IELEM = 1,NELEM
KELGS=0
WRITE (6,940) IELEM
DO 105 IGAUS=1,NGAUS
DO 105 JGAUS = 1,NGAUS
EXISP = POSGP (IGAUS)
ETASP = POSGP (JGAUS)
C*** SET TO ZERO THE STRESS RESULTANT VECTOR
C
C
70

DO 70 JFORC = 1, 8
FORCE (JFORC) = 0.0
KGASP = 0
KELGS=KELGS + 1
WRITE (6,945) KELGS
CALL SFR1(SHAPE,EXISP,ETASP)

C*** COMPUTE GAUSS POINT THICKNESS


C
THIGP = 0.0
DO 65 INODE=1,8
IPOIN = IABS(LNODS(IELEM,INODE
)
65

THIGP - THIGP + SHAPE (l,INODE

)*THICK(IPOIN)
ZETSP = -1.0
DO 100 lLAYR=1, NLAYR
LPROP = MATNO (IELEM,ILAYR)
DZETA = PROPS (LPROP,3)
ZETSP = ZETSP + DZETA*0.5
KGAUS = KGAUS + 1
KGASP = KGASP + 1
C
c*** THE FIVE LOCAL STRESSES IN THE ORDER XX,YY,XY,XZ,YZ
C
C
DO 50 ISTRE = 1, NSTRE
50
STRES(ISTRE) = STRSG(ISTRE,KGAUS
)
WRITE(6,926)
WRITE (6,950) KGASP,(STRES(ISTRE
),ISTRE=l,NSTRE),
*
EFFST(KGAUS),EPSTN(KGAUS)
C*** SET UP THE STRESS RESULTANTS IN THE ORDER NX,NY,NXY,MX,MY,MXY,QX,QY
DO 75 ISTRE = 1, 3
C
FORCE(ISTRE)=FORCE (ISTRE)+STRE
S(ISTRE)*THIGP*0.5*DZETA
75
FORCE(ISTRE+3)=FORCE (ISTRE+3)STRES(ISTRE)*THIGP*THIGP*
*
ZETSP*DZETA*0.25

80

DO 80 ISTRE = 4,5
FORCE(ISTRE+3)=FORCE (ISTRE+3)

100

ZETSP = ZETSP + DZETA*0.5


CONTINUE
WRITE (6,960) (FORCE (IFORC),I

105
110
120

CONTINUE
CONTINUE
CONTINUE

900
905

FORMAT(lHO,5X,'DISPLACEMENTS')
FORMAT(lHO,6X,'NODE',4X,'X-DIS

*
910
920
925

8X,'AF-ROT',8X,'BT-ROT')
FORMAT(I10,5E14.6)
FORMAT(lHO,5X,'REACTIONS')
FORMAT(lHO,6X,'NODE',4X,'X-REA

*
927
926

8X,'AF-MOM',8X,'BT-MOM')
FORMAT(lHO,5X,'STRESSES')
FORMAT(lHO,lX,'KLAYR',5X,'XX-S

8X,'XZ-STR',8X,'YZ-STR',6X,'EF

*
940

'EFF. PL. STRAIN' )


FORMAT(lHO,' * ELEMENT NO. =',

945
950
960

FORMAT(' G.P. NO. =',I5)


FORMAT (I5,2X,8E14.6)
FORMAT(/,5X,'SCHNITTLASTEN : '

10X,'M-XX',10X,'M-YY',10X,'M-X

+STRES(ISTRE)*THIGP*0.5*DZETA

FORC=1,8)

C FORMATANWEISUNGEN
C
P',8X,'Y-DISP',8X,'Z-DISP',

C',8X,'Y-REAC',8X,'Z-REAC',

TR',8X,'YY-STR',8X,'XY-STR',
F.STRESS',3X,
I5,/)

,' N-XX ',lOX,'N-YY' ,10X,'N-XY',


Y',10X,'Q-XZ',10X,
*

'Q-YZ',/,17X,B(2X,lPE12.4))
RETURN
END
C*******************************************************************************
*************************************
C*******************************************************************************
**********************************
SUBROUTINE PRES (BMATX, COORD, ELOAD,
LNODS, POSGP, SHAPE, THICK,
*
WEIGP,IELEM,IGAUS,JGA
US,MELEM,MPOIN,NNODE,
*
NEVAB,KPRES,CFACE,PR
EVA,SURFA,DICOS,M3POI)
c******
C
c*** THIS ROUTINE EVALUATES THE NODAL LOADS DUE TO PRESSURE
C
c******
COMMON WORMX(3,24),QV
ALU,DJACB
*
DIMENSION BMATX (5,4
5),COORD (MPOIN,B),
*
ELOAD (MELEM,NEVAB),L
NODS (MELEM,9),
*
POSGP (5),DICOS (3,M3P

OI),PREMX(2,9),
*
*

SHAPE (3, 9) ,
THICK(MPOIN),WEIGP(5

GMATX (2,45)
ZETA=CFACE
NBORP=2
CALL FUNC(BMATX,SHAP

),

E,THICK,NBORP,NNODE,ZETA,MELEM,
*

COORD, DICOS,

LNODS,IELEM, MPOIN ,M3POI ,GMATX)


c*** EVALUATE THE PRESSURE AT SAMPLING POINTS KPRES = 0,1 OR 2 ACCORDI
C AS PRESSURE IS U.D.,HYDROSTATIC,OR SPECIFIED AS NODAL COORDINATES
C
C
IF (KPRES .EQ
. 0) GOTO 20
IF (KPRES .EQ
. 2) GOTO 10
WORMX(3,1)=WO
RMX(3,1)-SURFA
PRESS=PREVA*W
ORMX(3,1)
IF (PRESS .GE
. 0.0) GOTO 25
PRESS = 0.0
GOTO 25
10
PREVA = 0.0
DO 15 INODE =
1,8
NGASH=IABS(LN
ODS(IELEM,INODE))
C*** SET UP ARRAY OF NODAL PRESSURE ROW 1 TOP ,ROW 2 BOTTOM
C
C
PREMX(1, INOD
E) =COORD (NGASH, 4)
PREMX(2,INODE
)=COORD(NGASH,8)
GISH = ((1.0+
ZETA)*PREMX(1,INODE)+(1.0-ZETA)*PREMX(2,INODE))*0.5
15
PREVA=PREVA+G
ISH*SHAPE(l,INODE)
20
PRESS=PREVA
25
GMULT = WEIGP
(IGAUS) *WEIGP(JGAUS) *CFACE*PRESS
C*** CALCULATE CONSISTENT NODAL LOADS
C
DO 45 INODE=1
,NNODE
IPOIN = IABS(
LNODS(IELEM,INODE))
QVALU=-GMULT*
SHAPE(l,INODE)*DJACB
CALL VECT(7,2
1,0,3)
DO 30 I=1,3
IPOSI = (INOD
E-l)*5+I

30

ELOAD(IELEM,I

POSI)=ELOAD(IELEM,IPOSI)+WORMX(I,21)
QVALU=ZETA*TH
ICK(IPOIN) *0.5
CALL SINGOP(2
1,1)
NPOSI = (IPOI
N-l)*3
DO 40 I=1,2
JPOSI = (INOD
E-l)*5+(I+3)
32

NPOSI=NPOSI+l
DO 32 K=1,3
WORMX(K,24)=D

ICOS(K,NPOSI)
CALL VECT(21,
24,0,1)
IF(I .EQ. 2)
GOTO 35
35

QVALU=-QVALU
ELOAD(IELEM,J

POSI)=ELOAD(IELEM,JPOSI)+QVALU
40
45

CONTINUE
CONTINUE
RETURN
END
C*******************************************************************************
*************************************
C*******************************************************************************
**********************************
SUBROUTINE RESTR(
ASDIS,EFFST,ELOAD,LNODS,
* MATNO,MELEM,MMAT
S,MPOIN,MTOTG,MTOTV,
* NDOFN,NELEM,NEV
AB,NGAUS,NNODE,
*
NPROP,NSTRE,PO
SGP,PROPS,STRSG,
*
TDISP,WEIGP,EP
STN,KUNLO,AMATX,DMATT,
*
THICK, MLAYR,
NLAYR, LARGE)
c******
C
c*** THIS ROUTINE REDUCES THE STRESSES TO THE YIELD SURFACE AND
C EVALUATES THE EQUIVALENTE NODAL FORCES
C
c******
DIMENSION ASDIS(M
TOTV),AVECT(5),BMATX(5,45),
*
DMATT(5,5,MMATS)
,DVECT(5),EFFST(MTOTG),ELDIS(45),
*
ELOAD(MELEM,NEVA
B),GVECT(5),LNODS(MELEM,9) ,
*
MATNO(MELEM,MLAY
R),POSGP(5),PROPS(MMATS,NPROP),
*
DESIG(5),SIGMA(5
),SGTOT(5),ETDIS(45),
*
STRES(5),EPSTN(M
TOTG),TDISP(MTOTV),THICK(MPOIN),

STRSG(5,MTOTG),W

AMATX(9,MMATS),G

EIGP(5),
MATX(2,45)
INTEGER MSG(3)
DATA MSG/'REST','
R ','ANFG'/
CALL ANZEIGE (MSG
,3,0)
REWIND 8
DO 5 IELEM=l,NELE
M
DO 5 IEVAB=l,NEVA
B
5

ELOAD(IELEM,IEVAB

)=O.O
KUNLO=O
KGAUS=O
C*** LOOP OVER EACH ELEMENT
C
DO 210 IELEM =l,N
ELEM
C
C*** IDENTYFY THE DISPLACEMENTS OF THE ELEMENT NODAL POINTS
C
C
JPOSI=O
DO 10 INODE=l,NNO
DE
LNODE=IABS(LNODS(
IELEM,INODE))
NPOSN=(LNODE-1)*N
DOFN
DO 10 IDOFN=l,NDO
FN
NPOSN=NPOSN+1
JPOSI=JPOSI+1
ELDIS(JPOSI) =ASD
IS (NPOSN)
ETDIS (JPOSI) =TD
ISP(NPOSN)
10 CONTINUE
KELGS=O
C*** ENTER LOOPS OVER EACH SAMPLING POINTS
C
C
DO 205 IGAUS=l,NG
AUS
DO 205 JGAUS=l,NG
AUS
DO 200 ILAYR=l,NL
AYR
LPROP=MATNO (IELE
M, ILAYR)
UNIAX=PROPS(LPROP
,6)
HARDS=PROPS(LPROP
,7)
KGAUS=KGAUS+1
KELGS=KELGS+1

EPSTN(KGAUS)=ABS(
EPSTN(KGAUS))
READ(8) BMATX,GMA
TX,DVOLU
C*** CALL SUBROUTINE WHICH SETS UP -BMATX- TAKING INTO ACCOUT
C THE GEOMETRIC NONLINEARITY
C
IF (LARGE .EQ. 1
)
.
* CALL LDISP(BMAT
X,GMATX,ETDIS,NEVAB)
C
C*** NOW PROCEED TO CALCULATE STRESSES FROM STRES=DMATX*BMATX*ELDIS
C FIRST STORE IN GASH VECTOR GVECT THE PRODUCT BMATX*ELDIS
C
C
DO 30 IDOFN=l,ND
OFN
GASH=O.O
DO 25 IEVAB=l,NE
VAB
25
GASH=GASH+BMATX(
IDOFN,IEVAB)*ELDIS(IEVAB)
30
GVECT(IDOFN)=GAS
H
C*** CALCULATE THE FIVE LOCAL STRESSES IN THE ORDER XX,YY,XY,XZ,YZ
C
C
DO 50 ISTRE=l,N
STRE
GASH=O.O
DO 45 JSTRE=l,N
STRE
45
GASH=GASH+DMATT
(ISTRE,JSTRE,LPROP)*GVECT(JSTRE)
50
STRES(ISTRE)=GA
SH
C*** REDUCE STRESSES TO THE YIELD SURFACE FOR YIELED GAUSS POINTS
C
PREYS=UNIAX+EPS
TN(KGAUS)*HARDS
DO 150 ISTR1=1,
NSTRE
DESIG (ISTR1) =
STRES (ISTR1)
150 SIGMA(ISTR1)=ST
RSG(ISTR1,KGAUS)+STRES(ISTR1)
CALL INVAR(AMAT
X, SIGMA, LPROP,MMATS, YIELD)
ESPRE=EFFST(KGA
US)-PREYS
IF(ESPRE .GE. 0
.0) GOTO 55
ESCUR=YIELD-PRE
YS
IF(ESCUR .LE.O.
O) GOTO 60
RFACT=ESCUR/(YI
ELD-EFFST(KGAUS))
GOTO 70

55

ESCUR=YIELD-EFF

ST(KGAUS)
IF(ESCUR .LE. 0
.0) GOTO 60
70

RFACT=1.0
CONTINUE
ASTEP = ESCUR*S

.O/UNIAX + 1.0
MSTEP = INT(AST
EP)
ASTEP = FLOAT(M
STEP)
REDUC=1.0-RFACT
DO SO ISTR1=1,N
STRE
SGTOT (ISTR1) =
STRSG (ISTR1,KGAUS) +REDUC*STRES (ISTR1)
80

STRES(ISTR1)

=RFACT*STRES(ISTR1)/ASTEP
DO 90 ISTEP=
l,MSTEP
CALL INVAR(A
MATX,SGTOT,LPROP,MMATS,YIELD)
CALL FLOWS(A
BETA,AVECT,DVECT,LPROP,
MMATS,NPROP,
PROPS,SGTOT,AMATX,DMATT)
AGASH=O.O
DO 100 ISTR1
=1,NSTRE
100

AGASH=AGASH+

AVECT (ISTR1) *STRES (IS'l'R1)


DLAMD=AGASH*
ABETA
IF (DLAMD .L
T. 0.0) DLAMD=0.0
BGASH=0.0
DO 110 ISTR1
=1,NSTRE
BGASH=BGASH+
AVECT(ISTR1)*SGTOT(ISTR1)
110

SGTOT(ISTR1)

=SGTOT (ISTR1) +STRES (ISTR1)-DLAMD*DVECT(ISTR1 )


EPSTN (KGAUS
) =EPSTN (KGAUS) +DLAMD*BGASH/YIELD
90

CONTINUE
CALL INVAR(A

MATX,SGTOT,LPROP,MMATS,YIELD)
CURYS=UNIAX+
EPSTN(KGAUS)*HARDS
BRING=1.0
IF(YIELD .GT
. CURYS) BRING=CURYS/YIELD
DO 130 ISTR1
=1,NSTRE
130

STRSG(ISTR1,

KGAUS)=BRING*SGTOT(ISTR1)
EFFST(KGAUS)
=BRING*YIELD
C*** ALTERNATIVE LOCATION OF STRESS REDUCTION LOOP TERMINATION CARD

C 90 CONTINUE
c***
C
c
60

GOTO 190
DO lS0 ISTR1=

180

STRSG(ISTR1,K

1,NSTRE
GAUS)=STRSG(ISTR1,KGAUS)+DESIG(ISTR1)
EFFST(KGAUS)=
YIELD
IF (EPSTN(KGA
US) .EQ. 0.0 .OR.ESCUR .EQ. 0.0) GOTO 190
EPSTN(KGAUS)=
-EPSTN(KGAUS)
190

KUNLO=KUNLO+1
CONTINUE

C*** CALCULATE THE EQUIVALENT FORCES AND ASSOCIATE WITH THE


C ELEMENT NODES
C
MGASH=O
DO 140 INODE=
l,NNODE
DO 140 IDOFN=
l,NDOFN
MGASH=MGASH+1
DO 140 ISTRE=
l,NSTRE
140

ELOAD(IELEM,M

STRSG (I,STR

GASH)= ELOAD(IELEM,MGASH)+BMATX(ISTRE,MGASH)*
E, KGAUS) *DVOLU
200
205
210

CONTINUE
CONTINUE
`
CONTINUE
RETURN
END
C*******************************************************************************
**************************************
C*******************************************************************************
*******************************************
SUBROUTINE SFR1(
W,G,H)
c*******
C
C
C
C
C
C PARABOLICSHAPE FUNCTIONS AND THEIR FIRST DERIVATIVES FOR
C a-NODE ELEMENT PLUS THE CENTRAL HIERARCHICAL FUNCTION
C G AND H DENOTE THE Xl AND ETA VALUES AT THE POINT CONSIDERED
c*******
DIMENSION W(3,9)
INTEGER MSG(3)
DATA MSG/'SFR1',
' ','ANFG'/
C CALL ANZEIGE (MSG,3,O)
C
GG=G*G

GH=G*H
HH=H*H
GGH=GG*H
GHH=G*HH
G2=G*2.
H2=H*2.
GH2=GH*2.
W(1,1)= (-1.+G
H+GG+HH-GGH-GHH)/4.
W(1,2)= ( 1.-H
-GG+GGH)/2.
W(1,3)= (-1.-G
H+GG+HH-GGH+GHH)/4.
W(1,4)= ( 1.+G
-HH-GHH)/2.
W(1,5)= (-1.+G
H+GG+HH+GGH+GHH)/4.
W(1,6)= ( 1.+H
-GG-GGH)/2.
W(1,7)= (-1.-G
H+GG+HH+GGH-GHH)/4.
W(1,8)= ( 1.-G
-HH+GHH)/2.
W(1,9)= 1.0-G
G-HH+GG*HH
W(2,1)= ( H+G2
-GH2-HH)/4.
W(2,2)= -G+GH
W(2,3)= (-H+G2
-GH2+HH)/4.
W(2,4)= ( 1.
-HH) /2.
W(2,5)= ( H+G
2+GH2+HH)/4.
W(2,6)= -G-GH
W(2,7)= (-H+G2
+GH2-HH)/4.
W(2,8)= (-1.+H
H)/2.
W(2,9)= -G2*(1
.0-HH)
W(3,1)= ( G+H2
-GG-GH2)/4.
W(3,2)= (-1.+
GG)/2.
W(3,3)= (-G+H
2-GG+GH2)/4.
W(3,4)= -H-GH
W(3,5)= ( G+H
2+GG+GH2)/4.
W(3,6)= ( 1.-G
G)/2.
W(3,7)= (-G+H2
+GG-GH2)/4.
W(3,8)= -H+GH
W(3,9)= -H2*
(1.0-GG)
RETURN
END

C*******************************************************************************
***************************
C*******************************************************************************
***************************
SUBROUTINE SIN
GOP(Nl,NOPN)
c******
C
C VECTOR OR MATRIX MANIPULATIONS INVOLVING SINGLE SPACE
C
C NOPN = 1, MULT. VECT,OR BY QVALU
C NOPN = 2, NORMALISE VECTOR
C NOPN = 3, TRANSPOSE MATRIX
C NOPN = 4, FIND VECTOR SQUARED
C NOPN = 5, FORM UNIT DIAGONAL MATRIX IN N1
C
cCO MMON WORMX(3,24),QVALU,DJACB
INTEGER MSG(3)
DATA MSG/'SING','OP ','AN
FG'/
C CALL ANZEIGE (MSG,3,0)
C
C
GOTO (1,2,3,4,5),NOPN
CALL VECT (N1,N1,0,3)
RETURN
2 CALL VECT (N1,N1,0,2)
RETURN
CALL MATM (N1,N1,0,5)
RETURN
CALL VECT(N1,N1,0,1)
RETURN
N2 = N1 + 2
II = 0
DO 12 J = N1,N2
DO 11 I = 1, 3
WORMX(I,J) = 0.0
II = II + 1
WORMX(II,J) = 1.0
RETURN
END

3
4
5

11
12

C*******************************************************************************
***************************
C*******************************************************************************
***************************
SUBROUTINE STIFF(EPSTN,ESTIF
,KITER,LNODS,MATNO,
*

MELEM,MEVAB,MMAT

NELEM,NEVAB, NGA

NSTRE,POSGP,PROP

DMATT,MLAYR,NLAY

TDISP,MTOTV,LARG

S,MPOIN,MTOTG,NDOFN,
US,NNODE, NPROP,
S,STRSG,WEIGP,AMATX,
R,THICK,

E)
C***
C
C.*. THIS ROUTINE EVALUATES THE STIFFNESS MATRIX
C FOR EACH ELEMENT IN TURN
C
c*
C
C
DIMENSION BMATX(5,45),DBMA
T(5,45),DMATX(5,5),
*

ESTIF(MEVAB,MEV

POSGP(5),PROPS(

STRES(5),THICK(

STRSG(5,MTOTG),

TDISP(MTOTV),ET

AB),LNODS(MELEM,9),MATNO(MELEM,MLAYR),
MMATS,NPROP),AMATX(9,MMATS),
MPOIN),WEIGP(5),EPSTN(MTOTG),
AVECT(5),DVECT(5),DMATT(5,5,MMATS),
DIS(45),GMATX(2,45)
INTEGER MSG(3)
DATA MSG/'STIF',
'F ','ANFG'/
CALL ANZEIGE (MS
G,3,0)
REWIND 1
REWIND 8
KGAUS = 0
C.*. LOOP OVER EACH ELEMENT
C
DO 110 IELEM=l,
NELEM
C
C**. SET UP THE ELEMENT DISPLACEMENT VECTOR -ETDIS
JPOSI = 0
DO 10 INODE = 1,
NNODE
LNODE = IABS(LNO
DS(IELEM,INODE))
NPOSN = (LNODE-1
)*NDOFN
DO 10 IDOFN = 1,
NDOFN
NPOSN = NPOSN +
1
JPOSI = JPOSI +
1
10

ETDIS (JPOSI) =

TDISP(NPOSN)
C*** INITIALIZE THE ELEMENT STIFFNESS MATRIX
C
DO 20 IEVAB 1, N
EVAB
DO 20 JEVAB = IE
VAB, NEVAB
20
B) = 0.0
C

ESTIF(IEVAB,JEVA

C*** ENTER LOOPS OVER GAUSS POINTS FOR NUMERICAL INTERGATION


C
C
C
DO 105 IGAUS = 1
, NGAUS
DO 105 JGAUS = 1
, NGAUS
DO 100 ILAYR = 1
, NLAYR
LPROP = MATNO (I
ELEM,ILAYR)
KGAUS = KGAUS +
1
READ (8) BMATX,G
MATX,DVOLU
C*** CALL SUBROUTINE WHICH SETS UP -BMATX- TAKING INTO ACCOUT
C THE LARGE DISPLACEMENT
C
C
IF (LARGE .EQ. 1
.AND. KITER .GT. 2)
CALL LDISP(BMATX
,GMATX,ETDIS,NEVAB)
IF (KITER .EQ. 2
) GOTO 80
IF (EPSTN(KGAUS)
.LE. 0.0) GOTO 80
C*** CALCULATE THE ELASTO-PLASTIC -D- MATRIX
C
C
DO 50 ISTRE = 1,
NSTRE
50

STRES(ISTRE)=STR

SG(ISTRE,KGAUS)
CALL FLOWS (ABETA,AVECT,DVECT,LPROP,
* MMATS,NPROP,PROPS,STRES,AMATX,DMATT)
DO 70 ISTRE = 1,
NSTRE
DO 70 JSTRE = 1,
NSTRE
70

DMATX(ISTRE,JSTR

DVECT(ISTRE) *

E) = DMATT(ISTRE,JSTRE,LPROP)-ABETA*
DVECT (JSTRE)
C*** CALCULATE THE PRODUCT OF D MATRIX BY B MATRIX
C
C
C
DO 35 ISTRE = 1
, NSTRE
DO 35 IEVAB = 1
, NEVAB
DBMAT(ISTRE,IEV
AB) =0. 0
DO 35 JSTRE = 1
,NSTRE
DBMAT(ISTRE,IEV
AB)=DBMAT(ISTRE,IEVAB)+DMATX(ISTRE,JSTRE)*
*

BMATX(JSTRE,IEVAB)
35
80

CONTINUE
GOTO 90
CONTINUE
DO 85 ISTRE = 1

, NSTRE
DO 85 IEVAB = 1
, NEVAB
DBMAT(ISTRE,IEV
AB) =0.0
DO 85 JSTRE = 1
, NSTRE
85

DBMAT(ISTRE,IEV

DMATT(ISTRE,JS

90

DO 40 IEVAB =

AB)=DBMAT(ISTRE,IEVAB)+
TRE,LPROP)*BMATX(JSTRE,IEVAB)
C*** CALCULATE THE ELEMENT STIFFNESS
C
C
1, NEVAB
DO 40 JEVAB =
IEVAB,NEVAB
DO 40 ISTRE =
1, NSTRE
40

ESTIF(IEVAB,JE

DBMAT(ISTRE,JE

VAB) =ESTIF(IEVAB,JEVAB) +BMATX(ISTRE, IEVAB )*


VAB) * DVOLU
IF (LARGE .EQ.
0 .OR. KITER .EQ. 2) GOTO 100
C*** CALL SUBROUTINE WHICH CALCULATES THE GEOMETRIC MATRIX -GEMTXC
CALL

GEOM

E (ESTIF,GMATX,STRSG,MEVAB,NEVAB,MTOTG,
*

KGA

100

CON

US,DVOLU)
C
TINUE
C
105
TINUE
C
C*** CONSTRACT THE LOWER TRIANGLE OF THE STIFFNESS MATRIX
C
C

CON

DO
60 IEVAB = 1, NEVAB
DO
60 JEVAB = IEVAB, NEVAB
EST
IF(JEVAB,IEVAB) = ESTIF(IEVAB,JEVAB)
60
TINUE
C*** STORE THE STIFFNESS MATRIX FOR EACH
C ELEMENT ON DISC FILE
C
C
C

CON

WRI
TE (1) ESTIF
110

CONT

INUE
RET
URN
END
c*******************************************************************************
**************************
c*******************************************************************************
*****************
SUBROUTINE VECT (N
1,N2,N3,NOPN)
c*******
C
C VEKTORMANIPULATIONEN
C
C NOPN 1, QVALU BECOMES SCALAR PRODUCT OF COL. N1 AND N2
C NOPN 2, NORMALISE N1 INTO N2
C NOPN 3, MULTIPLY N1 BY QVALU, PLACE IN N2
C NOPN 4, N3 BECOMES VECTOR PRODUCT OF N1 AND N2
C NOPN 5, N3 BECOMES VECTOR N1 + VECTOR N2*QVALU
C
c********
C
COMMON WORMX(3,24)
,QVALU,DJACB
C
C VERZWEIGUNG
C
C
C
C
C
I1 = N1
GOTO (1,2,3,4,5
),NOPN
1
Il = N2
2
QVALU = 0.0
DO 10 I = 1,3
10
QVALU = QVALU +
WORMX(I,Nl)*WORMX(I,I1)
GOTO(15,16),NOP
N
16
IF (QVALU .NE.
0.0) GOTO 18
WRITE (6,17)
17
FORMAT ('*****
MELDUNG AUS ROUTINE VECT NULLVEKTOR' )
STOP
18
QVALU = 1.0/SQR
T(QVALU)
3
CONTINUE
DO 12 I = 1,3
12
WORMX(I,N2) WOR
MX(I,N1) * QVALU
RETURN
C KREUZPRODUKT
C
C

ORMX(J,N1)*WORMX(K,N2) - WORMX(K,N1)*WORMX(J,N2)
13

K = 3
DO 13 I = 1, 3
J = 6 - I - K
WORMX(I,N3) = W
K = I
RETURN

C VEKTORADDITION
C
C
5
14

DO 14 I = 1, 3
WORMX(I,N3) = W

ORMX(I,N1) + QVALU*WORMX(I,N2)
15

RETURN
END
C*******************************************************************************
************************************
C*******************************************************************************
**********************************
SUBROUTINE WORKS(C
OORD,DICOS,LNODS,THICK,MELEM,MPOIN,
*
NPOIN,M3POI)
c******
C
c*** THIS ROUTINE SETS UP THE THICKNESS AND ORTHOGONAL
C SYSTEM OF AXES AT EACH NODAL POINT
C
c******
C
C
DIMENSION COORD (
MPOIN,8) ,LNODS(MELEM,9),THICK(MPOIN),
*
DICOS (3 ,M3POI)
COMMON WORMX(3,24),QVALU,DJACB
C*** TOP AND BOTTOM COORDINATES ARE SET UP AT COLUMNS -1- AND -2C
C SCHLEIFE UEBER ALLE KNOTENPUNKTE
DO 30 IPOIN=l,NPOI
N
C
C
DO 10 1=1,3
WORMX(I,l)= COORD(
IPOIN,I)
10
WORMX(I,2)= COORD(
IPOIN,I+4)
QVALU=-1.0
C*** VECTOR V-3 IN COLUMN 5
C
CALL VECT(1,2,5,5)
C
C*** SETS QVALU EQUAL TO SCALAR PRODUCT OF THE VECTOR (V-3)*(V-3)
C
CALL VECT(5,5,0
,1)
C
THICK(IPOIN) =
SQRT(QVALU)
C
C*** CREATES AND NORMALIZES AT EACH NODE THE VECTORS V-1,V-2 AND V-3

C
CALL FRAME(3,5,0,1)
C
C***SET UP THE DIRECTION COSSINE MATRIX OF THE LOCAL AXES AT EACH POINT
C IN ORDER V-1,V-2,V-3
C
NPOSI (IPOIN-1)*3
DO 20 I = 1,3
JPOSI = NPOSI + I
D020J=1,3
20
DICOS(J,JPOSI) = WO
RMX(J,I+2)
C
30

CONTINUE
RETURN
END

C*******************************************************************************
************************************
C*******************************************************************************
**********************************
SUBROUTINE RESTAR(EFFS
T,ELOAD,EPSTN,MELEM,MEVAB,MTOTG,
*
MTOTV,MVFIX,TDISP,TLO
AD,TREAC,STRSG,
*
TFACT,KINCS)
C* C
C... THIS ROUTINE RECORDS ONTO TAPE 12 THE DATA NEEDED TO
C RESTART THE PROBLEM
C
DIMENSION EFFST(MTOTG)
,ELOAD(MELEM,MEVAB),EPSTN(MTOTG),
*
TDISP(MTOTV),TLOAD(ME
LEM,MEVAB),TREAC(MVFIX,5),
*
STRSG(5,MTOTG)
INTEGER MSG (3 )
DATA MSG/'REST','AR
','ANFG'/
CALL ANZEIGE (MSG,3,
0)
REWIND 12
WRITE (12) KINCS,TFA
CT,EFFST,ELOAD,EPSTN
WRITE (12) TDISP,TLO
AD,TREAC,STRSG
RETURN
END
C*******************************************************************************
************************************
C*******************************************************************************
**********************************
SUBROUTINE ZERO (EFFS
T,ELOAD, EPSTN,MELEM,MEVAB, KINCS,
*
MTOTG,MTOTV, NOOFN,
NELEM,NEVAB,NREST,
*
NSTRE,NTOTG,NTOTV,N
VFIX,MVFIX,STRSG,
*
TDISP,TFACT,TLOAD,T

REAC)
C C
C... THIS ROUTINE INITIALISES VARIOUS ARRAYS TO ZERO
C
DIMENSION ELOAD(MEL
EM,MEVAB),STRSG(5,MTOTG),TDISP(MTOTV),
*

TLOAD(MELEM,MEVAB)

,TREAC(MVFIX,5),EPSTN(MTOTG),
EFFST(MTOTG)
INTEGER MSG (3 )
DATA MSG/'ZERO','
','ANFG'/
CALL ANZEIGE (MSG,
3,0)
IF (NREST .EQ. 1)
GOTO 70
KINCS=0
TFACT=0.0
D0 30 IELEM=1,NELE
M
DO 30 IEVAB=1,NEVA
B
ELOAD(IELEM, IEVAB
) =0. 0
30

TLOAD(IELEM,IEVAB)

=0.0
DO 40 ITOTV=1,NTOT
V
40

TDISP(ITOTV)=0.0
DO 50 IVFIX=1,N'IF

IX
DO 50 IDOFN=1,NDOF
N
50 TREAC(IVFIX,IDO
FN)=0.0
DO 60 ITOTG = 1,NT
OTG
EPSTN(ITOTG) =0. 0
EFFST(ITOTG)=0.0
DO 60 ISTR1=1,NSTR
E
60

STRSG(ISTR1,ITOTG)

70

GOTO 80
REWIND 12

=0.0

READ(12) KINCS,TFA
CT,EFFST,ELOAD,EPSTN
READ(12) TDISP,TLO
AD,TREAC,STRSG
80

CONTINUE
RETURN
END

C*******************************************************************************
*******************
C*******************************************************************************
*******************
SUBROUTINE SHEARC (MATN

O,MELEM,MLAYR,PROPS,MMATS,NPROP,
*
COEFE,NLAYR,DMATT)
c*******
C
c*** CALCULATES THE SHEAR CORRECTION FACTOR FOR THE CASE OF
C LAMINATED COMPOSITE STRUCTURES.
C
c********
C
C
DIMENSION RFACT(2),TRLO
W(2),UPTER(2),GBARF(2) ,MATNO(MELEM,MLAYR),
*
COEFE(2),ZETA1(2),ZETA
2(2),DINDX(2),PROPS(MMATS,NPROP),
GINDX(2),DIFF2(2),DIFF
3(2),SUMLA(2),DMATT(5,5,MMATS),
DIFF5(2)
INTEGER MSG(3)
DATA MSG/'SHEA','RC ',
'ANFG'/
CALL ANZEIGE (MSG,3,0)
c*** INITIALISE SOME ARRAYS
C
C
DO 10 I = 1, 2
SUMLA(I)= 0.0
RFACT(I)= 0.0
GBARF(I)= 0.0
UPTER(I)= 0.0
TRLOW(I)= 0.0
10
COEFE(I)= 0.0
c*** CALCULATE THE POSITION OF THE NEUTRAL AXIS
C
C
DSUMM = 0.0
DO 15 ILAYR = 1, NLAYR
LPROP = MATNO(1,ILAYR)
DZETA = PROPS(LPROP,3)
ZHEIG = DSUMM+DZETA*0.
5
DO 14 I = 1, 2
DINDX(I) = DMATT(I,I,L
PROP)
UPTER(I) = UPTER(I)+DI
NDX(I)*ZHEIG*DZETA
14
TRLOW(I) = TRLOW(I)+DI
NDX(I)*DZETA
15
DSUMM = DSUMM+DZETA
DO 16 I = 1, 2
16
ZETA2(I) = -UPTER(I)/T
RLOW(I)
C*** CALCULATE THE SHEAR CORRECTION FACTOR
C
C
C
C
C
DO 20 ILAYR = 1, NLAYR
LPROP = MATNO(1,ILAYR)
DIFF1 = PROPS(LPROP,3)

INDEX = 10
DO 20 1= 1, 2
ZETA1(I) = ZETA2(I)
ZETA2(I) = ZETA1(I)+DI
FF1
DIFF2(I) = ZETA2(I)**2
-ZETA1(I)**2
DIFF3(I) = ZETA2(I)**3
-ZETA1(I)**3
DIFF5(I) = ZETA2(I)**5
-ZETA1(I)**5
DINDX(I) = DMATT(I,I,L
PROP)
GINDX(I) = PROPS(LPROP
,INDEX)
RFACT(I) = RFACT(I)+DI
NDX(I)*DIFF3(I)/3.
GBARF(I) = GBARF(I)+GI
NDX(I)*DIFF1/2.
TERM1 = SUMLA(I)*SUMLA
(I)*DIFF1
TERM2 = DINDX(I)*(ZETA
1(I)**4)*DIFF1*0.25
TERMJ = DINDX(I)*DIFF5
(I)/20.
TERM4 = -DINDX(I)*ZETA
1(I)*ZETA1(I)*DIFF3(I)/6.
TERM5 = SUMLA(I)*ZETA1
(I)*ZETA1(I)*DIFF1
TERM6 =-SUMLA(I)*DIFF3
(I)/3.
COEFE(I) = COEFE(I)+(T
ERM1+DINDX(I)*(TERM2+
*

TERM3+TERM4+TERM5+TER

M6))/GINDX(I)
INDEX = INDEX+1
SUMLA(I) = SUMLA(I)-DI
NDX(I)*DIFF2(I)/2.
20
30

CONTINUE
DO 30 I = 1, 2
COEFE(I) = RFACT(I)*RF

ACT(I)/(2.*GBARF(I)*COEFE(I))
RETURN
END

You might also like