⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a02a.for

📁 ADINA84有限元编程学习的好例子
💻 FOR
📖 第 1 页 / 共 5 页
字号:
  450 IF (NPB   .EQ.0) GO TO 550
      READ (IIN,1100) ((IPNODE(I,J),I=1,3),J=1,NPB)
      IF (IPNODE(1,1).EQ.0) IPNODE(1,1)=1
      IF (IPNODE(2,1).EQ.0) IPNODE(2,1)=NUMNP
      IF (IPNODE(3,1).LE.0) IPNODE(3,1)=1
      DO 500 I=1,NPB
      IF (IPNODE(1,I).LT.0) GO TO 510
      IF (IPNODE(1,I).GT.IPNODE(2,I)) GO TO 510
      IF (IPNODE(3,I).LE.0) GO TO 510
  500 CONTINUE
      GO TO 550
  510 write(66,2990)
      STOP
  550 IF (JNPORT.EQ.0 .OR. NODSVB.EQ.0) GO TO 650
      READ (IIN,1100) ((INODB(I,J),I=1,3),J=1,NODSVB)
      IF (NSTE.GT.0 .AND. INODB(1,1).EQ.0) INODB(1,1)=1
      IF ( INODB(2,1) .EQ. 0)  INODB(2,1) = NSTE
      IF ( INODB(3,1) .EQ. 0)  INODB(3,1) = 1
      INDEX=4
      IF (NODSVB.LE.1) GO TO 640
      DO 630 I=2,NODSVB
      J=I - 1
      IF (INODB(1,J).GT.INODB(2,J)) GO TO 635
      IF (INODB(1,I).GE.INODB(2,J)) GO TO 630
      write(66,3000) BLKNAM(INDEX),I,J
      STOP
  630 CONTINUE
  640 J=NODSVB
      IF (INODB(1,J).LE.INODB(2,J)) GO TO 645
  635 write(66,3004) BLKNAM(INDEX),J,J
      STOP
  645 IF (INODB(2,NODSVB).GE.NSTE) GO TO 650
      write(66,3001) BLKNAM(INDEX),INODB(2,NODSVB),NSTE
      STOP
  650 IF (JNPORT.EQ.0 .OR. LEMSVB.EQ.0) GO TO 750
      READ (IIN,1100) ((IELMB(I,J),I=1,3),J=1,LEMSVB)
      IF (NSTE.GT.0 .AND. IELMB(1,1).EQ.0) IELMB(1,1)=1
      IF ( IELMB(2,1) .EQ. 0)  IELMB(2,1) = NSTE
      IF ( IELMB(3,1) .EQ. 0)  IELMB(3,1) = 1
      INDEX=5
      IF (LEMSVB.LE.1) GO TO 740
      DO 730 I=2,LEMSVB
      J=I - 1
      IF (IELMB(1,J).GT.IELMB(2,J)) GO TO 735
      IF (IELMB(1,I).GE.IELMB(2,J)) GO TO 730
      write(66,3000) BLKNAM(INDEX),I,J
      STOP
  730 CONTINUE
  740 J=LEMSVB
      IF (IELMB(1,J).LE.IELMB(2,J)) GO TO 745
  735 write(66,3004) BLKNAM(INDEX),J,J
      STOP
  745 IF (IELMB(2,LEMSVB).GE.NSTE) GO TO 750
      write(66,3001) BLKNAM(INDEX),IELMB(2,LEMSVB),NSTE
      STOP
  750 CONTINUE
      ISPEC=1
      IF (NSUBST.GT.0 .AND. IMASS.GT.0) ISPEC=0
      IF (NTGNL.EQ.0) ISPEC=0
      IF ( NEGL.GT.0 .OR. NSUBST.GT.0) GO TO 53
      IF (NEGNL.GT.0 .OR.  NSGNL.GT.0) GO TO 53
      write(66,3090)
      STOP
   53 NUMEG = NEGL + NTGNL
      IDATWR=1
      IF (IPDATA.GT.3) IDATWR=2
      IF (IREFOR.EQ.0 .OR. IREFOR.EQ.1) GO TO 231
      write(66,3145) IREFOR
      STOP
  231 IF (IREFOR.EQ.0) GO TO 232
      IF (NSUBST.EQ.0) GO TO 234
      write(66,3146)
      STOP
  234 IF (IOPE.NE.1) GO TO 232
      write(66,3343)
      STOP
  232 CONTINUE
      IF (IMASS.GT.0 .OR. IDAMP.EQ.0) GO TO 233
      write(66,3018)
      STOP
  233 CONTINUE
      ISTAT=1
      IF (IMASS.EQ.0) ISTAT=0
      IF (ISTAT.EQ.1 .AND. IOPE.EQ.0) IOPE=2
      IF (IMODES.GT.0) IOPE=2
      IF (IOPE.NE.3 .OR. IMASS.EQ.1) GO TO 20
      write(66,3012)
      STOP
   20 DTA=DT
      KLIN=1
      IF (NTGNL.EQ.0) KLIN=0
      IF (IEIG.GT.0 .AND. NFREQ.EQ.0) NFREQ=1
      IF (IOPE.NE.3 .OR. IEIG.EQ.0) GO TO 21
      write(66,3010)
      STOP
   21 CONTINUE
      IF (IDAMP.GE.0 .AND. IDAMP.LE.2) GO TO 37
      write(66,3019)
      STOP
   37 CONTINUE
      IF (IOPE.NE.3 .OR. IDAMP.LT.2) GO TO 22
      write(66,3008)
      STOP
   22 IF (NSUBST.EQ.0) GO TO 2
      IF (IMASS.NE.2) GO TO 42
      write(66,3007)
      STOP
   42 IF (IDAMP.LT.2) GO TO 14
      write(66,3009)
      STOP
   14 IF (IMODES.EQ.0) GO TO 2
      write(66,3006)
      STOP
    2 IF (IEIG.LE.2) GO TO 19
      write(66,3003)
      STOP
   19 IF (IEIG.EQ.2) IESTYP=1
      IF (IEIG.NE.2) GO TO 3
      IF (ISTAT.EQ.0) GO TO 3
      write(66,3005)
      STOP
    3 IF (NSUBST.EQ.0 .OR. IEIG.EQ.0) GO TO 4
      write(66,3013) NSUBST,IEIG
      STOP
    4 IF (NSUBST.EQ.0 .OR. IINIMP.EQ.0) GO TO 5
      write(66,3015)
      STOP
    5 IF (ITP96.EQ.2) GO TO 24
      IF (NTEMP.EQ.0) GO TO 24
      write(66,3014) ITP96,NTEMP
      STOP
   24 IF (IOPE.NE.3 .OR. NSUBST.EQ.0) GO TO 28
      write(66,3030)
      STOP
   28 IF (IMASS.GT.0 .OR. IMODES.EQ.0) GO TO 31
      write(66,3120)
      STOP
   31 IF (METHOD.NE.4) GO TO 34
      IF (ITP96.EQ.0) GO TO 32
      write(66,3011)
      STOP
   32 IF (IUSERL.EQ.0) GO TO 34
      write(66,3140)
      STOP
   34 IF (METHOD.NE.3) GO TO 35
      IF (IOPE.NE.3) GO TO 35
      write(66,3141)
      STOP
   35 IF (NSGNL.EQ.0) GO TO 40
      IF (IOPE.NE.3) GO TO 36
      write(66,3143)
      STOP
   36 IF (IMODES.EQ.0) GO TO 161
      write(66,3144)
      STOP
  161 IF (IEIG.EQ.0) GO TO 162
      write(66,3150)
      STOP
  162 IF (IINIMP.EQ.0) GO TO 40
      write(66,3152)
      STOP
   40 IF (ISVFK.EQ.0 .OR. IOPE.NE.3) GO TO 55
      write(66,3156)
      STOP
   55 IF (IMODES.EQ.0) GO TO 58
      IF (NPDIS.EQ.0) GO TO 56
      write(66,3040)
      STOP
   56 IF (NMODES.GT.0) GO TO 57
      write(66,3041)
      STOP
   57 IF (KLIN.EQ.0) GO TO 58
      IF (METHOD.EQ.1 .AND. ILNSCH.EQ.0) GO TO 58
      write(66,3050)
      METHOD=1
      ILNSCH=0
      IMMM=METH(7)
      IVVV=METH(1)
   58 IF (KLIN.NE.0 .OR. IEIG.NE.2) GO TO 75
      write(66,3153)
      STOP
   75 IF (IDGRAV.GE.0 .AND. IDGRAV.LE.2) GO TO 76
      write(66,3026) IDGRAV
      STOP
   76 IF (IDCFGL.GE.0 .AND. IDCFGL.LE.2) GO TO 77
      write(66,3027) IDCFGL
      STOP
   77 ISMASS = MAX0( IDGRAV,IDCFGL )
      IF (ISMASS.EQ.0) GO TO 71
      IF (IMASS.GT.0)  ISMASS = IMASS
      IF (IDGRAV.EQ.0) GO TO 72
      IF (IDGRAV.EQ.ISMASS) GO TO 72
      write(66,3023) ISMASS,IDGRAV
      STOP
   72 IF (IDCFGL.EQ.0) GO TO 73
      IF (IDCFGL.EQ.ISMASS) GO TO 73
      write(66,3024) ISMASS,IDCFGL
      STOP
   73 IF (NSUBST.EQ.0) GO TO 74
      write(66,3021)
      STOP
   74 IF (ISMASS.LE.1) GO TO 71
      IF (IOPE.NE.3) GO TO 71
      write(66,3022) IDGRAV,IDCFGL
      STOP
   71 IF (NSGNL.EQ.0) GO TO 51
      IF (METHOD.EQ.3 .AND. ILNSCH.EQ.0) GO TO 51
      METHOD = 3
      ILNSCH = 0
      IMMM = METH(7)
      IVVV = METH(3)
      write(66,3060)
   51 NDTEMP = NCES + NRLINK
      IF (NDTEMP.GT.0 .AND. NIDM.LE.0) NIDM=1
      NRLID = 6 - IDOF(1)-IDOF(2)-IDOF(3)-IDOF(4)-IDOF(5)-IDOF(6)
      NRNLIN=0
      IF (NRLINK.GE.0) GO TO 78
      write(66,3148) NRLINK
      STOP
   78 IF (NRLINK.GT.0 .AND. NIDM.LT.NRLID) NIDM=NRLID
      NDISCE = NCES + NRLID*NRLINK
      NODE3=12
      NC=NFREQ + 8
      IF (NC.GT.2*NFREQ) NC=2*NFREQ
      IF (IESTYP.EQ.0 .OR. NQ.GT.0) GO TO 79
      NQ=16
      IF (IINTER.EQ.0) NQ=NC
   79 CONTINUE
      IF (IEIG.EQ.2 .AND. NMODE.GT.NFREQ) NMODE=NFREQ
      NEIGQ=NFREQ + 8
      IF (IEIG.EQ.2 .AND. NQ.LT.NEIGQ) NQ=NEIGQ
      NEWREF=0
      IF (METHOD.NE.3) GO TO 41
      NEWREF=1
      METHOD=1
   41 CONTINUE
      NLSTPD=0
      IF (ITEMAX.EQ.0) ITEMAX=15
      IF (METHOD.NE.4 .AND. ETOL.EQ.0.0D+00) ETOL=1.0D-03
      IF (METHOD.EQ.4 .AND. ETOL.EQ.0.0D+00) ETOL=1.0D-06
      IF (RCTOL .EQ. 0.D0) RCTOL=0.5D-1
      IF (RTOL .EQ. 0.D0) RTOL=0.1D-1
      DTOL=RTOL
      DNORM=RNORM
      DMNORM=RMNORM
      IF (STOL .EQ. 0.D0) STOL=0.5D0
      IF (IRINT.EQ.0) IRINT=99999
      IF(MODEX.NE.2 .AND. JNPORT.GT.0) NPUTSV=1
      IF (LUPORT.EQ.0) LUPORT=IT60
      IF (LFPORT.GT.0) IFPORT=LFPORT
      IBPORT=LUPORT
      IF (JNPORT.LE.0 .OR. JNPORT.GT.2) JNPORT=0
      CALL FILEOP (MODEX,NSUBST,ITP96,IINIMP,NTEGRA,IEIG,IMODS,
     1             JNPORT,IBPORT,IFPORT,INPORT)
      IF (ITP96.EQ.0 .OR. ITP96.EQ.2) GO TO 43
      REWIND IT56
      IF (ITP96.NE.(-1) .OR. MODEX.EQ.0) GO TO 43
      NPPTT1=N0
      NPPTT2=NPPTT1 + NUMNP*ITWO
      NPPTT3=NPPTT2 + NUMNP*ITWO
      NLAST =NPPTT3 + NUMNP*ITWO - 1
      IF (ISTPRT.GT.0) write(66,2801)
      CALL SIZE (NLAST)
      CALL PROCTT (A(NPPTT1),A(NPPTT2),A(NPPTT3),TSTART,DT,NSTE,NUMNP)
      ITP96=1
   43 CONTINUE
      IF (JNPORT.EQ.0) GO TO 790
      CALL PRINT9
  790 write(66,2000) CHEAD
      A0=0.D0
      A1=0.D0
      IF (ISTAT.EQ.0) GO TO 10
      IF (NSTE.EQ.0) GO TO 10
      CALL OPCOEF(OPVAR)
   10 IF (IDATWR.GT.1) GO TO 890
      write(66,2005)
      NCARD=1
      write(66,2010) NCARD
      write(66,2015) NUMNP,(IDOF(I),I=1,6),IDPIPE
      write(66,2020) NEGL,NEGNL,MODEX,NSTE,DT,TSTART
      write(66,2021) IPDATA
      write(66,2025) NSUBST,NSKEWS,NMIDSS,NSGNL
      NCARD=NCARD + 1
      write(66,2010) NCARD
      write(66,2027) IRINT,ITP96
      write(66,2028) INPORT,JNPORT
      write(66,2029) IINIMP,ISVFK
      write(66,2026) IADIN,MTOTK,LREC
      NCARD=NCARD + 1
      write(66,2010) NCARD
      write(66,2030) NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,IDGRAV,
     1               NPDIS,NTEMP,NCES,NIDM,NRLINK
      write(66,2031) NTEGRA,IDCFGL
      write(66,2032) IREFOR
      IF (IREFOR.EQ.0) GO TO 48
      write(66,2033)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -