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

📄 a37.for

📁 ADINA84有限元编程学习的好例子
💻 FOR
📖 第 1 页 / 共 5 页
字号:
      write(66,2710) ISTOP,ISURF,IPLOT
C
   60 IF (ISTOP.GT.0) GO TO 65
      IF (IDATWR.GT.1) GO TO 65
      write(66,2100) ISURF,NSEG,NNODE,IPRINT,IPLOT
C
C
C
   65 JFS = IFSE(I)
      JLS = JFS + NSEG - 1
      READ (IIN,1100) MJS,MA,MB,MC,MD,MKN
C
      IF (MJS.EQ.1) GO TO 175
      JLOCAL=1
      ISTOP = ISTOP + 1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2715) ISTOP,ISURF,MJS,JLOCAL
C
  175 JS = MJS
      NA = MA
      NB = MB
      NC = MC
      ND = MD
      KN = MKN
      NGEN = NSEG
      IF (KN.EQ.0) KN = 1
C
      IF (JS.EQ.NSEG) GO TO 180
      READ (IIN,1100) MJS,MA,MB,MC,MD,MKN
C
      NGEN = MJS - 1
      IF (NGEN.GE.JS) GO TO 185
      ISTOP = ISTOP + 1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2720) ISTOP,ISURF,JS,NGEN
      STOP
C
  185 IF (MJS.LE.NSEG) GO TO 180
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2730) ISTOP,ISURF,NSEG,MJS
      STOP
C
  180 DO 190 JL=JS,NGEN
      NUMJ = JL
      JEL  = JL+JFS-1
      LOOP = (NUMJ-JS)*KN
      NCA(1,JEL) = NA + LOOP
      NCA(2,JEL) = NB + LOOP
      NCA(3,JEL) = NC + LOOP
      NCA(4,JEL) = ND + LOOP
  190 CONTINUE
      IF (NUMJ.LT.NSEG) GO TO 175
C
      DO 70 J=JFS,JLS
      DO 80 L=1,4
      NODE=NCA(L,J)
      IF (NODE.GT.0 .AND. NODE.LE.NUMNP) GO TO 80
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2750) ISTOP,ISURF,JS,NODE
   80 CONTINUE
C
      IF (NCA(1,J).EQ.NCA(3,J)) GO TO 90
      IF (NCA(2,J).EQ.NCA(4,J)) GO TO 90
C
      IF (NCA(1,J).NE.NCA(2,J)) GO TO 92
      IF (NCA(3,J).NE.NCA(4,J)) GO TO 92
      GO TO 90
C
   92 IF (NCA(1,J).NE.NCA(4,J)) GO TO 94
      IF (NCA(2,J).NE.NCA(3,J)) GO TO 94
C
   90 ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2800) ISTOP,ISURF,JS
C
   94 CONTINUE
   70 CONTINUE
C
C
      IF (ISTOP.GT.0) GO TO 20
      IF (IDATWR.GT.1) GO TO 76
      DO 75 J=JFS,JLS
      JLOCAL=J-JFS+1
   75 write(66,2200) JLOCAL,(NCA(L,J),L=1,4)
C
C
C
   76 IF (JNPORT.EQ.0 .OR. NPUTSV.EQ.0) GO TO 20
      IF (JNPORT.EQ.1)
     1   WRITE (IBPORT     ) '3D-CONTC',ISURF,NSEG,IPRINT,IPLOT,NNODE,
     2                       JFS,JLS,((NCA(L,J),L=1,4),J=JFS,JLS)
      IF (JNPORT.EQ.2)
     1   WRITE (IFPORT,9000) '3D-CONTC',ISURF,NSEG,IPRINT,IPLOT,NNODE,
     2                       JFS,JLS,((NCA(L,J),L=1,4),J=JFS,JLS)
C
 9000 FORMAT ( A,/,7I10,/,(8I10) )
C
C
   20 CONTINUE
C
      IF (NJSUM.EQ.NEALL) GO TO 110
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2850) ISTOP,NEALL,NJSUM
C
  110 IF (NKSUM.EQ.NSNOD) GO TO 120
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2900) ISTOP,NSNOD,NKSUM
C
C
C
  120 IF (IDATWR.LE.1) write(66,2300)
C
      DO 130 L=1,NSURFP
      READ (IIN,1200) ISPAIR,IT,IC,SCF,DCF
C
C
      IF (ISPAIR.EQ.L) GO TO 140
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2950) ISTOP,L,ISPAIR
C
  140 IF (IT.NE.IC .AND. IT.LE.NSURF .AND. IC.LE.NSURF) GO TO 145
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3000) ISTOP,NSURF,IT,IC
C
  145 IF (MODEL.GT.1) GO TO 150
      PCF=0.0D0
      GO TO 160
C
  150 PCF = 1.0D+08
C
C
  160 IF (ISTOP.GT.0) GO TO 130
      IF (IDATWR.LE.1) write(66,2350) L,IT,IC
      ISURFP(1,L)=IT
      ISURFP(2,L)=IC
      FCOFF(1,L)=PCF
C
C
      IF (JNPORT.EQ.0 .OR. NPUTSV.EQ.0) GO TO 130
      IF (JNPORT.EQ.1)
     1   WRITE (IBPORT     ) '3D-SURFP',ISPAIR,IT,IC,SCF,DCF
      IF (JNPORT.EQ.2)
     1   WRITE (IFPORT,9010) '3D-SURFP',ISPAIR,IT,IC,SCF,DCF
C
 9010 FORMAT ( A,/,3I10,/,2E20.13 )
C
C
  130 CONTINUE
C
C
      ITRGET=0
      DO 132 I=1,NSURF
      IS=I
      CALL TRGET3 (ISURFP,IFSN,IFSE,NSURF,NSURFP,1)
      IF (ISR.EQ.0) GO TO 134
      IF (ITRGET.EQ.0) GO TO 132
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3100) ISTOP,ITRGET,IS
      GO TO 132
  134 ITRGET=IS
  132 CONTINUE
C
      IF (ISTOP.GT.0) GO TO 445
C
C
  200 IF (IDBPR.EQ.-1) READ (IIN,1300) (IDBUG(L),L=1,16)
      IDBA=IDBUG(3)
      IDBB=IDBUG(4)
C
      IF (IDBA.EQ.0) GO TO 205
      CALL LIGHT (RMDUMY,1,1,ISURFP,2,NSURFP,2,-1)
      CALL LIGHT (RMDUMY,1,1,IFSN,1,NSURF,2,-2)
      CALL LIGHT (RMDUMY,1,1,IFSE,1,NSURF,2,-3)
      CALL LIGHT (RMDUMY,1,1,NCA,4,NEALL,2,-10)
  205 CONTINUE
C
C
C
C
C
      DO 220 I=1,NSURF
      IS = I
      CALL TRGET3 (ISURFP,IFSN,IFSE,NSURF,NSURFP,1)
      KEND = KFS
      NODSF(KEND) = NCA(1,JFS)
C
      DO 230 J=JFS,JLS
      DO 240 L=1,4
      NODE = NCA(L,J)
C
      DO 250 K=KFS,KEND
      IF (NODSF(K).NE.NODE) GO TO 250
      NCA(L,J)=K
      GO TO 240
  250 CONTINUE
C
      KEND = KEND + 1
      NCA(L,J) = KEND
      NODSF(KEND) = NODE
  240 CONTINUE
  230 CONTINUE
C
      IF (KEND.EQ.KLS) GO TO 220
      ISTOP=ISTOP+1
      NNODE=KLS-KFS+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3150) ISTOP,I,NNODE
  220 CONTINUE
C
C
      DO 280 K=1,NSNOD
      IJ=0
C
      DO 270 J=1,NEALL
      DO 300 L=1,4
      IF (NCA(L,J).NE.K) GO TO 300
      IJ=IJ+1
      IF (IJ.LE.NJOIN) JOIN(IJ,K)=J
      GO TO 270
  300 CONTINUE
  270 CONTINUE
C
      IF (IJ.GT.0 .AND. IJ.LE.NJOIN) GO TO 280
      ISTOP=ISTOP+1
      NODE = NODSF(K)
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3225) ISTOP,NJOIN,NODE
  280 CONTINUE
C
      IF (IDBA.EQ.0) GO TO 285
      CALL LIGHT (RMDUMY,1,1,NODSF,1,NSNOD,2,-6)
      CALL LIGHT (RMDUMY,1,1,NCA,4,NEALL,2,-11)
      CALL LIGHT (RMDUMY,1,1,JOIN,NJOIN,NSNOD,2,-20)
  285 IF (ISTOP.GT.0) GO TO 445
C
C
C
      LOOP = NEQI + NDISCE
      DO 275 K=1,NSNOD
      NODE=NODSF(K)
      XYZ(1,K)=X(NODE)
      XYZ(2,K)=Y(NODE)
      XYZ(3,K)=Z(NODE)
      ISKEW(K)=0
      IF (NSKEWS.GT.0) ISKEW(K) = NODSYS(NODE)
      LL=0
      DO 290 L=1,3
      IF (IDOF(L).EQ.0) GO TO 305
      LMS(L,K)=0
      GO TO 290
  305 LL=LL+1
      IDEQN=ID(LL,NODE)
      IF (IDEQN.GT.LOOP) IDEQN=0
      LMS(L,K)=IDEQN
  290 CONTINUE
  275 CONTINUE
C
      IF (NEGSKS.GT.0) GO TO 335
      DO 345 K=1,NSNOD
      IF (ISKEW(K).EQ.0) GO TO 345
      write(66,3600) NSKEWS,NEGSKS
      STOP
  345 CONTINUE
  335 CONTINUE
C
      IF (IDBA.EQ.0) GO TO 295
      CALL LIGHT (RMDUMY,1,1,LMS  ,3,NSNOD,2,-7)
      CALL LIGHT (RMDUMY,1,1,ISKEW,1,NSNOD,2,-8)
      CALL LIGHT (XYZ,3,NSNOD,IMDUMY,1,1,2,2)
  295 CONTINUE
C
C
      NKSUM=0
      NJSUM=0
      DO 315 I=1,NSURF
      IS=I
      CALL TRGET3 (ISURFP,IFSN,IFSE,NSURF,NSURFP,1)
      IF (ISR.EQ.0) GO TO 315
      KFIRST=KFS
      KLAST =KLS
      NKSUM = NKSUM  +  KLS - KFS + 1
      NJSUM = NJSUM  +  JLS - JFS + 1
C
      DO 320 K=KFIRST,KLAST
      NODE=NODSF(K)
C
      DO 325 L=1,3
      IF ( LMS(L,K).GE.0 ) GO TO 325
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3300) ISTOP,I,NODE
  325 CONTINUE
C
      IF (I.EQ.NSURF) GO TO 320
      IDO=I+1
      DO 340 II=IDO,NSURF
      IS=II
      CALL TRGET3 (ISURFP,IFSN,IFSE,NSURF,NSURFP,1)
      IF (ISR.EQ.0) GO TO 340
      DO 350 KK=KFS,KLS
      IF (NODSF(KK).NE.NODE) GO TO 350
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3350) ISTOP,NODE,I,II
  350 CONTINUE
  340 CONTINUE
C
  320 CONTINUE
  315 CONTINUE
C
      IF (NKSUM.EQ.NTOUCH) GO TO 360
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3400) ISTOP,NTOUCH,NKSUM
C
  360 IF (NJSUM.EQ.NECON) GO TO 370
      ISTOP=ISTOP+1
      write(66,3425) ISTOP,NECON,NJSUM
C
  370 IF (NECON.LE.NEALL) GO TO 365
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3500) ISTOP,NECON,NEALL
C
  365 IF (NTOUCH.LE.NSNOD) GO TO 375
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3550) ISTOP,NTOUCH,NSNOD
C
  375 IF (ISTOP.GT.0) GO TO 445
      IF (IDBA.GE.1) CALL LIGHT (RMDUMY,1,1,IA(N5),1,NEQ,2,-21)
C
C
C
C
      DO 430 L=1,NSURFP
C
      IT = ISURFP(1,L)
      IS = ISURFP(2,L)
      CALL TRGET3 (ISURFP,IFSN,IFSE,NSURF,NSURFP,3)
C
      LHT = 0
      DO 440 K=KFT,KLT
      DO 450 LM=1,3
      ILM = LMS(LM,K)
      IF (ILM) 460,450,470
C
  460 NCE = -ILM
      NLM = NID(NCE)
      IF (NLM.EQ.0) GO TO 450
      DO 480 M=1,NLM
      IHT = 0
      ILMC = IDI(M,NCE)
      IF (ILMC.GT.0  ) IHT = LEADEQ - ILMC
      IF (IHT .GT.LHT) LHT = IHT
  480 CONTINUE
      GO TO 450
C
  470 IHT = LEADEQ - ILM
      IF (IHT.GT.LHT) LHT = IHT
  450 CONTINUE
  440 CONTINUE
C
      DO 490 K=KFS,KLS
      IHTX = 0
      IHTY = 0
      IHTZ = 0
      LMC  = (K-1)*NCEQN
C
      IF (LMS(1,K).GT.0) IHTX = LEADEQ - LMS(1,K)
      IF (LMS(2,K).GT.0) IHTY = LEADEQ - LMS(2,K)
      IF (LMS(3,K).GT.0) IHTZ = LEADEQ - LMS(3,K)
      IHLM = MAX0( LHT,IHTX,IHTY,IHTZ )
      KTALL = LMC + IHLM
C
      DO 485 LM=1,NCEQN
      LMNEW = LM + KTALL
      LMOLD = LMHT(LMC+LM)
  485 LMHT(LMC+LM) = MAX0( LMNEW,LMOLD )
  490 CONTINUE
  430 CONTINUE
C
      NCADD = NCEQN*NTOUCH
C
      INUMEQ(1) = LEADEQ
      LEADEQ    = LEADEQ + NCADD
      INUMEQ(2) = LEADEQ
      NCE3D = NCE3D + NCADD
      IF (IDBA.GE.1) CALL LIGHT (RMDUMY,1,1,LMHT,1,NCADD,2,-26)
      IF (IDBA.GE.1) CALL LIGHT (RMDUMY,1,1,INUMEQ,1,2,2,-9)
C
      IF (ISTOP.EQ.0) GO TO 452
  445 write(66,4000) ISTOP
      STOP
  452 CONTINUE
C
C
C
      DO 500 J=1,NECON
      LS=NTOUCH
      DO 510 L=1,4
      LI=NCA(L,J)
      IF (LI.LT.LS) LS=LI
  510 CONTINUE
C
      DO 520 L=1,4
      LI=NCA(L,J)
      ME=LI-LS
      LMTEMP=LMAXA(LI)
      LMAXA(LI)=MAX0(LMTEMP,ME)
  520 CONTINUE
  500 CONTINUE
C
      IF (IDBA.GT.0) CALL LIGHT (RMDUMY,1,1,LMAXA,1,NTOUCH,2,-13)
C
      LMAX=1
      NTOU=NTOUCH+1
      DO 530 K=1,NTOU
      LHT = LMAXA(K)
      LMAXA(K) = LMAX
      LMAX = LMAX + LHT + 1
  530 CONTINUE
C
      NXALL  = 3*NSNOD
      LENGTH = LMAXA(NTOUCH+1) - LMAXA(1)
      LNWK   = MAX0( NXALL,LENGTH )
C
      IF (IDBA.GT.0) CALL LIGHT (RMDUMY,1,1,LMAXA,1,NTOU,2,-12)
C
      DO 540 K=1,NTOUCH
  540 INODE(K)=10
      DO 550 J=1,NECON
  550 ISECT(J)=10
C
      RETURN
C
  600 IF (IND.NE.4) RETURN
      IDBA=IDBUG(3)
      IDBB=IDBUG(4)
C
C
C
      IF (KSTEP.GT.1 .OR. ITE.GT.0) GO TO 610
      IF (NEQL.GT.1) GO TO 620
C
      IF (NPDIS.EQ.0) GO TO 620
      DO 640 M=1,NPDIS
      MNPDIS=NOD(M)
      DO 640 K=1,NSNOD
      DO 640 L=1,3
      IF (MNPDIS.NE.LMS(L,K)) GO TO 640
      write(66,3650) NODSF(K)
      STOP
  640 CONTINUE
      IF (IDBA.GT.0) CALL LIGHT (RMDUMY,1,1,LMS,3,NSNOD,2,-7)
C
  620 IELCPL=-1
      NXALL=3*NSNOD
      CALL ECHECK (LMS,NXALL,ICODE,IUPDT)
      IF (ICODE.EQ.0) IELCPL=1
      IF (NEQL.EQ.1 ) IELCPL=1
      IF (IELCPL.EQ.1) GO TO 610
C
      NLOWER=INUMEQ(1)+1
      NUPPER=INUMEQ(2)

⌨️ 快捷键说明

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