SUBROUTINE CPLATE8_INPUT(ID,X,MTH,NR,
&LM,NE,XY,TK,AG,PR,IZ,NZ,NUMNP,NEQ,IN,IO,IP,IM,IX)
IMPLICIT REAL*8 (A-H,O-Z)
DIMENSION ID(6,NUMNP),X(3,NUMNP),MTH(NEQ),NR(10)
DIMENSION LM(48,NR(2)),NE(8,NR(2)),XY(24,NR(2))
DIMENSION TK(NR(3)),AG(NR(3)),PR(1),I8(8)
ND = 6 * 8
C-----------------------------------------------------------------------
C Read and generate shell element information
C-----------------------------------------------------------------------
1 READ( IN,'(8E10.4)') (PR(I),I=1,8)
WRITE(IO,2000) (NR(I),I=2,4),(PR(J),J=1,8)
2 READ( IN,'(2I5)') IZ,NZ
IF(NR(4).NE.0) THEN
WRITE(IO,2010) IZ,NZ
ENDIF
WRITE(IO,2020)
DO 100 I=1,NR(3)
3 READ( IN,'(I5,F10.4,F10.4)') MM,TK(I),AG(I)
100 WRITE(IO,'(I9,F18.4,F22.0)') MM,TK(I)*1000.,AG(I) ! m => mm
WRITE(IO,2030)
C
DO 200 INE=1,NR(2)
4 READ(IN,'(18I5)') MM,(I8(I),I=1,8),KG,(NE(I,INE),I=1,8)
IF(MM.NE.INE) THEN
WRITE(IO,'(//5X,18HERROR IN ELEMENT !,//)')
STOP
ENDIF
DO 105 I=1,8
IF(I8(I).GT.NUMNP) THEN
WRITE(*,'(//5X,18H单元结点编号出错!,2I8//)') MM,I8(I)
STOP
ENDIF
IF(NE(I,INE).GT.NUMNP) THEN
WRITE(*,'(//5X,18H单元结点编号出错!,2I8//)') MM,NE(I,INE)
STOP
ENDIF
105 CONTINUE
WRITE(IO,'(5X,I4,1X,8I7)')INE,(I8(I),I=1,8)
WRITE(IP,'(5X,I4,1X,8I7)')INE,(I8(I),I=1,8)
IF(NR(4).EQ.0.OR.NR(4).EQ.1) THEN
WRITE(IX)(I8(I),I=1,8)
ENDIF
C
C
DO 110 JJ=1,8
DO 110 II=1,3
110 XY(II+3*(JJ-1),INE) = X(II,I8(JJ))
C
DO 120 JJ=1,8
DO 120 II=1,6
120 LM(II+6*(JJ-1),INE) = ID(II,I8(JJ))
C
IF(NR(4).NE.0) THEN
DO 140 II=1,8
IF(NE(II,INE).NE.0) THEN
WRITE(IM) I8(II),NE(II,INE)
DO 130 JJ=1,6
130 LM(JJ+6*(II-1),INE) = ID(JJ,NE(II,INE))
ENDIF
140 CONTINUE
ENDIF
C
C Determine the active column heights of element with LM[48,N]
C
CALL COLHT(MTH,LM(1,INE),ND)
C
200 CONTINUE
C
C 处理分层区上下子板中和轴的法向坐标偏移
C
IF(NR(4).EQ.1) THEN
PH = 0.
DO 210 I=1,NR(3)
210 PH = PH + TK(I)
EX = 0.
DO 220 I=IZ,NZ
220 EX = EX + TK(I)
EZ = (PH-EX)/2.
DO 230 I=1,NR(2)
DO 230 J=1,8
230 XY(3*J,I) = XY(3*J,I) + EZ
ENDIF
IF(NR(4).EQ.2) THEN
PH = 0.
DO 240 I=1,NR(3)
240 PH = PH + TK(I)
EX = 0.
DO 250 I=IZ,NZ
250 EX = EX + TK(I)
EZ =-(PH-EX)/2.
DO 260 I=1,NR(2)
DO 260 J=1,8
260 XY(3*J,I) = XY(3*J,I) + EZ
ENDIF |