📄 input.for
字号:
C$DEBUG
C$LARGE
SUBROUTINE INPUT(COORD,IFFIX,LNODS,MATNO,MELEM,MEVAB,MFRON,MMATS,
. MPOIN,MTOTV,MVFIX,NALGO,
. NCRIT,NDFRO,NDOFN,NELEM,NEVAB,NGAUS,NGAU2,
. NINCS,NMATS,NNODE,NOFIX,NPOIN,NPROP,NSTRE,
. NSTR1,NTOTG,NTOTV,
. NTYPE,NVFIX,POSGP,PRESC,PROPS,WEIGP) !(Page 208)
C*********************************************************************
C
C**** THIS SUBROUTINE ACCEPTS MOST OF THE INPUT DATA
C
C*********************************************************************
DIMENSION COORD(MPOIN,2),IFFIX(MTOTV),LNODS(MELEM,9),
. MATNO(MELEM),NDFRO(MELEM),
. NOFIX(MVFIX),POSGP(4),PRESC(MVFIX,NDOFN),
. PROPS(MMATS,NPROP),TITLE(80),WEIGP(4),lnodg(4,3)
REWIND 1
REWIND 2
REWIND 3
REWIND 4
REWIND 8
READ(5,920) TITLE
WRITE(6,920) TITLE
920 FORMAT(80A)
C
C*** READ THE FIRST DATA CARD, AND ECHO IT IMMEDIATELY.
C
READ(5,*) NPOIN,NELEM,NVFIX,NTYPE,NNODE,NMATS,NGAUS,
. NALGO,NCRIT,NINCS,NSTRE
900 FORMAT(11I5)
NEVAB=NDOFN*NNODE
NSTR1=NSTRE+1
IF(NTYPE.EQ.3) NSTR1=NSTRE
NTOTV=NPOIN*NDOFN
NGAU2=NGAUS*NGAUS
NTOTG=NELEM*NGAU2
WRITE(6,901)NPOIN,NELEM,NVFIX,NTYPE,NNODE,NMATS,NGAUS,NEVAB,
. NALGO,NCRIT,NINCS,NSTRE
901 FORMAT(//8H NPOIN =,I4,4X,8H NELEM =,I4,4X,8H NVFIX =,I4,4X,
. 8H NTYPE =,I4,4X,8H NNODE =,I4,//
. 8H NMATS =,I4,4X,8H NGAUS =,I4,
. 4X,8H NEVAB =,I4,4X,8H NALGO =,I4//
. 8H NCRIT =,I4,4X,8H NINCS =,I4,4X,8H NSTRE =,I4)
CALL CHECK1(NDOFN,NELEM,NGAUS,NMATS,NNODE,NPOIN,
. NSTRE,NTYPE,NVFIX,NCRIT,NALGO,NINCS)
C
C*** GENERATE THE EDGE CONNECTIONS OF THE ELEMENT
C
if(nnode.eq.4)then
lnodg(1,1)=1; lnodg(1,2)=2
lnodg(2,1)=2; lnodg(2,2)=3
lnodg(3,1)=3; lnodg(3,2)=4
lnodg(4,1)=4; lnodg(4,2)=1
elseif(nnode.gt.4)then
lnodg(1,1)=1; lnodg(1,2)=2; lnodg(1,3)=3
lnodg(2,1)=3; lnodg(2,2)=4; lnodg(2,3)=5
lnodg(3,1)=5; lnodg(3,2)=6; lnodg(3,3)=7
lnodg(4,1)=7; lnodg(4,2)=8; lnodg(4,3)=1
endif
C
C*** READ THE ELEMENT NODAL CONNECTIONS, AND THE PROPERTY NUMBERS.
C
WRITE(6,902)
902 FORMAT(//8H ELEMENT,3X,8HPROPERTY,6X,12HNODE NUMBERS)
DO 2 IELEM=1,NELEM
READ(5,*)NUMEL,MATNO(NUMEL),(LNODS(NUMEL,INODE),INODE=1,NNODE)
2 WRITE(6,903)NUMEL,MATNO(NUMEL),(LNODS(NUMEL,INODE),INODE=1,NNODE)
903 FORMAT(1X,I5,I9,6X,8I5)
C
C*** ZERO ALL THE NODAL COORDINATES, PRIOR TO READING SOME OF THEM.
C
DO 4 IPOIN=1,NPOIN
DO 4 IDIME=1,2
4 COORD(IPOIN,IDIME)=0.0
C
C*** READ SOME NODAL COORDINATES, FINISHING WITH THE NODE OF ALL.
C
WRITE(6,904)
904 FORMAT(//5H NODE,10X,1HX,10X,1HY)
6 READ(5,*) IPOIN,(COORD(IPOIN,IDIME),IDIME=1,2)
905 FORMAT(I5,6F10.5)
IF(IPOIN.NE.NPOIN) GO TO 6
C
C*** INTERPOLATE COORDINATES OF MID-SIDE NODES
C
CALL NODEXY(COORD,LNODS,MELEM,MPOIN,NELEM,NNODE)
DO 10 IPOIN=1,NPOIN
10 WRITE(6,906) IPOIN,(COORD(IPOIN,IDIME),IDIME=1,2)
906 FORMAT(1X,I5,3F10.3)
C
C*** READ THE FIXED VALUES
C
WRITE(6,907)
907 FORMAT(//5H NODE,6X,4HCODE,6X,12HFIXED VALUES)
DO 8 IVFIX=1,NVFIX
READ(5,*)NOFIX(IVFIX),IFPRE,(PRESC(IVFIX,IDOFN),IDOFN=1,NDOFN)
WRITE(6,908)NOFIX(IVFIX),IFPRE,(PRESC(IVFIX,IDOFN),IDOFN=1,NDOFN)
NLOCA=(NOFIX(IVFIX)-1)*NDOFN
IFDOF=10**(NDOFN-1)
DO 8 IDOFN=1,NDOFN
NGASH=NLOCA+IDOFN
IF(IFPRE.LT.IFDOF) GO TO 8
IFFIX(NGASH)=1
IFPRE=IFPRE-IFDOF
8 IFDOF=IFDOF/10
908 FORMAT(1X,I4,5X,I5,5X,5F10.6)
C
C*** READ THE AVAILABLE SELECTION OF ELEMENT PROPERTIES.
C
16 WRITE(6,910)
910 FORMAT(//7H NUMBER,6X,18HELEMENT PROPERTIES)
DO 18 IMATS=1,NMATS
READ(5,*) NUMAT
READ(5,*)(PROPS(NUMAT,IPROP),IPROP=1,NPROP)
930 FORMAT(10F10.5)
18 WRITE(6,911) NUMAT,(PROPS(NUMAT,IPROP),IPROP=1,NPROP)
911 FORMAT(1X,I4,3X,10E14.6)
C
C*** SET UP GAUSSIAN INTEGRATION CONSTANTS
C
CALL GAUSSQ(NGAUS,POSGP,WEIGP)
CALL CHECK2(COORD,IFFIX,LNODS,MATNO,MELEM,MFRON,MPOIN,MTOTV,
. MVFIX,NDFRO,NDOFN,NELEM,NMATS,NNODE,NOFIX,NPOIN,
. NVFIX)
RETURN
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -