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

📄 a36.for

📁 ADINA84有限元编程学习的好例子
💻 FOR
📖 第 1 页 / 共 5 页
字号:
      SUBROUTINE TODCON
C
C
C
C
C
      IMPLICIT DOUBLE PRECISION ( A-H,O-Z )
C***END:DPR***
      COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
      COMMON /DIMETC/ N01,N02,N03,N04,N05,N06,N07,N08,N09
      COMMON /FREQIF/ ISTOH,N1A,N1B,N1C,N1S
      COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
     1             NPDIS,NTEMP,IDCFGL,ISMASS
      COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
      COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
     1           ,NDOF,KLIN,IEIG,IMASSN,IDAMPN
      COMMON /VAR/ NGALL,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
     1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
      COMMON /EQIT/ METHOD,ILNSCH,NLSTPD,NLSTEP,ITEDIV,IPEQIT
      COMMON /SEQNCE/ ITA(18),IT19,ITB(10)
      COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
      COMMON /DPR/ ITWO
      COMMON /ELGLTH/ NFIRST,NLAST,NBCEL
      COMMON /ELSTP/ TIME,IDTHF
      COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
      COMMON /SKEW/ NSKEWS
      COMMON /DISCON/ NDISCE,NIDM
      COMMON /PORT/ INPORT,JNPORT,NPUTSV,IBPORT,IFPORT,JDC,JVC,JAC
      COMMON /CNTACT/ NEQI,LEADEQ,NCE2D,NCE3D
      COMMON /ITRATE/ RCENRM,RCNORM,RCONSM,RCTOL
      COMMON /GROUPS/ NTGNL,NSGNL
      COMMON /ISSAC/ NEWREF
      COMMON /TAPES/ IIN,IOUT
      COMMON /ISUBST/ ISUBC,NSUBST,NSUB,NTUSE,NEGLS,NEGNLS,NUMNPS,
     1                NODCON,NODRET,IDOFS(12),NDOFS,NEQS,NWKS,MAXESC,
     2                MAS,NSTAPE,ILOA(13),KRSIZM,NEQC
      COMMON A(1)
      REAL A
      DIMENSION IA(1)
      DIMENSION RMDUMY(1,1),IMDUMY(1,1)
      EQUIVALENCE (A(1),IA(1))
C
      EQUIVALENCE (NPAR(1),NPAR1),
     1            (NPAR(2),NSURF),(NPAR(4),NSURFP),
     1            (NPAR(5),IAXIS),(NPAR(6),NEGSKS),
     1            (NPAR(9),NTOUCH),(NPAR(10),NSNOD),
     1            (NPAR(13),ICPRNT),(NPAR(15),MODEL)
C
      IF (IND.GE.1 .AND. IND.LE.3) RETURN
      IF (IND.NE.0) GO TO 700
      NG = NGALL-NEGL-NEGNL
C
C
C
      ISTOP=0
      IF (NEWREF.EQ.1) GO TO 20
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2600) ISTOP
C
   20 IF (ILNSCH.EQ.0) GO TO 50
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2650) ISTOP
C
C
   50 IF (NSURF.GE.2) GO TO 100
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2700) ISTOP,NSURF
C
  100 IF (NSURFP.GE.1) GO TO 150
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2800) ISTOP,NSURFP
C
  150 IF (NTOUCH.GE.2) GO TO 200
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2900) ISTOP,NTOUCH
C
  200 IF (NSNOD.GE.4) GO TO 240
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3000) ISTOP,NSNOD
C
  240 IF (NSNOD.GE.NTOUCH) GO TO 250
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3050) ISTOP,NSNOD,NTOUCH
C
  250 IF (IAXIS.GE.0 .AND. IAXIS.LE.2) GO TO 300
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3100) ISTOP,IAXIS
C
  300 IF (NEGSKS.EQ.0) GO TO 350
      IF (NSKEWS.GT.0) GO TO 350
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3200) ISTOP,NSKEWS,NEGSKS
C
  350 ICTEMP=ICPRNT
      IF (ICTEMP.EQ.1) ICPRNT=2
      IF (ICTEMP.EQ.2) ICPRNT=1
      IF (ICTEMP.GE.0 .AND. ICTEMP.LE.2) GO TO 400
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3300) ISTOP,ICTEMP
C
  400 MTEMP = MODEL
      MODEL = MODEL + 1
      IF (MTEMP.EQ.0 .OR. MTEMP.EQ.1) GO TO 450
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,3400) ISTOP,MTEMP
C
  450 IF (ISTOP.EQ.0) GO TO 500
      write(66,4000) ISTOP
      STOP
C
  500 IF (IDATWR.GT.1) GO TO 600
C
C
      write(66,2000) NPAR1
      write(66,2050) NSURF,NSURFP
      write(66,2100) IAXIS,NEGSKS
      write(66,2150) NTOUCH,NSNOD
      write(66,2200) ICTEMP,MTEMP
C
C
  600 IF (JNPORT.EQ.0 .OR. NPUTSV.EQ.0) GO TO 700
      IF (JNPORT.EQ.1)
     1   WRITE (IBPORT     ) 'TYPE-16 ',NSUB,NGALL,(NPAR(I),I=1,20)
      IF (JNPORT.EQ.2)
     1   WRITE (IFPORT,9000) 'TYPE-16 ',NSUB,NGALL,(NPAR(I),I=1,20)
C
 9000 FORMAT ( A,/,(8I10) )
C
C
C
C
C
  700 NFIRST=N6
      IF (IND.EQ.4) NFIRST=N10
C
      NSEG=NSNOD+NSURF
      NXALL=2*NSNOD
      NXCON=2*NTOUCH
      NCEQN = MODEL
      NCADD = NCEQN*NTOUCH
C
      N110 = NFIRST + 20
      N120 = N110 + NSURFP*2
      N130 = N120 + NSURF + 1
      N140 = N130 + NSNOD
      N150 = N140 + NXALL
      N160 = N150 + NTOUCH
      N170 = N160 + NSEG
      N180 = N170 + NTOUCH
      N190 = N180 + 20
      N200 = N190 + 2
      N210 = N200 + NSNOD
      N215 = N210 + NSURF
      N220 = N215 + NSURF
      N230 = N220 + NCADD
      N240 = N230 + NSEG
      N250 = N240 + NTOUCH
      NILAST = N250 - 1
C
      N500 = N250
      N510 = N500 + 3*NSURFP*ITWO
      N520 = N510 + NXALL*ITWO
      N530 = N520 + NXCON*ITWO
      N540 = N530 + NXALL*ITWO
      N550 = N540 + NSEG*ITWO
      N560 = N550 + 2*NSEG*ITWO
      N570 = N560 + NXCON*ITWO
      N580 = N570 + NTOUCH*ITWO
      N590 = N580 + NXALL*ITWO
      N600 = N590 + NTOUCH*ITWO
      N900 = N600
      NLAST = N900 -1
      NEND  = NLAST
      IF (IND.EQ.0) NEND = NLAST + LEADEQ+NCADD-NEQI
C
C
C
      IF (IND.NE.0) GO TO 750
C
      LONG = NILAST - NFIRST + 1
      CALL EXAMIN (RMDUMY,1,1,IA(NFIRST),1,LONG,1,-100)
      LONG = ( NLAST - N500 + 1 )/ITWO
      CALL EXAMIN (A(N500),1,LONG,IMDUMY,1,1,1,100)
C
      J=NFIRST-1
      DO 800 I=1,20
      J=J+1
  800 IA(J)=NPAR(I)
C
      MIDEST=(NLAST-NFIRST)+1
      IF (IDATWR.LE.1) write(66,2300) MIDEST
      CALL SIZE (NEND)
C
  750 IF (IND.GT.3) GO TO 850
      M2=N2
      M3=N3
      M4=N4
      M5=N5
      GO TO 900
C
  850 M2=N2
      M3=N7
      M4=N8
      M5=N3
C
      IF (IEQUIT.EQ.1) GO TO 900
      M2=N6
      M5=N5
C
  900 CALL TOUCH2(A(N01),A(N02),A(N04),
     1            A(N1),A(M2),A(M3),A(M4),A(M5),
     1            A(N06),A(N1A),
     1            A(N110),A(N120),A(N130),A(N140),
     1            A(N150),A(N160),A(N170),A(N180),
     1            A(N190),A(N200),A(N210),A(N215),A(N220),
     1            A(N230),A(N240),
     1            A(N500),A(N510),A(N520),
     1            A(N530),A(N540),A(N550),
     1            A(N560),A(N570),A(N580),A(N590),
     1            NIDM,NDOF,NSURF,NSURFP,NTOUCH,NSNOD,NSEG)
C
C
C
      IF (IND.NE.0) RETURN
      NCEQ = LEADEQ - NEQI
      NOLD = NCEQ   - NCADD
      N220A = N220  - 1
      N900A = N900  - 1
      N900B = N900A + NOLD
      DO 910 L=1,NCADD
  910 IA(N900B+L) = IA(N220A+L)
      IF (NOLD.EQ.0) GO TO 920
      REWIND IT19
      READ  (IT19) ( IA(N900A+L),L=1,NOLD )
  920 REWIND IT19
      WRITE (IT19) ( IA(N900A+L),L=1,NCEQ )
      RETURN
C
C
C
 2000 FORMAT(36H S U R F A C E   D E F I N I T I O N  ///,
     1       14H SURFACE TYPE ,13(2H .),16H( NPAR(1) ). . =,I5,/,
     2       32H     EQ.16, 2-D CONTACT SURFACES,/,
     3       32H     EQ.17, 3-D CONTACT SURFACES,/)
 2050 FORMAT(27H NUMBER OF CONTACT SURFACES,3H  .,5(2H .),11H( NPAR(2) )
     1       ,5H. . =,I5,
     1     //24H NUMBER OF SURFACE PAIRS,8(2H .),16H( NPAR(4) ). . =,I5
     1     ,/)
 2100 FORMAT(/24H CONTACT SURFACE SUBTYPE,8(2H .),16H( NPAR(5) ). . =,I5
     1       /23H     EQ.0  AXISYMMETRIC ,
     1       /23H     EQ.1  PLANE STRAIN ,
     1       /23H     EQ.2  PLANE STRESS ,
     1      //23H SKEW COORDINATE SYSTEM,
     1      /,5X,19HREFERENCE INDICATOR,8(2H .),16H( NPAR(6) ). . =,I5,
     1     /,5X,23HEQ.0  ALL SURFACE NODES ,
     1      /,11X,37HUSE THE GLOBAL COORDINATE SYSTEM ONLY,
     1     /,5X,25HEQ.1  SURFACE NODES REFER ,
     1      /,11X,25HTO SKEW COORDINATE SYSTEM ,/)
 2150 FORMAT(/26H NUMBER OF CONTACTOR NODES,7(2H .),
     1        16H( NPAR(9) ). . =,I5,
     1       //24H NUMBER OF SURFACE NODES,8(2H .),16H( NPAR(10) ) . =
     1        ,I5)
 2200 FORMAT(/39H PRINT CONTROL FOR CONTACT SURFACES. . ,
     1        17H( NPAR(13) ). . =,I5/
     1     5X,43HEQ.0  PRINT CONSISTENT CONTACT NODAL FORCES,/,
     1    5X,47HEQ.1  PRINT AVERAGE CONTACTOR SEGMENT TRACTIONS ,/,
     1    5X,43HEQ.2  PRINT CONSISTENT CONTACT NODAL FORCES,/,
     1   11X,39HAND AVERAGE CONTACTOR SEGMENT TRACTIONS,
     1     //16H FRICTION MODEL ,12(2H .),16H( NPAR(15) ) . =,I5,/,
     1    5X,26HEQ.0, FRICTIONLESS CONTACT,/,
     1    5X,22HEQ.1, COULOMB FRICTION ,/)
 2300 FORMAT(//43H LENGTH OF ARRAY NEEDED FOR STORING SURFACE/
     1         43H DATA. . . . . . . . . . . . .(MIDEST). . =,I5/)
C
C
C
C
 2500 FORMAT(1H1,38HERROR IN CONTACT SURFACE CONTROL CARDS/
     1       16H SURFACE GROUP =,I5,/)
 2600 FORMAT(I5,31H. FULL NEWTON ITERATION MUST BE  ,/,
     1       7X,34HEMPLOYED WHEN CONTACT SURFACES ARE  ,/,
     1       7X,40HPRESENT.  (SEE MASTER CONTROL CARD NO.7)  )
 2650 FORMAT(I5,35H. LINE SEARCH SOLUTION MUST NOT BE ,/,
     1       7X,34HEMPLOYED WHEN CONTACT SURFACES ARE  ,/,
     1       7X,40HPRESENT.  (SEE MASTER CONTROL CARD NO.7)  )
 2700 FORMAT(I5,41H. AT LEAST TWO SURFACES MUST BE SPECIFIED,/,
     1       7X,14HINPUT NPAR(2)=,I5)
 2800 FORMAT(I5,45H. AT LEAST ONE SURFACE PAIR MUST BE SPECIFIED,/,
     1       7X,14HINPUT NPAR(4)=,I5)
 2900 FORMAT(I5,48H. AT LEAST TWO CONTACTOR NODES MUST BE SPECIFIED,/,
     1       7X,14HINPUT NPAR(9)=,I5)
 3000 FORMAT(I5,37H. AT LEAST FOUR CONTACT SURFACE NODES,
     1          17HMUST BE SPECIFIED,/,
     1       7X,15HINPUT NPAR(10)=,I5)
 3050 FORMAT(I5,30H. NPAR(10) MUST BE GE. NPAR(9) ,/,
     1       7X,15HINPUT NPAR(15)=,I5,5X,14HINPUT NPAR(9)=,I5 )
 3100 FORMAT(I5,31H. NPAR(5) MUST BE GE.0 AND LE.2,/,
     1       7X,14HINPUT NPAR(5)=,I5)
 3200 FORMAT(I5,10H. NSKEWS =,I5,14H AND NPAR(6) =,I5,
     1       19H ARE NOT COMPATIBLE )
 3300 FORMAT(I5,32H. NPAR(13) MUST BE GE.0 AND LE.2,/,
     1       7X,15HINPUT NPAR(13)=,I5)
 3400 FORMAT(I5,31H. NPAR(15) MUST BE EQ.0 OR EQ.1 ,/,
     1       7X,15HINPUT NPAR(15)=,I5)
 4000 FORMAT(//,25H TOTAL NUMBER OF ERRORS =,I5,////,
     1          34H S T O P  (ERRORS IN SURFACE DATA)  )
      END
      SUBROUTINE TOUCH2(NID,IDI,NOD,
     1                  ID,X,Y,Z,HT,
     1                  RSDCOS,NODSYS,
     1                  ISURFP,IFSN,NODSF,LMS,
     1                  INODE,ISEG,ITS,IDBUG,
     1                  INUMEQ,ISKEW,IPS,ISV,LMHT,
     1                  JSLIDE,KSLIDE,
     1                  FCOFF,XYZ,CPROLD,
     1                  XYZS,XLN,T,
     1                  CPR,BETA,DELTA,CLOSED,
     1                  NIDM,NDOF,NSURF,NSURFP,NTOUCH,NSNOD,NSEG)
C
C
C***ADD:DPR***
      IMPLICIT DOUBLE PRECISION ( A-H,O-Z )
C***END:DPR***
      COMMON /SOL/ NUMNP,NEQ,NWK,NWM,NWC,NUMEST,MIDEST,MAXEST,NSTE,MA
      COMMON /CONST/ DT,DTA,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11
     1              ,A12,A13,A14,A15,A16,A17,A18,A19,A20,DTOD,IOPE
      COMMON /EL/ IND,ICOUNT,NPAR(20),NUMEG,NEGL,NEGNL,IMASS,IDAMP,ISTAT
     1           ,NDFD,KLIN,IEIG,IMASSN,IDAMPN
      COMMON /DIM/ N0,N1,N2,N3,N4,N5,N6,N7,N8,N9,N10,N11,N12,N13,N14,N15
      COMMON /LOA/ NLOAD,NPR2,NPR3,NPBM,NP3DB,NPPL,NPSH,NODE3,IDGRAV,
     1             NPDIS,NTEMP,IDCFGL,ISMASS
      COMMON /ELSTP/ TIME,IDTHF
      COMMON /VAR/ NGALL,MODEX,IUPDT,KSTEP,ITEMAX,IEQREF,ITE,KPRI,
     1             IREF,IEQUIT,IPRI,KPLOTN,KPLOTE
      COMMON /PRCON/ IDATWR,IPRIC,NPB,IDC,IVC,IAC,IPC,IPNODE(3,15)
      COMMON /PORT/ INPORT,JNPORT,NPUTSV,IBPORT,IFPORT,JDC,JVC,JAC
      COMMON /FREQIF/ ISTOH,N1A,N1B,N1C,N1S
      COMMON /RANDI/ N0A,N1D,IELCPL
      COMMON /ADDB/ NEQL,NEQR,MLA,NBLOCK
      COMMON /MDFRDM/ IDOF(12)
      COMMON /SKEW/ NSKEWS
      COMMON /CNTACT/ NEQI,LEADEQ,NCE2D,NCE3D
      COMMON /ITRATE/ RCENRM,RCNORM,RCONSM,RCTOL
      COMMON /GROUPS/ NTGNL,NSGNL
      COMMON /SRFACE/ IS,KFS,KLS,KES,JFS,JLS,JFSD,JLSD
      COMMON /PAIR/ IT,KFT,KLT,KET,JFT,JLT,JFTD,JLTD
      COMMON /MATCH/ ISR,IPAIR,JFSEG,JLSEG,JTSEG
      COMMON /OPRATE/ ISET
      COMMON /TAPES/ IIN,IOUT
      COMMON /DISCON/ NDISCE,MIDM
      COMMON A(1)
      REAL A
      DIMENSION IA(1)
C
      DIMENSION NID(*),IDI(NIDM,*),NOD(*),
     1          ID(NDOF,*),X(*),Y(*),Z(*),HT(*),
     1          RSDCOS(9,*),NODSYS(*)
      DIMENSION ISURFP(2,NSURFP),IFSN(*),NODSF(*),LMS(2,NSNOD),
     1          INODE(*),ISEG(*),ITS(*),IDBUG(20),
     1          INUMEQ(2),ISKEW(*),IPS(*),ISV(*),LMHT(*),
     1          JSLIDE(*),KSLIDE(*)
      DIMENSION FCOFF(3,NSURFP),XYZ(2,NSNOD),CPROLD(2,NTOUCH),
     1          XYZS(2,NSNOD),XLN(*),T(2,NSEG),
     1          CPR(2,NTOUCH),BETA(*),DELTA(2,NSNOD),CLOSED(*)
      DIMENSION ILMS(6)
      DIMENSION RMDUMY(1,1),IMDUMY(1,1)
C
      EQUIVALENCE (NPAR(5),IAXIS),(NPAR(6),NEGSKS),
     1            (NPAR(13),ICPRNT),(NPAR(15),MODEL),
     1            (NPAR(16),IDBPR)
      EQUIVALENCE (A(1),IA(1))
C
      NG = NGALL-NEGL-NEGNL
      IF (IND.GT.0) GO TO 600
C
C
C
C
C .                                                                   .
      DO 10 J=1,NSEG
   10 ISEG(J)=1
      DO 30 K=1,NTOUCH
   30 INODE(K)=1
C
      IF (IDATWR.LE.1) write(66,2000)
      IF (IDATWR.LE.1) write(66,2050)
C
      NSUM=0
      ISTOP=0
      IFSN(1)=1
      DO 100 I=1,NSURF
      READ(IIN,1000) ISURF,NNODE,IPRINT,IPLOT
C
      IF (ISURF.EQ.I) GO TO 110
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2550) ISTOP,I,ISURF
C
  110 IF (NNODE.GE.2) GO TO 120
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2600) ISTOP,ISURF,NNODE
C
  120 IPS(I)=IPRINT
      IF (IPRINT.EQ.0 .OR. IPRINT.EQ.1) GO TO 135
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2700) ISTOP,ISURF,IPRINT
C
  135 ISV(I)=IPLOT
      IF (IPLOT.EQ.0 .OR. IPLOT.EQ.1) GO TO 140
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2710) ISTOP,ISURF,IPLOT
C
  140 IF (ISTOP.EQ.0 .AND. IDATWR.LE.1)
     1write(66,2100) ISURF,NNODE,IPRINT,IPLOT
C
      KFS=IFSN(I)
      IFSN(I+1)=KFS+NNODE
      KLS=IFSN(I+1)-1
      READ(IIN,1050) (NODSF(K),K=KFS,KLS)
C
      IOPEN=0
      IF (NODSF(KLS).EQ.NODSF(KFS)) IOPEN=1
C
      ISEG(KFS+I-1)=IOPEN
      ISEG(KLS+I)=IOPEN
C
      KES=KLS
      IF (IOPEN.EQ.1) KES=KLS-1
C
  150 DO 170 KA=KFS,KES
      LOCALA = KA-KFS+1
      LNODE  = NODSF(KA)
      IF (LNODE.GT.0 .AND. LNODE.LE.NUMNP) GO TO 160
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2800) ISTOP,ISURF,LOCALA,LNODE,NUMNP
C
  160 IF (KA.EQ.KES) GO TO 170
      JK=KA+1
      DO 180 KB=JK,KES
      LOCALB=KB-KFS+1
      IF (LNODE.NE.NODSF(KB)) GO TO 180
      ISTOP=ISTOP+1
      IF (ISTOP.EQ.1) write(66,2500) NG
      write(66,2850) ISTOP,ISURF,LOCALA,LOCALB,LNODE
  180 CONTINUE
  170 CONTINUE
C
      NSUM=NSUM+NNODE
C
C

⌨️ 快捷键说明

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