收藏 分销(赏)

空间桁架结构程序设计(Fortran).doc

上传人:快乐****生活 文档编号:2669704 上传时间:2024-06-04 格式:DOC 页数:17 大小:353.51KB 下载积分:8 金币
下载 相关 举报
空间桁架结构程序设计(Fortran).doc_第1页
第1页 / 共17页
空间桁架结构程序设计(Fortran).doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
实用文案 空间桁架静力分析程序及算例 1、变量及数组说明 输入数据 控制数据 NF 单个节点的自由度数 NP 结构离散节点的总数 NE 结构离散单元的总数 NM 结构中单元不同的特征数类的总数 NR 结构受约束节点的总数 NCF 结构受外荷载作用的节点总数 ND 一个单元的节点总数 几何数据 X(NP) 节点X坐标数组 Y(NP) 节点Y坐标数组 Z(NP) 节点Z坐标数组 ME(ND,NE) 单元节点信息存储矩阵 ME(1,NE)存储杆件始端节点号 ME(2,NE)储存杆件末端节点号 RR(2,NR) 结构约束信息矩阵 RR(1,NR)存放受有约束的节点号 RR(2,NR)存放节点位移约束情况 单元特征数据 AE(2,IN) 单元特征数类数组 AE(1,IN)单元的弹性模量 AE(2,IN)单元的横截面面积 NAE(NE) 单元特征类信息存储数组 荷载数据 PF(4,NCF) 外荷载信息数组 PF(1,NCF)存放外荷载作用的节点号 PF(2,NCF)存放X方向的外荷载 PF(3,NCF)存放Y方向的外荷载 PF(4,NCF)存放Z方向的外荷载 输出数据 位移 DIST(NPF) 节点位移数组 DIST(NF*I-2)存放I节点X方向的位移 DIST(NF*I-1)存放I节点Y方向的位移 DIST(NF*I) 存放I节点Z方向的位移 力 SG(NE) 单元内力数组 SM(NE) 单元截面应力数组 FL(NF*NR) 支座反力数组 FL(NF*I-2)存放受约束的I节点X方向的反力 FL(NF*I-1)存放受约束的I节点Y方向的反力 FL(NF*I)存放受约束的I节点Z方向的反力 中间变量 NPF=NF*NP 二维总刚度矩阵的最大行数 NDF=ND*NF 一个单元的自由度总数(2*3=6) IN 单元特征类总数 AKE(2,2) 单元在局部坐标系中的刚度局矩阵 BL 杆件单元长度 T(2,6) 坐标转换矩阵 TAK(6,6) 单元在总体坐标系中的刚度矩阵 IT(NF,NP) 节点联系数组 LMT(NDF,NE) 单元联系数组 MAXA(NPF) 结构二维总刚度矩阵主对角元地址数组 NWK 结构一维总刚度矩阵的总容量 CKK(NWK) 结构一维总刚度矩阵 NN 结构矩阵方程的方程总数(去掉约束) NNM NNM=NN+1 V(NN) 已知节点荷载列阵数组,回代完成后为存放结构位移 PP(NPF) 所有节点荷载列阵数组 2、空间桁架结构有限元分析程序源代码 !主程序(读入文件,调用总计算程序,输出结果) CHARACTER IDFUT*20,OUTFUT*20 WRITE(*,*) 'Input Data File name:' READ (*,*)IDFUT OPEN (11,FILE=IDFUT,STATUS='OLD') WRITE(*,*) 'Output File name:' READ (*,*)OUTFUT OPEN(12,FILE=OUTFUT,STATUS='UNKNOWN') WRITE(12,*)'*****************************************' WRITE(12,*)'* Program for Analysis of Space Trusses *' WRITE(12,*)'* School of Civil Engineering CSU *' WRITE(12,*)'* 2012.6.25 Designed By MuZhaoxiang *' WRITE(12,*)'*****************************************' WRITE(12,*)' ' WRITE(12,*)'*****************************************' WRITE(12,*)'*************The Input Data****************' WRITE(12,*)'*****************************************' WRITE(12,100) READ(11,*)NF,NP,NE,NM,NR,NCF,ND WRITE(12,110)NF,NP,NE,NM,NR,NCF,ND 100 FORMAT(6X,'The General Information'/2X,'NF',5X,'NP',5X,'NE',5X,'NM',5X,'NR',& 5X,'NCF',5X,'ND') 110 FORMAT(2X,I2,6I7) NPF=NF*NP NDF=ND*NF CALL ANALYSE(NF,NP,NE,NM,NR,NCF,ND,NPF,NDF) END !******************************************************************** !总计算程序 SUBROUTINE ANALYSE(NF,NP,NE,NM,NR,NCF,ND,NPF,NDF) DIMENSION X(NP),Y(NP),Z(NP),MM(NE),ME(ND,NE),IT(NF,NP),RR(ND,NR), NAE(NE),& AE(1,2),PF(4,NCF),LMT(NDF,NE),MAXA(NPF),CKK(1000),V(NPF),DIST(NPF),& PP(NPF),FF(NPF),SG(NE),SM(NE) READ(11,*)(X(I),Y(I),Z(I),I=1,NP) READ(11,*)(MM(I),ME(1,I),ME(2,I),NAE(I),I=1,NE) READ(11,*)(RR(1,J),RR(2,J),J=1,NR) READ(11,*)(AE(1,J),J=1,2) WRITE(12,120) WRITE(12,121)(I,X(I),Y(I),Z(I),I=1,NP) WRITE(12,130) WRITE(12,131)(MM(I),ME(1,I),ME(2,I),NAE(I),I=1,NE) WRITE(12,140) WRITE(12,141)(INT(RR(1,J)),RR(2,J),J=1,NR) WRITE(12,150) WRITE(12,151)(AE(1,J),J=1,2) IF(NCF/=0)THEN READ(11,*)((PF(I,J),I=1,4),J=1,NCF) WRITE(12,160) WRITE(12,161)(INT(PF(1,J)),PF(2,J),PF(3,J),PF(4,J),J=1,NCF) ENDIF 120 FORMAT(/6X,'The Information of Joints'/2x,'Joint',5X,'X',5X,'Y',5X,'Z') 121 FORMAT(1X,I4,3F8.1) 130 FORMAT(/6X,'The Information of Members'/2x,'Member',2X,'START',4X,'END',6X,'NAE') 131 FORMAT(1X,I4,3I8) 140 FORMAT(/6X,'The Information of SUPPORTS'/2x,'Joint',5X,'S') 141 FORMAT(1X,I4,F8.3) 150 FORMAT(/6X,'The Information of Sections'/4x,'E0',8X,'A0') 151 FORMAT(1X,1PE8.2,F8.4) 160 FORMAT(/6X,'The Loading at Joints'/2x,'Joint',5X,'FX',5X,'FY',7X,'FZ') 161 FORMAT(1X,I4,3F8.2) CALL FLMT(NP,NE,NN,NNM,NR,RR,ND,NF,NDF,ME,IT,LMT) CALL FMAXA(NNM,NE,LMT,MAXA,NWK,NPF,NDF) CALL LP(V,PP,IT,PF,NN,NCF,NF,NP,NPF) CALL CONKB(NP,NE,NM,NWK,ME,X,Y,Z,AE,NAE,LMT,MAXA,CKK,NNM) ISH=1 CALL LDLT(CKK,MAXA,NN,ISH,IOUT,NWK,NNM) CALL REBACK(CKK,V,MAXA,NN,NWK,NNM) CALL DISPLS(NP,NE,NPF,NM,NN,IT,V,DIST,AE,NAE,X,Y,Z,PP,FF,SG,SM,ME,NR,RR,NF) END !******************************************************************** !矩阵转置子程序 SUBROUTINE MAT(M,N,A,B) DIMENSION A(M,N),B(N,M) DO I=1,M DO J=1,N B(J,I)=A(I,J) END DO END DO RETURN END !单元刚度矩阵的形成 SUBROUTINE FKE(NP,NE,NM,IE,X,Y,Z,ME,NAE,AE,AKE) DIMENSION X(NP),Y(NP),Z(NP),ME(2,NE),NAE(NE),AE(2,NM) ,AKE(2,2) N1=ME(1,IE) N2=ME(2,IE) X1=X(N1);Y1=Y(N1);Z1=Z(N1) X2=X(N2);Y2=Y(N2);Z2=Z(N2) BL=SQRT((X2-X1)**2+(Y2-Y1)**2+(Z2-Z1)**2) NMI=NAE(IE) E0=AE(1,NMI);A0=AE(2,NMI) C=E0*A0/BL AKE(1,1)=C AKE(1,2)=-C AKE(2,1)=-C AKE(2,2)=C RETURN END !单元坐标转换矩阵 SUBROUTINE FT(IE,NP,NE,X,Y,Z,ME,T) DIMENSION X(NP),Y(NP),Z(NP),ME(2,NE),T(2,6) T=0 N1=ME(1,IE);N2=ME(2,IE) X1=X(N1);Y1=Y(N1);Z1=Z(N1) X2=X(N2);Y2=Y(N2);Z2=Z(N2) BL=SQRT((X2-X1)**2+(Y2-Y1)**2+(Z2-Z1)**2) CX=(X2-X1)/BL CY=(Y2-Y1)/BL CZ=(Z2-Z1)/BL T(1,1)=CX;T(2,4)=CX T(1,2)=CY;T(2,5)=CY T(1,3)=CZ;T(2,6)=CZ RETURN END !生成单元联系数组LMT SUBROUTINE FLMT(NP,NE,NN,NNM,NR,RR,ND,NF,NDF,ME,IT,LMT) DIMENSION IT(NF,NP),LMT(NDF,NE),ME(ND,NE),RR(2,NR) NN=0;NNM=0;IT=0;LMT=0 N=0 DO I=1,NP C=0 DO K=1,NR KR=RR(1,K) IF(KR.EQ.I) C=RR(2,K) ENDDO NC=C !NC=0,提取了整数部分 C=C-NC !C=0.***,例如C=0.111 DO J=1,NF C=C*10.0 !例如C=1.21 L=C+0.1 !提取C整数部分,例如L=1,即提取了约束RR(2,K)十分位 !上的数字,这里"+0.1"是为了防止四舍五入是出现错误 C=C-L IF(L.EQ.0)THEN N=N+1 IT(J,I)=N ELSE IT(J,I)=0 ENDIF ENDDO ENDDO NN=N NNM=NN+1 DO IE=1,NE DO I=1,ND NI=ME(I,IE) DO J=1,NF LMT((I-1)*NF+J,IE)=IT(J,NI) ENDDO ENDDO ENDDO RETURN END !二维总刚中对角线元地址数组 SUBROUTINE FMAXA(NNM,NE,LMT,MAXA,NWK,NPF,NDF) DIMENSION MAXA(NPF),LMT(NDF,NE) MAXA=0;NWK=0 MAXA(1)=1 DO I=2,NNM IP=I-1 IG=IP DO IE=1,NE DO J=1,NDF IF(LMT(J,IE).EQ.IP) THEN DO K=1,NDF IF(LMT(K,IE).GT.0.AND.LMT(K,IE).LE.IG) IG=LMT(K,IE) ENDDO END IF ENDDO ENDDO MAXA(I)= MAXA(I-1)+IP-IG+1 ENDDO NWK= MAXA(NNM)-1 RETURN END !生成一维存储结构总刚度矩阵 SUBROUTINE CONKB(NP,NE,NM,NWK,ME,X,Y,Z,AE,NAE,LMT,MAXA,CKK,NNM) DIMENSION CKK(NWK),X(NP),Y(NP),Z(NP),AE(2,NM),NAE(NE),LMT(6,NE),ME(2,NE),& MAXA(NNM),AK(6,2),AKE(2,2),T(2,6),TT(6,2),TAK(6,6) CKK=0 DO 10 IE=1,NE TAK=0 CALL FKE(NP,NE,NM,IE,X,Y,Z,ME,NAE,AE,AKE) CALL FT(IE,NP,NE,X,Y,Z,ME,T) CALL MAT(2,6,T,TT) AK=MATMUL(TT,AKE) TAK=MATMUL(AK,T) !总体坐标系下的单元刚度矩阵 DO 220 I=1,6 DO 220 J=1,6 NI=LMT(I,IE) NJ=LMT(J,IE) IF((NJ-NI).GE.0.AND.NI*NJ.GT.0) THEN IJ=MAXA(NJ)+NJ-NI CKK(IJ)=CKK(IJ)+TAK(I,J) ENDIF 220 CONTINUE 10 CONTINUE RETURN END !生成荷载矩阵 SUBROUTINE LP(V,PP,IT,PF,NN,NCF,NF,NP,NPF) DIMENSION V(NN),PP(NPF),IT(NF,NP),PF(4,NCF) V=0 PP=0 DO I=1,NF DO J=1,NP DO K=1,NCF IF(J.EQ.PF(1,K).AND.IT(I,J).NE.0)THEN V(IT(I,J))=PF(I+1,K) ENDIF ENDDO ENDDO ENDDO DO K=1,NCF DO I=1,NP IF(I.EQ.PF(1,K))THEN PP(NF*(I-1)+1)=PF(2,K) PP(NF*(I-1)+2)=PF(3,K) PP(NF*(I-1)+3)=PF(4,K) ENDIF ENDDO ENDDO RETURN END !对一维结构总刚度矩阵进行矩阵分解(LDLT) SUBROUTINE LDLT(A,MAXA,NN,ISH,IOUT,NWK,NNM) DIMENSION A(NWK),MAXA(NNM) IF(NN.EQ.1) RETURN DO 200 N=1,NN KN=MAXA(N) KL=KN+1 KU=MAXA(N+1)-1 KH=KU-KL IF(KH)304,240,210 210 K=N-KH IC=0 KLT=KU DO 260 J=1,KH KLT=KLT-1 IC=IC+1 KI=MAXA(K) ND=MAXA(K+1)-KI-1 IF(ND) 260,260,270 270 KK=MIN0(IC,ND) C=0.0 DO 280 L=1,KK 280 C=C+A(KI+L)*A(KLT+L) A(KLT)=A(KLT)-C 260 K=K+1 240 K=N B=0.0 DO 300 KK=KL,KU K=K-1 KI=MAXA(K) C=A(KK)/A(KI) IF(ABS(C).LT.1.0E+07) GOTO 290 WRITE(IOUT,2010) N,C STOP 290 B=B+C*A(KK) 300 A(KK)=C A(KN)=A(KN)-B 304 IF(A(KN)) 310,310,200 310 IF(ISH.EQ.0) GOTO 320 IF(A(KN).EQ.0.0) A(KN)=-1.0E-16 GOTO 200 320 WRITE(IOUT,2000) N,A(KN) STOP 200 CONTINUE RETURN 2000 FORMAT(//,' Stop-stiffness matrix not positive definite',//,'no positive& pivot for equation',I4,& //,' pivot =',E20.10) 2010 FORMAT(//,' Stop-strum sequence check failed + because of multiplier& growth for column & number',I4,//,' Multiplier = ',E20.8) END !回代,求得节点位移 SUBROUTINE REBACK(A,V,MAXA,NN,NWK,NNM) DIMENSION A(NWK),V(NN,1),MAXA(NNM) NIP=1 DO IP=1,NIP DO 400 N=1,NN KL=MAXA(N)+1 KU=MAXA(N+1)-1 IF(KU-KL) 400,410,410 410 K=N C=0.0 DO 420 KK=KL,KU K=K-1 420 C=C+A(KK)*V(K,IP) V(N,IP)=V(N,IP)-C 400 CONTINUE DO 480 N=1,NN K=MAXA(N) 480 V(N,IP)=V(N,IP)/A(K) IF(NN.EQ.1)RETURN N=NN DO 500 L=2,NN KL=MAXA(N)+1 KU=MAXA(N+1)-1 IF(KU-KL) 500,510,510 510 K=N DO 520 KK=KL,KU K=K-1 520 V(K,IP)=V(K,IP)-A(KK)*V(N,IP) 500 N=N-1 ENDDO RETURN END !求解杆件内力、支反力和位移 SUBROUTINE DISPLS(NP,NE,NPF,NM,NN,IT,FTOOL,DIST,AE,NAE,X,Y, Z,PP,FF,SG,SM,ME,& NR,RR,NF) DIMENSION IT(3,NP),DIST(NPF),FTOOL(NPF),X(NP),Y(NP),Z(NP),T(2,6),TT(6,2), AE(2,NM),& ME(2,NE),NAE(NE),UE(6),U(2),AKE(2,2),FE1(2),FE(6),FF(NPF),PP(NPF),& SG(NE),SM(NE),FF2(NPF),RR(2,NR),FL(3*NR) SG=0;SM=0;FF=0;FF2=0 DO I=1,NP DO J=1,NF LAB=IT(J,I) IF(LAB.EQ.0) THEN DIST(3*(I-1)+J)=0.0 ELSEIF(LAB.GT.0.AND.LAB.LE.NN) THEN DIST(3*(I-1)+J)=FTOOL(LAB) ENDIF ENDDO ENDDO DO IE=1,NE N1=ME(1,IE);N2=ME(2,IE) DO J=1,NF UE(J)=DIST(3*(N1-1)+J) UE(3+J)=DIST(3*(N2-1)+J) ENDDO CALL FT(IE,NP,NE,X,Y,Z,ME,T) CALL FKE(NP,NE,NM,IE,X,Y,Z,ME,NAE,AE,AKE) U=MATMUL(T,UE) FE1=MATMUL(AKE,U) CALL MAT(2,6,T,TT) FE=MATMUL(TT,FE1) DO J=1,NF FF(3*(N1-1)+J)=FF(3*(N1-1)+J)+FE(J) FF(3*(N2-1)+J)=FF(3*(N2-1)+J)+FE(3+J) ENDDO ISW=NAE(IE) AO=AE(2,ISW) SG(IE)=FE1(2) SM(IE)=FE1(2)/AO DO I=1,NPF FF2(I)=FF(I)-PP(I) ENDDO ENDDO DO I=1,NP DO J=1,NF LAB=IT(J,I) IF(LAB.EQ.0)THEN K=K+1 FL(K)=FF2(3*(I-1)+J) ENDIF ENDDO ENDDO WRITE(12,*)' ' WRITE(12,*)'****************************************' WRITE(12,*)'*********The Results of Calculation**********' WRITE(12,*)'****************************************' WRITE(12,600) WRITE(12,610)(I,DIST(3*I-2)*1000,DIST(3*I-1)*1000,& DIST(3*I)*1000, I=1,NP) WRITE(12,620) WRITE(12,630)(IE,SG(IE),SM(IE)/1000,IE=1,NE) WRITE(12,640) WRITE(12,650)(INT(RR(1,I)),FL(3*I-2),FL(3*I-1),FL(3*I),I=1,NR) 600 FORMAT(6X,'The Joint Displacement'/2x,'Joint',6X,'X(mm)',8X,'Y(mm)',6X,'Z(mm)') 610 FORMAT(1X,I4,2X,1P3E12.2) 620 FORMAT(//6X,'The Terminal Forces'/2x,'Member', 6X,'FN(kN)',6X,'σ(MPa)') 630 FORMAT(3X,I4,2X,F8.2,6X,F8.2) 640 FORMAT(//6X,'The Bearing Force'/2x,'Joint',8X,'X',8X,'Y',8X,'Z') 650 FORMAT(2X,I4,2X,3F10.2) RETURN END 3、算例 以下图所示空间桁架为例:圆形桁架穹项,其几何尺寸如图(a)所示,整体坐标系原点取在拱顶,集中荷载P作用于拱顶,各杆截面面积A和弹性模量E都相同(取E=210GPa,A=0.04m2);各杆件及结点编号如图(b)所示。 (a)空间桁架立面图(尺寸:m,荷载:kN) (b)空间桁架平面图(结点和杆件编号) (1)输入数据说明 第一部分:控制数据The General Information NF NP NE NM NR NCF ND 3 13 24 1 6 1 2 第二部分:节点坐标数据The Information of Joints JOINT X(m) Y(m) Z(m) 1 0 -10 50 2 43.3 -10 25 3 43.3 -10 -25 4 0 -10 -50 5 -43.3 -10 -25 6 -43.3 -10 25 7 -12.5 -2 21.65 8 12.5 -2 21.65 9 25 -2 0 10 12.5 -2 -21.65 11 -12.5 -2 -21.65 12 -25 -2 0 13 0 0 0 第三部分:单元信息数据The Information of Members MEMBER START END NAE 1 1 7 1 2 1 8 1 3 2 8 1 4 2 9 1 5 3 9 1 6 3 10 1 7 4 10 1 8 4 11 1 9 5 11 1 10 5 12 1 11 6 12 1 12 6 7 1 13 7 8 1 14 8 9 1 15 9 10 1 16 10 11 1 17 11 12 1 18 7 12 1 19 7 13 1 20 8 13 1 21 9 13 1 22 10 13 1 23 11 13 1 24 12 13 1 第四部分:约束信息The Information of Supports JOINT S 1 0.111 2 0.111 3 0.111 4 0.111 5 0.111 6 0.111 第五部分:单元截面信息The Information of Sections E0(KPa) A0(m2) 210E6 0.04 第六部分:外荷载信息The Loading at Joints JOINT FX(KN) FY(KN) FZ(KN) 13 0 -500 0 (2)计算结果 第一部分:节点位移结果 JOINT X(mm) Y(mm) Z(mm) 1 0.00E+00 0.00E+00 0.00E+00 2 0.00E+00 0.00E+00 0.00E+00 3 0.00E+00 0.00E+00 0.00E+00 4 0.00E+00 0.00E+00 0.00E+00 5 0.00E+00 0.00E+00 0.00E+00 6 0.00E+00 0.00E+00 0.00E+00 7 -1.27E+00 3.25E+00 2.19E+00 8 1.27E+00 3.25E+00 2.19E+00 9 2.53E+00 3.25E+00 -5.25E-08 10 1.27E+00 3.25E+00 -2.19E+00 11 -1.27E+00 3.25E+00 -2.19E+00 12 -2.53E+00 3.25E+00 1.93E-07 13 -3.38E-07 -6.75E+01 5.95E-07 第二部分:单元内力及应力结果 MEMBER FN(kN) (MPa) 1 -166.66 -4.17 2 -166.66 -4.17 3 -166.66 -4.17 4 -166.65 -4.17 5 -166.66 -4.17 6 -166.66 -4.17 7 -166.66 -4.17 8 -166.66 -4.17 9 -166.66 -4.17 10 -166.65 -4.17 11 -166.66 -4.17 12 -166.66 -4.17 13 851.03 21.28 14 851.01 21.28 15 851.01 21.28 16 851.03 21.28 17 851.01 21.28 18 851.01 21.28 19 -1044.98 -26.12 20 -1044.98 -26.12 21 -1044.98 -26.12 22 -1044.98 -26.12 23 -1044.98 -26.12 24 -1044.98 -26.12 第三部分:支反力结果 JOINT FX(KN) FY(KN) FZ(KN) 1 0 83.33 -295.3 2 -255.73 83.33 -147.65 3 -255.73 83.33 147.65 4 0 83.33 295.3 5 255.73 83.33 147.65 6 255.73 83.33 -147.65 (3)输入及输出文件 ① 输入文件.txt 3 13 24 1 6 1 2 0 -10 50 43.3 -10 25 43.3 -10 -25 0 -10 -50 -43.3 -10 -25 -43.3 -10 25 -12.5 -2 21.65 12.5 -2 21.65 25 -2 0 12.5 -2 -21.65 -12.5 -2 -21.65 -25 -2 0 0 0 0 1 1 7 1 2 1 8 1 3 2 8 1 4 2 9 1 5 3 9 1 6 3 10 1 7 4 10 1 8 4 11 1 9 5 11 1 10 5 12 1 11 6 12 1 12 6 7 1 13 7 8 1 14 8 9 1 15 9 10 1 16 10 11 1 17 11 12 1 18 7 12 1 19 7 13 1 20 8 13 1 21 9 13 1 22 10 13 1 23 11 13 1 24 12 13 1 1 0.111 2 0.111 3 0.111 4 0.111 5 0.111 6 0.111 210E6 0.04 13 0
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服