平面四节点等参单元分析程序
04-等参数单元

第四章 等参数单元为了方便应用和提高计算精度,目前许多实用程序采用了等参数单元,取得了较好的效果。
本章从平面问题的任意四边形单元入手,介绍等参数单元的一些基本概念,并根据工程实际应用需要,重点介绍空间六面体等参数单元分析。
§4-1 等参数单元的概念一、平面等参数单元1. 四节点四边形等参数单元在平面问题的有限单元法中,最简单和最常用的是三节点三角形单元,其次是四节点矩形单元。
由于三节点三角形单元采用的是线性位移模式,是实际位移分布的最简单逼近形式,求解精度受到限制。
而四节点矩形单元,由于它的位移函数是坐标的二次函数,单元内的应力不是常量而是线性变化的,所以能比简单三角形单元较好地反映实际应力变化情况。
但是矩形单元不能适应曲线边界和非正交的直线边界,也不便随意改变大小,应用范围受到很大限制。
如果采用任意四边形单元(如图4-1所示),而仍采用矩形单元的位移模式,则基本上能够克服矩形单元的上述不足之处。
但是此时在不平行于坐标轴的边界上,由于y=kx(k ≠0),位移函数为C Bx Axxy y x u ++=+++=24321αααα是坐标的二次函数,这样就不能由边界上二个节点的位移来唯一地确定该边界上的位移,故位移的连续性将得不到保证,其变形协调条件就得不到满足。
采用坐标变换可解决这一矛盾,现说明如下。
在图4-1所示的任意 四边形单元上,用等分四边的两族直线分割该四边形。
以两族直线的中心为原点(ξ=η=0),并令四边上的ξ值、η值分别为±1,这样就得到一个新的坐标系,单元上的任一点都取一个新的坐标(ξ,η)。
这里的ξ,η是一种局部坐标,只适用于一个单元的范围内。
与此相反,原坐标x ,y 则是一种整体坐标,和以前一样地通用于所有单元的整体。
为确保局部坐标ξ,η和原坐标x,y 有一一对应关系,即存在确定的坐标变换关系,应使任意四边形不能大歪斜,它的任意 一条边的延伸线不能再分割单元(如图4-2)。
有限元分析基本理论问答基础理论知识

有限元分析基本理论问答基础理论知识1. 诉述有限元法的定义答:有限元法是近似求解一般连续场问题的数值方法2. 有限元法的基本思想是什么答:首先,将表示结构的连续离散为若干个子域,单元之间通过其边界上的节点连接成组合体。
其次,用每个单元内所假设的近似函数分片地表示求解域内待求的未知厂变量。
3. 有限元法的分类和基本步骤有哪些答:分类:位移法、力法、混合法;步骤:结构的离散化,单元分析,单元集成,引入约束条件,求解线性方程组,得出节点位移。
4. 有限元法有哪些优缺点答:优点:有限元法可以模拟各种几何形状复杂的结构,得出其近似解;通过计算机程序,可以广泛地应用于各种场合;可以从其他CAD软件中导入建好的模型;数学处理比较方便,对复杂形状的结构也能适用;有限元法和优化设计方法相结合,以便发挥各自的优点。
缺点:有限元计算,尤其是复杂问题的分析计算,所耗费的计算时间、内存和磁盘空间等计算资源是相当惊人的。
对无限求解域问题没有较好的处理办法。
尽管现有的有限元软件多数使用了网络自适应技术,但在具体应用时,采用什么类型的单元、多大的网络密度等都要完全依赖适用者的经验。
5. ?梁单元和平面钢架结构单元的自由度由什么确定答:每个节点上有几个节点位移分量,就称每个节点有几个自由度6. ?简述单元刚度矩阵的性质和矩阵元素的物理意义答:单元刚度矩阵是描述单元节点力和节点位移之间关系的矩阵单元刚度矩阵中元素aml的物理意义为单元第L个节点位移分量等于1,其他节点位移分量等于0时,对应的第m个节点力分量。
7. 有限元法基本方程中的每一项的意义是什么答:整个结构的节点载荷列阵(外载荷、约束力),整个结构的节点位移列阵,结构的整体刚度矩阵,又称总刚度矩阵。
8. 位移边界条件和载荷边界条件的意义是什么答:由于刚度矩阵的线性相关性不能得到解,从而引入边界条件。
9. ?简述整体刚度矩阵的性质和特点答:对称性;奇异性;稀疏性;对角线上的元素恒为正。
有限元讲义弹性力学平面问题有限单元法(四结点四边形等参元,八结点曲线四边形等参元,问题补充)分析

2.6 四结点四边形单元(The four-node quadrilateral element)前面介绍了四结点的矩形单元其位移函数:xy y x U 4321αααα+++=xy y x V8765αααα+++=为双线性函数,应力,应变在单元内呈线性变化,比常应力三角形单元精度高。
但它对边界要求严格。
本节介绍的四结点四边形等参元,它不但具有较高的精度,而且其网格划分也不受边界的影响。
对任意四边形单元(图见下面)若仍直接采用前面矩形单元的位移函数,在边界上它便不再是线性的(因边界不与x,y 轴一致),这样会使得相邻两单元在公共边界上的位移可能会出现不连续现象(非协调元),而使收敛性受到影响。
可以验证,利用坐标变换就能解决这个问题,即可以通过坐标变换将整体坐标中的四边形(图a )变换成在局部坐标系中与四边形方向无关的边长为2的正方形。
正方形四个结点i,j,m,p 按反时钟顺序对应四边形的四个结点i j m p 。
正方形的 1-=η 和 1=η 二条边界,分别对应四边形的i ,j 边界和p,m 边界;ξ=-1和ξ=+1分别对应四边形的i ,p 边界和j ,m 边界。
如果用二组直线等分四边形的四个边界线段,使四边形绘成一个非正交网格,那么该非正交网格在正方形上对应着一个等距离的规则网格(见图a, b )。
当然, 局部坐标上的A 点与整体坐标的A 点对应。
一、四结点四边形等参单元的形函数及坐标变换由于可以将整体坐标下的四边形单元变换成局部坐标下的正方形单元,对于这种正方形单元,自然仍取形函数为: ξηαηαξαα2321+++=U ξηαηαξαα8765+++=V引入边界条件,即可得位移函数:∑=ijmpi i U N Ui ijmpi V N V ∑==写成矩阵形式:{}{}[]{}ee p i p i ed N d N N N N V U f =⎥⎦⎤⎢⎣⎡=⎭⎬⎫⎩⎨⎧=000 式中形函数: ()()()ηηξξηξi i i N ++=1141, ()p m j i ,,, 按照等参元的定义,我们将坐标变换式亦取为: p p m m j j i i i ijmpi x N x N x N x N x N x +++==∑p p m m j j i i i ijmpi y N y N y N y N y N y +++==∑ ()162-- 式中形函数N 与位移函数中的完全一致。
平面四边形四节点等参单元Fortran源程序

C ************************************************C * FINITE ELEMENT PROGRAM *C * FOR Two DIMENSIONAL ELASticity PROBLEM *C * WITH 4 NODE *C ************************************************PROGRAM ELASTICITYcharacter*32 dat,cchDIMENSION SK(80000),COOR(2,300),AE(4,11),MEL(5,200),& WG(4),JR(2,300),MA(600),R(600),iew(30),STRE(3,200)COMMON /CMN1/ NP,NE,NM,NRCOMMON /CMN2/ N,MX,NHCOMMON /CMN3/ RF(8),SKE(8,8),NN(8)WRITE(*,*)'PLEASE ENTER INPUT FILE NAME'READ(*,'(A)')DATOPEN(4,FILE=dat,STATUS='OLD')OPEN(7,FILE='OUT',STATUS='UNKNOWN')READ(4,*)NP,NE,NM,NRWRITE(7,'(A,I6)')'NUMBER OF NODE---------------------NP=',npWRITE(7,'(A,I6)')'NUMBER OF ELEMENT------------------NE=',neWRITE(7,'(A,I6)')'NUMBER OF MATERIAL-----------------NM=',nm WRITE(7,'(A,I6)')'NUMBER OF surporting---------------NC=',NrCALL INPUT (JR,COOR,AE,MEL)CALL CBAND (MA,JR,MEL)DO I=1,NHSK(I)=0.0enddoCALL SK0(SK,MEL,COOR,JR,MA,AE)do I=1,NR(I)=0.0enddopause 'aaa'stopREAD(4,*)NCP,NBE,izWRITE(*,'(5i8)')NCP,NBE,izWRITE(7,'(5i8)')NCP,NBE,izIF(NCP.GT.0)CALL CONCR(NCP,R,JR)IF(NBE.GT.0) CALL BODYR(NBE,R,MEL,COOR,JR,AE) IF(iz.GT.0)thendo jj=1,izREAD (4,*)Js,nse,(WG(I),I=1,4)read(4,*)(iew(m),m=1,nse)CALL FACER(iew,NSE,R,MEL,COOR,JR,WG)enddoendifCALL DECOP (SK,MA)CALL FOBA (SK,MA,R)CALL OUTDISP(NP,R,JR)CALL STRESS (COOR,MEL,JR,AE,R,STRE)WRITE(7,'(A)')' PROGRAM SAFF HAS BEEN ENDED'WRITE(*,'(A)')' PROGRAM SAFF HAS BEEN ENDED'STOPc RETURNENDC *********************************************SUBROUTINE INPUT (JR,COOR,AE,MEL)DIMENSION JR(2,*),COOR(2,*),AE(4,*),MEL(5,*)COMMON /CMN1/ NP,NE,NM,NRCOMMON /CMN2/ N,MX,NHDO 70 I=1,NPREAD(4,*) IP,X,YCOOR(1,IP)=XCOOR(2,IP)=Y70 CONTINUEDO 11 J=1,NEREAD(4,*)NEE,NME,(MEL(I,NEE),I=1,4)MEL(5,NEE)=NME11 CONTINUEDO 10 I=1,NPDO 10 J=1,210 JR(J,I)=1DO 20 I=1,NRREAD(4,*) IP,IX,IYJR(1,IP)=IXJR(2,IP)=IY20 CONTINUEN=0DO 30 I=1,NPDO 30 J=1,2IF (JR(J,I)) 30,30,2525 N=N+1JR(J,I)=N30 CONTINUEDO 55 J=1,NMREAD (4,*)JJ,(AE(I,JJ),I=1,4)WRITE(*,910) JJ,(AE(I,JJ),I=1,4)55 CONTINUE910 FORMAT (/20X,'MATERIAL PROPERTIES'/(3X,I5,4(1x,E8.3))) RETURNENDC **********************************************SUBROUTINE CBAND (MA,JR,MEL)DIMENSION MA(*),JR(2,*),MEL(5,*),NN(8)COMMON /CMN1/ NP,NE,NM,NRCOMMON /CMN2/ N,MX,NHDO 65 I=1,N65 MA(I)=0DO 90 IE=1,NEDO 75 K=1,4IEK=MEL(K,IE)DO 95 M=1,2JJ=2*(K-1)+MNN(JJ)=JR(M,IEK)95 CONTINUE75 CONTINUEL=NDO 80 I=1,2*4NNI=NN(I)IF(NNI.EQ.0) GO TO 80IF(NNI.LT.L) L=NNI80 CONTINUEDO 85 M=1,2*4JP=NN(M)IF(JP.EQ.0) GO TO 85JPL=JP-L+1IF(JPL.GT.MA(JP)) MA(JP)=JPL85 CONTINUE90 CONTINUEMX=0MA(1)=1DO 10 I=2,NIF(MA(I).GT.MX) MX=MA(I)MA(I)=MA(I)+MA(I-1)10 CONTINUENH=MA(N)WRITE(7,'(A,I8)')'TOTAL DEGREES OF FREEDOM-----------N= ',NWRITE(7,'(A,I8)')'MAX-SEMI-BANDWIDTH-----------------MX=',MX WRITE(7,'(A,I8)')'TOTAL-STORAGE----------------------NH=',NH 500 FORMAT (/5X,'FREEDOM N='*,I5,3X,'SEMI-BANDWI. MX=',I5,3X,* 'STORAGE NH=',I7)RETURNENDC **********************************************SUBROUTINE SK0(SK,MEL,COOR,JR,MA,AE)DIMENSION SK(*),MEL(5,*),COOR(2,*),JR(2,*),MA(*), * AE(4,*),XYZ(2,4),iven(4)COMMON /CMN1/ NP,NE,NM,NRCOMMON /CMN2/ N,MX,NHCOMMON /CMN3/ RF(8),SKE(8,8),NN(8)COMMON /CMN4/ NEE,NMECOMMON /GAUSS/ RSTG(3),H(3)H(1)=0.5555555555555560H(2)=0.8888888888888890H(3)=H(1)RSTG(1)=-0.7745966692414830RSTG(2)=0.00RSTG(3)=-RSTG(1)DO 10 IE=1,NENEE=IENME=MEL(5,IE)DO 75 K=1,4IEK=MEL(K,IE)iven(k)=IEKDO 95 M=1,2JJ=2*(K-1)+MNN(JJ)=JR(M,IEK)95 XYZ(M,K)=COOR(M,IEK)75 CONTINUECALL STIF(XYZ,AE,iven)DO 60 I=1,8DO 60 J=1,8II=NN(I)JJ=NN(J)IF ((JJ.EQ.0).OR.(II.LT.JJ)) GO TO 60JN=MA(II)-(II-JJ)SK(JN)=SK(JN)+SKE(I,J)60 CONTINUE70 CONTINUEwrite(7,1111) ((ske(i,j),j=1,8),i=1,8)1111 format(2x,8f12.2)10 CONTINUERETURNENDC *********************************************SUBROUTINE STIF(XYZ,AE,iven)DIMENSION AE(4,*),DNX(2,4),XYZ(2,*),iven(*),* RJAC(2,2)COMMON /CMN1/ NP,NE,NM,NRCOMMON /CMN2/ N,MX,NHCOMMON /CMN3/ RF(8),SKE(8,8),NN(8)COMMON /CMN4/ NEE,NMECOMMON /GAUSS/ RSTG(3),H(3)DO 40 I=1,8RF(I)=0.00DO 30 J=1,8SKE(I,J)=0.0030 CONTINUE40 CONTINUEE=AE(1,NME)U=AE(2,NME)GAMA=AE(3,NME)D1=E*(1.00-U)/((1.00+U)*(1.00-2.00*U))D2=E*U/((1.00+U)*(1.00-2.00*U))D3=E*0.50/(1.00+U)DO 120 I=1,4II=2*(I-1)I1=II+1I2=II+2DO 115 J=1,4JJ=2*(J-1)J1=JJ+1J2=JJ+2DXX=0DXY=0DYX=0DYY=0DO 99 IS=1,3S=RSTG(IS)SH=H(IS)DO 98 IR=1,3R=RSTG(IR)RH=H(IR)CALL FDNX (XYZ,DNX,DET,R,S,RJAC,iven,NEE) DNIX=DNX(1,I)DNIY=DNX(2,I)DNJX=DNX(1,J)DNJY=DNX(2,J)DXX=DXX+DNIX*DNJX*DET*RH*SHDXY=DXY+DNIX*DNJY*DET*RH*SHDYX=DYX+DNIY*DNJX*DET*RH*SHDYY=DYY+DNIY*DNJY*DET*RH*SH98 CONTINUE99 CONTINUESKE(I1,J1)=DXX*D1+DYY*D3SKE(I2,J2)=DYY*D1+DXX*D3SKE(I1,J2)=DXY*D2+DYX*D3SKE(I2,J1)=DYX*D2+DXY*D3115 CONTINUE120 CONTINUERETURNENDC *********************************************SUBROUTINE CONCR(NCP,R,JR)DIMENSION R(*),JR(2,*),XYZ(2)DO 100 I=1,NCPREAD (4,*) IP,PX,PYXYZ(1)=PXXYZ(2)=PYDO 95 J=1,2L=JR(J,IP)IF(L.EQ.0) GO TO 95R(L)=R(L)+XYZ(J)95 CONTINUE100 CONTINUERETURNENDC **********************************************SUBROUTINE BODYR(NBE,R,MEL,COOR,JR,AE)DIMENSION R(*),MEL(5,*),COOR(2,*),JR(2,*),& AE(4,*),XYZ(2,4),iven(4)COMMON /CMN1/ NP,NE,NM,NRCOMMON /CMN2/ N,MX,NHCOMMON /CMN3/ RF(8),SKE(8,8),NN(8)COMMON /CMN5/ FUN(4),PN(2,4),XJAC(2,2)COMMON /GAUSS/ RSTG(3),H(3)H(1)=1.0H(2)=1.0RSTG(1)=-0.5773502691896260RSTG(2)=-RSTG(1)DO 10 IE=1,NBEDO I=1,8RF(I)=0.00ENDDOc READ(4,*)NEENEE=ieNME=MEL(5,NEE)GAMA=AE(3,NME)DO 75 K=1,4IEK=MEL(K,NEE)iven(k)=iekDO 95 M=1,2JJ=2*(K-1)+MNN(JJ)=JR(M,IEK)95 XYZ(M,K)=COOR(M,IEK)75 CONTINUEDO 99 IS=1,2S=RSTG(IS)SH=H(IS)DO 98 IR=1,2RR=RSTG(IR)RH=H(IR)CALL FUN8 (XYZ,RR,S,DET)DO 30 I=1,4J=2*IRF(J)=RF(J)-FUN(I)*RH*SH*DET*GAMA 30 CONTINUE98 CONTINUE99 CONTINUECALL ASLOAD (R)10 CONTINUERETURNENDC *********************************************SUBROUTINE FACER(iew,NSE,R,MEL,COOR,JR,WG)DIMENSION R(*),MEL(5,*),COOR(2,*),JR(2,*),wg(*)* ,XYZ(2,4),iew(*),PR(2)COMMON /CMN1/ NP,NE,NM,NRCOMMON /CMN2/ N,MX,NHCOMMON /CMN3/ RF(8),SKE(8,8),NN(8)COMMON /CMN4/ NEE,NMECOMMON /GAUSS/ RSTG(3),H(3)H(1)=1.0H(2)=1.0RSTG(1)=-0.5773502691896260RSTG(2)=-RSTG(1)nwf=0nnf=0ir=wg(1)+0.1if(ir.eq.1)nwf=1if(ir.eq.2)nnf=1DO 510 IE=1,NSEDO I=1,8RF(I)=0.00ENDDOnee=iew(ie)DO 575 K=1,4IEK=MEL(K,NEE)DO 595 M=1,2JJ=2*(K-1)+MNN(JJ)=JR(M,IEK)595 XYZ(M,K)=COOR(M,IEK)575 CONTINUEIF(NWF.EQ.1) thenGAMA=WG(2)Z0=WG(3)NSU=WG(4)+0.1CALL SURLOD (NSU,XYZ,PR,Z0,GAMA,1)endifIF(NNF.EQ.1) thenq=WG(2)NSU=WG(4)+0.1do j=1,2PR(J)=qenddoCALL SURLOD (NSU,XYZ,PR,Z0,GAMA,2)endifCALL ASLOAD (R)510 CONTINUERETURNENDC *********************************************SUBROUTINE SURLOD (NSU,XYZ,PR,Z0,GAMA,NSI)DIMENSION XYZ(2,*),RST(3),PR(2),KCRD(4),KFACE(2,4), & FVAL(4),NODES(2),FACT(4)COMMON /CMN1/ NP,NE,NM,NRCOMMON /CMN2/ N,MX,NHCOMMON /CMN3/ RF(8),SKE(8,8),NN(8)COMMON /CMN4/ NEE,NMECOMMON /CMN5/ FUN(4),PN(2,4),XJAC(2,2)COMMON /GAUSS/ RSTG(3),H(3)DATA KCRD/1,1,2,2/DATA KFACE/1, 4,* 2, 3,* 1, 2,* 4, 3/DATA FVAL/-1.00,1.00,-1.00,1.00/ FACT(1)=1.0FACT(2)=-1.0FACT(3)=-1.0FACT(4)=1.0FACTNUS=FACT(NSU)DO I=1,2J=KFACE(I,NSU)NODES(I)=JENDDOIF (NSI.EQ.1) THENDO I=1,2J=NODES(I)Z=Z0-XYZ(2,J)PR(I)=0.00IF (Z.GT.0.00) PR(I)=Z*GAMA ENDDOENDIFML=KCRD(NSU)IF(ML.EQ.1)MM=2IF(ML.EQ.2)MM=1RST(ML)=FVAL(NSU)DO 70 LX=1,2RST(MM)=RSTG(LX)CALL FUN8 (XYZ,RST(1),RST(2),DET)PXYZ=0.00DO 25 I=1,2J=NODES(I)PXYZ=PXYZ+FUN(J)*PR(I)25 CONTINUEA1=XJAC(MM,2)A2=-XJAC(MM,1)30 DO 60 I=1,2J=NODES(I)K2=2*JK1=K2-1Q=PXYZ*FUN(J)*H(LX)*FACTNUSRF(K1)=RF(K1)+Q*A1RF(K2)=RF(K2)+Q*A260 CONTINUE70 CONTINUERETURNENDC *********************************************SUBROUTINE ASLOAD (R)DIMENSION R(*)COMMON /CMN1/ NP,NE,NM,NRCOMMON /CMN3/ RF(8),SKE(8,8),NN(8)DO 20 I=1,8L=NN(I)IF (L.EQ.0) GO TO 20R(L)=R(L)+RF(I)20 CONTINUERETURNENDC ***********************************************SUBROUTINE DECOP (SK,MA)DIMENSION SK(*),MA(*)COMMON /CMN2/ N,MX,NHDO 50 I=2,NL=I-MA(I)+MA(I-1)+1K=I-1L1=L+1IF (L1.GT.K) GO TO 30DO 20 J=L1,KIJ=MA(I)-I+JM=J-MA(J)+MA(J-1)+1IF (L.GT.M) M=LMP=J-1IF (M.GT.MP) GO TO 20DO 10 LP=M,MPIP=MA(I)-I+LPJP=MA(J)-J+LPSK(IJ)=SK(IJ)-SK(IP)*SK(JP)10 CONTINUE20 CONTINUE30 IF (L.GT.K) GO TO 50DO 40 LP=L,KIP=MA(I)-I+LPLPP=MA(LP)SK(IP)=SK(IP)/SK(LPP)II=MA(I)SK(II)=SK(II)-SK(IP)*SK(IP)*SK(LPP) 40 CONTINUE50 CONTINUEENDC *************************************************************SUBROUTINE FOBA (SK,MA,R)DIMENSION SK(*),MA(*),R(*)COMMON /CMN2/ N,MX,NHDO 10 I=2,NL=I-MA(I)+MA(I-1)+1K=I-1IF (L.GT.K) GO TO 10DO 5 LP=L,KIP=MA(I)-I+LPR(I)=R(I)-SK(IP)*R(LP)5 CONTINUE10 CONTINUEDO 20 I=1,NII=MA(I)45 R(I)=R(I)/SK(II)20 CONTINUEDO 30 J1=2,NI=2+N-J1L=I-MA(I)+MA(I-1)+1IF (L.GT.K) GO TO 30DO 25 J=L,KIJ=MA(I)-I+J55 R(J)=R(J)-SK(IJ)*R(I)25 CONTINUE30 CONTINUERETURNENDC *****************************************************************SUBROUTINE STRESS(COOR,MEL,JR,AE,R,STRE)DIMENSION XYZ(2,4),DNX(2,4),AE(4,*),STRE(3,*),& COOR(2,*),MEL(5,*),JR(2,*),RJAC(2,2),SIG(3),& B(3,8),R(*),iven(4)COMMON /CMN1/ NP,NE,NM,NRCOMMON /CMN3/ RF(8),SKE(8,8),NN(8)COMMON /CMN5/ FUN(4),PN(2,4),XJAC(2,2)DO 106 IE=1,NENME=MEL(5,IE)DO 300 K=1,4IEK=MEL(K,IE)DO 310 M=1,2310 XYZ(M,K)=COOR(M,IEK)DO 320 M=1,2JRR=2*(K-1)+M320 NN(JRR)=JR(M,IEK)300 CONTINUEE=AE(1,NME)U=AE(2,NME)D1=E*(1.00-U)/((1.00+U)*(1.00-2.00*U))D2=E*U/((1.00+U)*(1.00-2.00*U))D3=0.50*E/(1.00+U)SS=0.0RR=0.0CALL FDNX (XYZ,DNX,DET,RR,SS,RJAC,iven,IE)DO 30 I=1,4II=2*(I-1)J1=II+1J2=II+2BI=DNX(1,I)CI=DNX(2,I)B(1,J1)=BIB(2,J1)=0.B(3,J1)=CIB(1,J2)=0.B(2,J2)=CIB(3,J2)=BI30 CONTINUEDO 55 II=1,3SIG(II)=0.0055 CONTINUEDO 70 K=1,8NA=NN(K)IF (NA.EQ.0) GO TO 70DO 60 L=1,3SIG(L)=SIG(L)+B(L,K)*R(NA) 60 CONTINUE70 CONTINUESX=D1*SIG(1)+D2*SIG(2)SY=D2*SIG(1)+D1*SIG(2)SXY=D3*SIG(3)STRE(1,IE)=SXSTRE(2,IE)=SYSTRE(3,IE)=SXY106 CONTINUECALL OUTSTRE(NE,STRE)RETURNENDC *********************************************SUBROUTINE FDNX (XYZ,DNX,DET,R,S,RJAC,iven,NEE)DIMENSION XYZ(2,*),DNX(2,*),RJAC(2,2),iven(*)COMMON /CMN5/ FUN(4),PN(2,4),XJAC(2,2)CALL FUN8 (XYZ,R,S,DET)IF (DET.LT.1.0E-5)THENWRITE(7,600) NEE,R,S,detWRITE(7,*) (iven(m),m=1,4)STOPENDIFREC=1.00/DETRJAC(1,1)=REC*XJAC(2,2)RJAC(2,2)=REC*XJAC(1,1)RJAC(2,1)=-REC*XJAC(2,1)RJAC(1,2)=-REC*XJAC(1,2)DO 30 K=1,4DO 20 I=1,2DNX(I,K)=0.DO 25 M=1,2DNX(I,K)=DNX(I,K)+RJAC(I,M)*PN(M,K)25 CONTINUE20 CONTINUE30 CONTINUE600 FORMAT (1X,'ERR0R*** NEGTIVE OR ZERO ' * 'JACOBIAN DETERMINANT FOR '* 'ELEMENT'/'ELE.=',I5,' R=',F10.5,6X,'S=',F10.5, * 'det=',f12.5)RETURNENDC *********************************************SUBROUTINE FUN8 (XYZ,R,S,DET)DIMENSION XYZ(2,*),XI(4),ETA(4)COMMON /CMN5/ FUN(4),PN(2,4),XJAC(2,2)DATA XI/-1.0,1.0,1.0,-1.0/DATA ETA/-1.0,-1.0,1.0,1.0/DO 10 I=1,4G1=(1.0+XI(I)*R)G2=(1.0+ETA(I)*S)FUN(I)=0.25*G1*G2PN(1,I)=0.25*XI(I)*G2PN(2,I)=0.25*ETA(I)*G110 CONTINUEDO 80 I=1,2DO 75 J=1,2DET=0.00DO 70 K=1,4DET=DET+PN(I,K)*XYZ(J,K)70 CONTINUEXJAC(I,J)=DET75 CONTINUE80 CONTINUEDET=XJAC(1,1)*XJAC(2,2)* -XJAC(2,1)*XJAC(1,2)RETURNENDC **********************************************SUBROUTINE OUTDISP(NP,R,JR)DIMENSION R(*),JR(2,*),U(2)WRITE(*,650)WRITE(7,650)DO I=1,NPDO M=1,2L=JR(M,I)IF(L.EQ.0)U(M)=0.0IF(L.GT.0)U(M)=R(L)ENDDOWRITE(*,'(5X,I5,10X,2E14.3)') I,UWRITE(7,'(5X,I5,10X,2E14.3)') I,UENDDO650 FORMAT(/25X,'NODAL DISPLACEMENTS'/8X, * 'NODE',13X,'X-COMP.',8X,'Y-COMP.')RETURNENDC **********************************************SUBROUTINE OUTSTRE(NE,STRE)DIMENSION STRE(3,*),ST(6)WRITE(*,700)WRITE(7,700)DO IE=1,NESX=STRE(1,IE)SY=STRE(2,IE)SXY=STRE(3,IE)ST(1)=SXST(2)=SYST(3)=SXYH1=SX+SYH2=SQRT((SX-SY)*(SX-SY)+4.0*SXY*SXY)ST(4)=(H1+H2)/2.0ST(5)=(H1-H2)/2.0IF(ABS(SXY).LT.1.0E-4)THENIF (SX.GT.SY) ST(6)=0.0IF (SX.LE.SY) ST(6)=90.0ELSEST(6)=ATAN((ST(4)-SX)/SXY)*57.29578ENDIFWRITE(*,'(6X,I4,3X,6F11.3)') IE,STWRITE(7,'(6X,I4,3X,6F11.3)') IE,STENDDO700 FORMAT(/30X,'ELEMENT STRESSES'/5X, *'ELEMENT',5X,'X-STRESS',3X,'Y-STRESS',*2X,'XY-STRESS',1X,'MAX-STRESS',1X,*'MIN-STRESS',4X,'ANGLE'/)RETURNENDC *********************************************。
第九章 平面广义四节点等参元 GQ4

18.24 23.00 23.24 23.06 23.43 23.78 23.02 23.04 23.69 23.67 23.82 23.9
0.2113 0.2209 0.2287 0.2221 0.23337 0.2226 0.222 0.2661 0.2261 0.2393 0.2377 0.2360
式中 N e 为单元 e 的插值函数矩阵 值函数对应的广义形函数形式为
De 为单元 e 的广义自由度向量 一阶广义节点插 y , (i = 1,2,3,4) 0 x2 0 y2 0
1 0 x 0 y N ei = ϕ ei 0 1 0 x 0 1 0 x 0 y N =ϕ 0 1 0 x 0
9.3.3
剪切自锁考查
MacNeal 细长梁问题
弹性模量为 E = 106 泊松比为
计算简图见图 9-3
材料参数选为
ν = 0.3 纯
弯和端部受剪两种工况 计算网格及工况如图 9-3 中(a) 格计算结果列于表 9-3 中
(b)和(c)
不同工况下各种网
0.5 50 0.2 1 工况 1 0.5 50 工况 2
( ) (E )(B )
i T e g
(9-10)
j e g
式中 n g 为单元内高斯点个数 取值
t 表示材料的厚度
下标 g 表示该表达式在高斯点处的
W g 为高斯点积分权系数 具体的数值实现步骤如下
(1) 按照所选用的高斯积分阶次 (2) 按单元节点循环 i. 形成该单元的所有高斯点局部坐标 (ξ i ,η i )
vC
网格 a
ε A (max) ε B (min)
vC
网格 b
ε A (max) ε B (min)
平面分析-等参单元

v1
u2
0 N4
uv23
v3
u4
v4
4(-1,1)
o
1(-1,-1)
f N e e
3(1,1)
2(1,-1)
式中: Ni ——矩形单元的形函数,i=1,2,3,4;
N—e —形函数矩阵; e ——单元节点位移列阵,i ui viT,i=1,2,3,4。
2020/10/14
平面问题有限元分析-等参单元
6 7
8
1 4
1
1
1
1 1 1
1 1 1
1
1 1
vv23 v4
2020/10/14
平面问题有限元分析-等参单元
8
7.1四节点矩形单元位移函数
ue
u
v
N1
0
0 N1
N2 0
0 N2
N3 0
0 N3
N4 0
4
4
u Ni , ui ,v Ni , vi
i 1
i 1
u1
平面问题有限元分析-等参单元
3
6.1四节点矩形单元位移函数
这里引入一个局部坐标系、,这样可以推出比较 简洁的结果。如图所示,取矩形单元的形心o为局部坐标系 的原点,和轴分别与整体坐标轴x和y平行,两坐标系存在
有以下的坐标变换关系
x xo a
y yo b
式中:xo、yo ——矩形形心处坐标。
2020/10/14
平面问题有限元分析-等参单元
11
7.2四节点矩形单元应变与应力矩阵
有了单元的位移模式,就可以利用平面问题的几何方程 求出单元内任意点的应变,将位移代入几何方程,得
1
e B1e
等参单元

等参变换
例二:考察实际单元为矩形单元(2a*2b)情形,定 义如前 (3.10) 式中,(x0,y0)为局部坐标原点,由上式得 (3.11) 重新组合 有 (3.12)
等参变换
将式(3.12)与(3.6)对照,即有 同理可得
这说明矩形单元只是四节点四边形单元的一个特 例,通过这个特例可以加深对实际单元到基本单 元变换的理解。
Ni , x E S D B Ni , x i i 2 1 1 1 Ni , y 2 Ni , y Ni , y 1 1 Ni , x 2
四节点四边形下等参元矩阵
下面求解单元刚矩[K] 目标:四节点四边形单元刚度矩阵[K] 问题:将[K]中的面积微元dxdy用dξ dη 进行代换
(3.29) 其中[K]e可划分成四行四列的子矩阵
K
e
B D B tdxdy
T
K
e
k11 k 21 k31 k41
k12 k22 k32 k42
k13 k23 k33 k43
k14 k24 k34 k44
写成矩阵形式 Ni , x, Ni , x, 其中 x x x, x,
y, Ni , x N y, i, y
y y,
(3.15)
y y,
四节点四边形下等参元矩阵
(3.9)
等参变换
把以参数 ξ 代表的 x方程和 y方程消去 ξ , 则得 x , y 所组成的直线方程 y=kx+b 这表明ξ η 平面上的水平边界经过变换成为了xy平 面上的斜边界,这也是双线性函数的特点体现,即所 以母单元上的四个边都可以通过映射在x y坐标面上 得出一个任意四边形。
最新平面四边形4结点等参有限单元法

有限元程序设计平面四边形4结点等参有限单元法程序设计1、程序功能及特点a.该程序采用四边形4节点等参单元,能解决弹性力学的平面应力应变问题。
b.前处理采用网格自动划分技术,自动生成单元及结点信息。
b.能计算受集中力、自重体力、分布面力和静水压力的作用。
c.计算结点的位移和单元中心点的应力分量及其主应力。
d.后处理采取整体应力磨平求得各个结点的应力分量。
e.算例计算结果与ANSYS计算结果比较,并给出误差分析。
f.程序采用Visual Fortran 5.0编制而成。
2、程序流程及图框图2-1程序流程图图2-2子程序框图其中,各子程序的主要功能为:INPUT――输入原始数据HUAFEN――自动网格划分,形成COOR(2,NP),X,Y的坐标值与单元信息CBAND――形成主元素序号指示矩阵MA(*)SKO――形成整体刚度矩阵[K]CONCR――计算集中力引起的等效结点荷载{R}eBODYR――计算自重体力引起的等效结点荷载{R}eFACER――计算分布面力引起的等效结点荷载{R}eDECOP――支配方程LU三角分解FOBA――LU分解直接解法中的回代过程OUTDISP――输出结点位移分量STRESS――计算单元应力分量OUTSTRE――输出单元应力分量STIF――计算单元刚度矩阵FDNX――计算形函数对整体坐标的导数TiiyNxN⎥⎦⎤⎢⎣⎡∂∂∂∂,=i1,2,3,4。
FUN8――计算形函数及雅可比矩阵[J]SFUN ――应力磨平-单元下的‘K’=NCN‘SCN――应力磨平-单元下的右端项系数‘CN‘SUMSKN――应力磨平-单元下的右端项集成到总体的‘P‘SUMSTRS――应力磨平-单元下的集成到总体的‘K‘GAUSTRSS――高斯消元求磨平后的应力3、输入数据及变量说明当程序开始运行时,按屏幕提示,键入数据文件的名字。
在运行程序之前,根据程序中INPUT需要的数据输入建立一个存放原始数据的文件,这个文件的名字为INDAT.DAT。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变分原理与有限元大作业平面四节点等参单元分析程序;姓名:潘清【学号:SQ完成时间:2011-4-26|一、概述!通常情况下的有限元分析过程是运用可视化分析软件(如ANSYS、ABAQUS、SAP等)进行前处理和后处理,而中间的计算部分一般采用自己编制的程序来运算。
具有较强数值计算和处理能力的Fortran语言是传统有限元计算的首选语言。
随着有限元技术的逐步成熟,它被应用在越来越复杂的问题处理中,但在实际应用中也暴露出一些问题。
有时网格离散化的区域较大,而又限于研究精度的要求,使得划分的网格数目极其庞大,结点数可多达数万个,从而造成计算中要运算的数据量巨大,程序运行的时间较长的弊端,这就延长了问题解决的时间,使得求解效率降低。
因为运行周期长,不利于程序的调试,特别是对于要计算多种运行工况时的情况;同时大数据量处理对计算机的内存和CPU 提出了更高的要求,而在实际应用中,单靠计算机硬件水平的提高来解决问题的能力是有限的。
因此,必须寻找新的编程语言。
随着有限元前后处理的不断发展和完善,以及大型工程分析软件对有限元接口的要求,有限元分析程序不应只满足解题功能,它还应满足软件工程所要求的结构化程序设计条件,能够对存储进行动态分配,以充分利用计算机资源,它还应很容易地与其它软件如CAD 的实体造型,优化设计等接口。
现在可编写工程应用软件的计算机语言较多,其中C语言是一个较为优秀的语言,很容易满足现在有限元分析程序编程的要求。
C语言最初是为操作系统、编译器以及文字处理等编程而发明的。
随着不断完善,它已应用到其它领域,包括工程应用软件的编程。
近年来,C语言已经成为计算机领域最普及的一个编程语言,几乎世界上所有的计算机都装有C的编译器,从PC机到巨型机到超巨型的并行机,C与所有的硬件和操作系统联系在一起。
用C 编写的程序,可移植性极好,几乎不用作多少修改,就可在任何一台装有ANSI、C编译器的计算机上运行。
C既是高级语言,也是低级语言,也就是说,可用它作数值计算,也可用它对计算机存储进行操作。
二、编程思想;本程序采用C语言编程,编制平面四边形四节点等参元程序,用以求解平面结构问题。
程序采用二维等带宽存储整体刚度矩阵,乘大数法引入约束,等带宽高斯消去法求解位移,然后求中间高斯点的应力,最后用绕节点平均法讲单元应力等效到节点上,再将结果写到tecplot文件中。
在有限元程序中,变量数据需赋值的可分为节点信息,单元信息,载荷信息等。
对于一个节点来说,需以下信息:节点编号(整型),节点坐标(实型),节点已知位移(实型),节点载荷(实型),边界条件(实型)等。
同样,对于一个单元来说,需以下信息:单元的节点联接信息(整型),材料信息(弹性模量,泊松比等)(实型)等。
在FORTRAN程序中,以上这些变量混合在一起,很难辨认,使程序的可读性不好,如需要进行单元网络的自适应划分,节点及单元的修改将非常困难。
在进行C语言编译过程中,采用结构struct 使每个节点信息存储在一个结构体数组中,提高程序的可读性,使数据结构更趋于合理。
三、平面四节点等参单元介绍*四节点等参单元实际单元与基本单元的映射关系如图3-1所示(坐标的映射关系为:其位移模式和坐标的映射有相同的插值函数,形函数为:<单元应变矩阵为:`图3-1{}x y xy u x u y u v y x εεεγ⎧⎫∂⎪⎪∂⎧⎫⎪⎪⎪⎪⎪⎪∂==⎨⎬⎨⎬∂⎪⎪⎪⎪⎩⎭⎪⎪∂∂+⎪⎪∂∂⎩⎭上式一般简写为:{{}[]{}B εδ=其中[]B 的子块矩阵为[]i i i i i N x N B y N N y x ⎧⎫∂⎪⎪∂⎪⎪⎪⎪∂=⎨⎬∂⎪⎪⎪⎪∂∂⎪⎪∂∂⎩⎭由于i N 是ε、η的函数,在[]i B 中的x 、y 要按照复合函数来求导,即[]i i i i i i N N N x y x x J N N N x y y y εεεηηη∂∂∂∂∂⎡⎤⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥∂∂∂∂∂⎢⎥⎢⎥⎢⎥⎢⎥==∂∂∂∂∂⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥∂∂∂∂∂⎣⎦⎣⎦⎣⎦⎣⎦!从而有[]1i i i i N N x J N N y εη-∂∂⎡⎤⎡⎤⎢⎥⎢⎥∂∂⎢⎥⎢⎥=∂∂⎢⎥⎢⎥⎢⎥⎢⎥∂∂⎣⎦⎣⎦因此,单元应力矩阵为{}[][]{}D B σδ=单元刚度矩阵为<[][][][]TeAK B D B hdxdy =⎰⎰其中积分采用三点高斯积分,3311,11111(,)()(,)nipiji j iii j i f d d f W f ξηξηωωξηξη--===∑∑∑⎰⎰2nip n =(高斯积分点的总数),i ω和j ω或i W 是加权系数,i ξ和j η是单元内的坐标.。
对于三点高斯积分,高斯积分点的位置:11 5.09.0ξω==,220.0,8.0ξω==,33 5.0ξω==。
!结构刚度矩阵e eK K =∑结构结点荷载列阵e eP P =∑注意,对于上两式中e∑的理解不是简单的叠加而是按照对应的自由度集成。
】总刚平衡方程[]{}{}K P δ=从式上式求出:{}[]{}1K P δ-=*四、有限元分析的模块组织一个典型的有限元分析过程主要包括以下几个步骤: 1) 读输入数据,定义节点及单元数组。
2) 由边界条件计算方程个数,赋值荷载列阵。
3) 读入在带状存储的总刚度矩阵中单元和载荷信息。
4) (5)定义总刚度阵数组。
6) 组装总刚度阵。
7) 解方程组。
其流程图可见下图五、程序变量及函数说明、1、控制信息np:结构节点总数ne:结构离散单元总数nr1,nr2:总的约束的节点数,nr1,x方向;nr2,y方向nd:每个单元的节点数[nf:每个节点的自由度数ld:集中力载荷的个数nm:材料的种类nu1,nu2:非零位移边界条件的节点数,nu1,x方向;nu2,y方向u1,u2:非零位移的大小,u1,x方向;u2,y方向%n=nf*np :结构的节点位移总数ndf=nd*nf :每个单元的节点自由度数2、输入的原始数据x(np):节点的x方向坐标~y(np):节点的y方向坐标me(nd,ne):单元节点的总体编号nrr(nr1+nr2) :约束为零的位移所对应的总体位移编号p(n):载荷向量nu(nu1+nu2):位移载荷《mat(6,nm):材料参数3、程序中的其他标识符LD(n):存放结构刚度阵所以主对角线元素在A(nn)中的序号IS(ndf):单元节点位移和节点力在总体位移阵列和载荷阵列中对应的序号~EK(ndf,ndf):总体坐标系下的单元刚度矩阵A(nn):架构刚度阵下三角变带宽一维压缩存储的数组nn:数组A的元素个数RSTG(3):高斯积分点的值H(3):高斯积分点的加权系数【S(6,ne):各单元的应力分量XJAC(2,2):雅阁比矩阵RJAC(2,2):雅阁比矩阵的逆PN(2,4):4个节点处形函数对局部坐标的导数DNX(2,4):4个节点处形函数对整体坐标的导数)FUN(4):形函数的值,六、计算流程图%七、计算结果与abaqus分析结果的比较1、中间带圆孔平面应力板的分析。
宽40m,长50m,圆孔位于板中心,半径为4m,承受水平方向位移载荷,E=200Pa,3.0=μ,取1t=m。
用abaqus建模离散,并计算。
再讲abaqus离散的节点和单元信息拷贝到本程序的输入文件中,用该程序计算,结果输出成tecplot文件,用tecplot可以查看结果。
与abaqus的计算结果进行比较,位移和应力云图如下(左边是程序计算结果,右边是abaqus结果,下同)::输出节点位移和应力2、纤维增强复合材料平面应力板的分析。
;宽40m ,长50m ,增强纤维位于板中心,纤维半径为8m ,承受水平方向位移载荷,基体材料E=20000Pa ,25.0=μ,纤维材料E=8000Pa ,3.0=μ,取1t =m 。
、3、半无限大含裂纹板的应力分析宽40m ,长60m ,裂纹位于板左侧中间位置,裂纹长10m ,承受竖直方向位移载荷,E=200Pa ,3.0=μ,取1t =m 。
$结果分析比较:通过以上三个算例发现该程序可以用于计算单材料、双材料、带孔、含裂纹等各种平面问题,加载条件可以是加集中力和加位移,因此,该程序的适用范围还是比较广的。
以上三个算例的自编程序所得结果与abaqus分析结果进行比较发现,两者的计算结果很接近,而且自编程序对于孔边应力集中和裂尖应力集中都能很好的表达,说明该程序有很好的精度。
第三个算例在裂尖处数值上有些区别,但总的分布规律还是很吻合的,主要是因为本程序是用四节点等参单元,对于应力的奇异性表达效果还不是很好。
#八、附录·附录一:程序代码#include<>#include<>#include<>~#include<>#include<>float **float_two_array_malloc(int m,int n) ....\n");}/void output() f\t",s[j][i]);fprintf(fp2,"\n");})fclose(fp2);printf("写入完成......\n");}(void tecplot() f\t%.4f\t%.4f\t%.4f\t",x[j]+bl*p[j*2],y[j]+bl*p[j*2+1],p[j*2],p[j*2+1]);for(i=0;i<6;i++){fprintf(fp3,"%.4f\t",ns[i][j]);\}fprintf(fp3,"\n");}for(i=0;i<ne;i++)|{for(j=0;j<nd;j++)fprintf(fp3,"%d\t",me[j][i]+1);fprintf(fp3,"\n");}*fclose(fp3);printf("写入完成......\n");}|void fld() ....\n");}void fis(int ie) ....\n");@void cholesky(float*A) ....\n");}void stress(int ie)....\n");}void main(){int i,j,k;float *A;input();fld();A=float_one_array_malloc(nn);for(i=0;i<nn;i++) A[i]=0; ....\n");fr(A);cholesky(A);for(j=0;j<ne;j++){stress(j);}printf("求单元应力完成......\n");stress_average();output();tecplot();}附录二:输入的原始数据的格式:9 4 3 1 4 2 3 1 3 0 /依次为np,ne,nr1,nr2,nd,nf,ld,nm,nu1,u1,nu2,u2 -20 15 //各节点的x,y坐标-20 0-20 -150 150 00 -1520 1520 020 -151 2 5 4 //各单元节点的整体编号2 3 6 54 5 8 75 6 9 81 2 3 //x方向约束为零的位移对应的节点编号3 //y方向约束为零的位移对应的节点编号12 10 //集中力载荷14 4016 101 4 200 //材料信息——起、止单元号,E,MU 7 8 9 //位移非零的节点号。