zoukankan      html  css  js  c++  java
  • 有限元入门

    好的入门资料:

    1.朱伯芳的《有限单元法原理与应用》

     2.刘尔烈  《有限单元法及程序设计-刘尔烈》

    3.    单元刚度矩阵组装及整体分析.doc

    4.矿大的ppt :第五章-三角形单元的有限元法

    5.下面的例子是刘尔烈书中例子:

    读入文件:

    1     EXAMPLE
    2     6,4,5,3,1
    3     1,0,1,0
    4     3,1,2,5,2,4,2,5,3,6,3,5
    5     0,2,0,1,1,1,0,0,1,0,2,0
    6     1,1,0,2,1,0,4,1,1,5,0,1,6,0,1
    7     1,-0.5,-1.5,3,-1.,-1.,6,-0.5,-0.5
    PSSPAPIN.TXT

    程序代码:

      1         PROGRAM PSSPAP
      2 C       PLAN STRESS/STRAIN PROBLAM ANALYSIS PROGRAM
      3         DIMENSION LND(500,3),X(200),Y(200),JZ(50,3),
      4      &  PJ(50,3),P(500),TL(20),AK(500,100),AKE(6,6)
      5         OPEN (6,FILE='PSSPAPIN.TXT')
      6         OPEN (8,FILE='PSSPAPOUT.TXT')
      7         READ(6,10) TL
      8 10      FORMAT(20A4)
      9         READ(6,*)NJ,NE,NZ,NPJ,IPS
     10         WRITE(8,10)TL
     11         IF(IPS.EQ.1) WRITE(8,20)
     12         IF(IPS.EQ.2) WRITE(8,30)        
     13 20      FORMAT(/1X,'PLATE STRESS PROBLEM')
     14 30      FORMAT(/1X,'PLATE STRAIN PROBLEM')
     15         NPJ0=NPJ
     16         IF(NPJ.EQ.0) NPJ=1
     17         CALL READ(NJ,NE,NZ,ND,NPJ,NPJ0,IPS,E,PR,
     18      &  T,V,LND,X,Y,JZ,PJ)
     19         N=2*NJ
     20         DO I=1,N
     21           DO  J=1,ND
     22             AK(I,J)=0.0
     23           END DO
     24       END DO      
     25       DO IE=1,NE
     26           CALL MKE(IE,NJ,NE,LND,X,Y,E,PR,T,AKE)
     27           DO I=1,3
     28             DO II=1,2
     29               IH=2*(I-1)+II
     30               IDH=2*(LND(IE,I)-1)+II
     31               DO J=1,3
     32                 DO JJ=1,2
     33                   L=2*(J-1)+JJ
     34                   IL=2*(LND(IE,J)-1)+JJ
     35                   IDL=IL-IDH+1
     36                   IF(IDL.GT.0) THEN
     37                     AK(IDH,IDL)=AK(IDH,IDL)+AKE(IH,L)
     38                   END IF
     39                 END DO
     40               END DO
     41             END DO
     42           END DO
     43         END DO
     44         CALL MF(NJ,NE,NPJ,NPJ0,N,T,V,LND,X,Y,PJ,P)
     45         CALL RKR(NZ,ND,N,JZ,AK,P)
     46         CALL SLOV(NJ,N,ND,AK,P)
     47         CALL MADE(NE,NJ,N,E,PR,LND,X,Y,P)
     48         CLOSE (6)
     49         CLOSE (8)
     50         STOP
     51         END
     52         SUBROUTINE READ(NJ,NE,NZ,ND,NPJ,NPJ0,IPS,E,PR,T,V,
     53      &  LND,X,Y,JZ,PJ)
     54         DIMENSION LND(500,3),X(NJ),Y(NJ),JZ(NZ,3),PJ(NPJ,3)
     55         READ(6,*) E,PR,T,V
     56         READ(6,*)((LND(I,J),J=1,3),I=1,NE)
     57         READ(6,*)(X(I),Y(I),I=1,NJ)
     58         READ(6,*)((JZ(I,J),J=1,3),I=1,NZ)
     59         IF(NPJ0.NE.0) THEN
     60           READ(6,*)((PJ(I,J),J=1,3),I=1,NPJ)
     61         END IF
     62         ND=0
     63         DO IE=1,NE
     64           DO I=1,3
     65             DO  J=1,3
     66               IW=IABS(LND(IE,I)-LND(IE,J))
     67               IF(ND.LT.IW) THEN
     68                 ND=IW
     69               END IF
     70             END DO
     71           END DO
     72         END DO
     73         ND=(ND+1)*2
     74         IF(IPS.NE.1) THEN
     75           E=E/(1.0-PR*PR)
     76           PR=PR/(1.0-PR)
     77         END IF
     78         END
     79         SUBROUTINE MKE(IE,NJ,NE,LND,X,Y,E,PR,T,AKE)
     80         DIMENSION LND(NE,3),X(NJ),Y(NJ),B(3,6),D(3,3),S(3,6),
     81      &  AKE(6,6)
     82         CALL MA(IE,NJ,NE,LND,X,Y,AE)
     83         CALL MD(E,PR,D)
     84         CALL MB(IE,NJ,NE,LND,X,Y,AE,B)
     85         DO I=1,3
     86           DO J=1,6
     87             S(I,J)=0.0
     88             DO K=1,3
     89               S(I,J)=S(I,J)+D(I,K)*B(K,J)
     90             END DO
     91           END DO
     92         END DO
     93         DO I=1,6
     94           DO J=1,6
     95             AKE(I,J)=0.0
     96             DO K=1,3
     97               AKE(I,J)=AKE(I,J)+S(K,I)*B(K,J)*AE*T
     98             END DO
     99           END DO
    100         END DO
    101         END
    102         SUBROUTINE MA(IE,NJ,NE,LND,X,Y,AE)
    103         DIMENSION LND(500,3),X(NJ),Y(NJ)
    104         I=LND(IE,1)
    105         J=LND(IE,2)
    106         K=LND(IE,3)
    107         XIJ=X(J)-X(I)
    108         YIJ=Y(J)-Y(I)
    109         XIK=X(K)-X(I)
    110         YIK=Y(K)-Y(I)
    111         AE=0.5*(XIJ*YIK-XIK*YIJ)
    112         RETURN
    113         END
    114         SUBROUTINE MD(E,PR,D)
    115         DIMENSION D(3,3)
    116         DO I=1,3
    117           DO J=1,3
    118             D(I,j)=0.0
    119           END DO
    120         END DO
    121         D(1,1)= E/(1.0-PR*PR)
    122         D(1,2)=E*PR/(1.0-PR*PR)
    123         D(2,1)=D(1,2)
    124         D(2,2)=D(1,1)
    125         D(3,3)=0.5*E/(1.0+PR)
    126         RETURN
    127         END
    128         SUBROUTINE MB(IE,NJ,NE,LND,X,Y,AE,B)
    129         DIMENSION LND(500,3),X(NJ),Y(NJ),B(3,6)
    130         I=LND(IE,1)
    131         J=LND(IE,2)
    132         K=LND(IE,3)
    133         DO II=1,3
    134           DO JJ=1,6
    135             B(II,JJ)=0.0
    136           END DO
    137         END DO
    138         B(1,1)=Y(J)-Y(K)
    139         B(1,3)=Y(K)-Y(I)
    140         B(1,5)=Y(I)-Y(J)
    141         B(2,2)=X(K)-X(J)
    142         B(2,4)=X(I)-X(K)
    143         B(2,6)=X(J)-X(I)
    144         B(3,1)=B(2,2)
    145         B(3,2)=B(1,1)
    146         B(3,3)=B(2,4)
    147         B(3,4)=B(1,3)
    148         B(3,5)=B(2,6)
    149         B(3,6)=B(1,5)
    150         DO I1=1,3
    151           DO J1=1,6
    152             B(I1,J1)=0.5/AE*B(I1,J1)
    153           END DO
    154         END DO
    155         RETURN
    156         END
    157         SUBROUTINE MF(NJ,NE,NPJ,NPJ0,N,T,V,LND,X,Y,PJ,P)
    158         DIMENSION LND(500,3),X(NJ),Y(NJ),PJ(NPJ,3),P(N)                   
    159         DO I=1,N
    160           P(I)=0.0
    161         END DO
    162         IF(NPJ0.NE.0) THEN
    163           DO  I=1,NPJ
    164             II=PJ(I,1)
    165             P(2*II-1)=PJ(I,2)
    166             P(2*II)=PJ(I,3)
    167           END DO
    168         END IF
    169         IF (V.NE.0) THEN
    170           DO IE=1,NE
    171             CALL MA(IE,NJ,NE,LND,X,Y,AE)
    172             PE=-V*AE*T/3.0
    173             DO I=1,3
    174               II=LND(IE,I)
    175               P(2*II)=P(2*II)+PE
    176             END DO
    177           END DO
    178         END IF
    179         RETURN
    180         END
    181         SUBROUTINE RKR(NZ,ND,N,JZ,AK,P)
    182         DIMENSION P(N),JZ(NZ,3),AK(500,100)
    183         DO I=1,NZ
    184           IR=JZ(I,1)
    185           DO J=2,3
    186             IF (JZ(I,J).NE.0) THEN
    187               II=2*IR+J-3
    188               AK(II,1)=1.0
    189               DO JJ=2,ND
    190                 AK(II,JJ)=0.0
    191               END DO
    192               IF (II.GT.ND) JO=ND
    193               IF (II.LE.ND) JO=II
    194               DO JJ=2,JO
    195                 AK(II-JJ+1,JJ)=0.0
    196               END DO
    197               P(II)=0.0
    198             END IF
    199           END DO
    200         END DO
    201         RETURN
    202         END
    203         SUBROUTINE SLOV(NJ,N,ND,AK,P)
    204         DIMENSION P(N),AK(500,100)
    205         NJ1=N-1
    206         DO K=1,NJ1
    207           IF (N.GT.K+ND-1) IM=K+ND-1
    208           IF (N.LE.K+ND-1) IM=N
    209           K1=K+1
    210           DO I=K1,IM
    211             L=I-K+1
    212             C=AK(K,L)/AK(K,1)
    213             IW=ND-L+1
    214             DO J=1,IW
    215               M=J+I-K
    216               AK(I,J)=AK(I,J)-C*AK(K,M)
    217             END DO
    218             P(I)=P(I)-C*P(K)
    219           END DO
    220         END DO
    221         P(N)=P(N)/AK(N,1)
    222         DO I1=1,NJ1
    223           I=N-I1
    224           IF(ND.GT.N-I+1) JO=N-I+1
    225           IF(ND.LT.N-I+1) JO=ND
    226           DO J=2,JO
    227             K=J+I-1
    228             P(I)=P(I)-AK(I,J)*P(K)
    229           END DO
    230           P(I)=P(I)/AK(I,1)
    231         END DO
    232         WRITE(8,50)
    233 50      FORMAT (/8X,5('**'),' RESULTE OF CALCULATION ',
    234      &  5('**')//1X,'NODAL DISPLACEMENTS' //3X,'NODE',
    235      &  5X,'X-DISP.',8X,'Y-DISP.')
    236         DO I=1,NJ
    237           WRITE(8,70) I,P(2*I-1),P(2*I)
    238 70        FORMAT(1X,I5,2E15.6)
    239         END DO
    240         RETURN
    241         END
    242         SUBROUTINE MADE(NE,NJ,N,E,PR,LND,X,Y,P)
    243         DIMENSION LND(500,3),X(NJ),Y(NJ),D(3,3),
    244      &  B(3,6),S(3,6),ST(3),P(N),DE(6)
    245         WRITE(8,10)
    246 10      FORMAT(/1X,'ELEMENT STRESSES'/)
    247         CALL MD(E,PR,D)
    248         DO IE=1,NE
    249           CALL MA(IE,NJ,NE,LND,X,Y,AE)
    250           CALL MB(IE,NJ,NE,LND,X,Y,AE,B)
    251           DO I=1,3
    252             DO J=1,6
    253               S(I,J)=0.0
    254               DO K=1,3
    255                 S(I,J)=S(I,J)+D(I,K)*B(K,J)
    256               END DO
    257             END DO
    258           END DO
    259           DO I=1,3
    260             DO J=1,2
    261               IH=2*(I-1)+J
    262               IW=2*(LND(IE,I)-1)+J
    263               DE(IH)=P(IW)
    264             END DO
    265           END DO
    266           DO I=1,3
    267             ST(I)=0.0
    268             DO J=1,6
    269               ST(I)=ST(I)+S(I,J)*DE(J)
    270             END DO
    271           END DO
    272           STX=ST(1)
    273           STY=ST(2)
    274           TXY=ST(3)
    275           AST=(STX+STY)*.5
    276           RST=SQRT(0.25*(STX-STY)**2+TXY*TXY)
    277           STMA=AST+RST
    278           STMI=AST-RST
    279           IF (STY.EQ.STMI) CETA=0.0
    280           IF (STY.NE.STMI) CETA=90.-57.29578*ATAN
    281      &    (TXY/(STY-STMI))
    282           WRITE(8,60) IE,STX,STY,TXY,STMA,STMI,CETA
    283 60        FORMAT (1X,'ELEMENT NO.=',I5/3X,' STX=',E15.6,
    284      &    2X,' STY=',E15.6,2X,' TXY=',E15.6/3X,'STMA=',
    285      &    E15.6,2X,'STMI=',E15.6,2X,'CETA=',E15.6)
    286       END DO
    287         RETURN
    288         END
    PASSPAP_FORTRAN77

    输出结果:

     1     EXAMPLE                                                                     
     2 
     3  PLATE STRESS PROBLEM
     4 
     5         ********** RESULTE OF CALCULATION **********
     6 
     7  NODAL DISPLACEMENTS
     8 
     9    NODE     X-DISP.        Y-DISP.
    10      1   0.000000E+00  -0.525275E+01
    11      2   0.000000E+00  -0.225275E+01
    12      3  -0.108791E+01  -0.137363E+01
    13      4   0.000000E+00   0.000000E+00
    14      5  -0.824176E+00   0.000000E+00
    15      6  -0.182418E+01   0.000000E+00
    16 
    17  ELEMENT STRESSES
    18 
    19  ELEMENT NO.=    1
    20     STX=  -0.108791E+01   STY=  -0.300000E+01   TXY=   0.439560E+00
    21    STMA=  -0.991704E+00  STMI=  -0.309621E+01  CETA=   0.123458E+02
    22  ELEMENT NO.=    2
    23     STX=  -0.824176E+00   STY=  -0.225275E+01   TXY=   0.000000E+00
    24    STMA=  -0.824176E+00  STMI=  -0.225275E+01  CETA=   0.000000E+00
    25  ELEMENT NO.=    3
    26     STX=  -0.108791E+01   STY=  -0.137363E+01   TXY=   0.307692E+00
    27    STMA=  -0.891531E+00  STMI=  -0.157001E+01  CETA=   0.325476E+02
    28  ELEMENT NO.=    4
    29     STX=  -0.100000E+01   STY=  -0.137363E+01   TXY=  -0.131868E+00
    30    STMA=  -0.958147E+00  STMI=  -0.141548E+01  CETA=   0.162391E+03
    PSSPAPOUT.TXT
  • 相关阅读:
    WebFlux系列(二) Server-Sent Events
    WebFlux系列(一)HelloWorld
    Reactor系列(十九)StepVerifier测试
    C++中vector和set使用sort方法排序
    获取线程ID
    C标准中一些预定义的宏__DATE__ __FILE__ __LINE__ __TIME__ __func__
    opencv测试代码
    nohub相关
    tensorflow相关练习
    摄像机相关
  • 原文地址:https://www.cnblogs.com/zhubinglong/p/7993251.html
Copyright © 2011-2022 走看看