Elastoplast o 11
Elastoplast o 11
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
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)
*
*
*
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 )
*
*
)
40
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
*
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
C
C
C
C
14
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)
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/
.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
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
* 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
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
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)
J = 1, 5
(I,J) = 0.0
K = 1, 5
= APARA (I,J) + TRANS (
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
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)
)*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
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
945
950
960
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,/)
'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,
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+
SGTOT(ISTR1)
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
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
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
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