平面三角形3节点有限元程序.docx

上传人:b****6 文档编号:8762333 上传时间:2023-02-01 格式:DOCX 页数:23 大小:93.08KB
下载 相关 举报
平面三角形3节点有限元程序.docx_第1页
第1页 / 共23页
平面三角形3节点有限元程序.docx_第2页
第2页 / 共23页
平面三角形3节点有限元程序.docx_第3页
第3页 / 共23页
平面三角形3节点有限元程序.docx_第4页
第4页 / 共23页
平面三角形3节点有限元程序.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

平面三角形3节点有限元程序.docx

《平面三角形3节点有限元程序.docx》由会员分享,可在线阅读,更多相关《平面三角形3节点有限元程序.docx(23页珍藏版)》请在冰豆网上搜索。

平面三角形3节点有限元程序.docx

平面三角形3节点有限元程序

 

平面三角形3结点有限元程序

1、程序名:

FEMT3.FOR,FEMT3.EXE

2、程序功能

本程序能计算弹性力学的平面应力问题和平面应变问题;能考虑自重和结点集中力两种

荷载的作用,在计算自重时y轴取垂直向上为正;能处理非零已知位移,如支座沉降的作用。

主要输出的内容包括:

结点位移、单元应力、主应力、第一主应力与x轴的夹角以及约束结

点的支座反力。

程序采用VisualFortran5.0编制而成,输入数据全部采用自由格式。

3、程序流程及框图

 

 

图1-1程序流程图

图1-2程序框图

其中,各子程序的功能如下:

INPUT——输入结点坐标、单元信息和材料参数;

MR——形成结点自由度序号矩阵;

FORMMA——形成指标矩阵MA(N)并调用其他功能子程序,相当于主控程序;

DIV——取出单元的3个结点号码和该单元的材料号并计算单元的bi,ci等;

MGK——形成整体劲度矩阵并按一维存放在SK(NH)中;

LOAD——形成整体结点荷载列阵F;

OUTPUT——输出结点位移或结点荷载;

TREAT——由于有非零已知位移,对K和F进行处理;

DECOMP——整体劲度矩阵的分解运算;

FOBA——前代、回代求出未知结点位移δ;

ERFAC——计算约束结点的支座反力;

KRS——计算单元劲度矩阵中的子块Krs。

4、输入数据及变量说明

当程序开始运行时,按屏幕提示,键入数据文件的名字。

在运行程序之前,必须根据程序中输入要求建立一个存放原始数据的文件,这个

文件的名字由少于8个字符或数字组成。

数据文件包括如下内容:

⑴ 总控信息,共一条,9个数据

NP,NE,NM,NR,NI,NL,NG,ND,NC

NP——结点总数;

NE——单元总数;

NM——材料类型总数;

NR——约束结点总数;

NI——问题类型标识,0为平面应力问题,1为平面应变问题;

NL——受荷载作用的结点的数目;

NG——考虑自重作用为1,不计自重为0;

ND——非零已知位移结点的数目;

NC——要计算支座约束反力的结点数目。

⑵ 材料信息,共NM条,每条依次输入

EO,VO,W,t

EO——弹性模量(kN/m2);

VO——泊松比;

W——材料容重(kN/m3);

t——单元厚度(m)。

这些信息都存放在数组AE(4,NM)中。

⑶ 坐标信息,共NP条,每条依次输入

IP,X,Y

IP——结点号;

X,Y——分别为结点的x坐标和y坐标。

坐标信息存放在数组X(2,NP)中。

⑷ 单元信息,共NE条,每条依次输入

JE,L,Io,Jo,Mo

JE——单元号;

L——为该单元的材料类型号。

Io,Jo,Mo——分别为该单元i,j,m的整体编码。

单元信息存放在数组MEO(4,NE)中。

⑸ 约束信息共NR条,每条依次输入一个数

××

IP

IP——结点号;

Ix,Iy——分别为该结点的约束情况,如果方向受约束时填0,如果自由则填1。

⑹ 荷载信息,共NL条,每条依次输入y

IP,Fx,Fy

IP——结点号;

Fx,Fy——分别为该结点的x,y方向的荷载分量(kN)。

结点号存放在数组NF(NL)中,结点荷载分量存放在数组FV(2,NL)中。

⑺ 若ND>0,输入非零已知位移信息,共ND条,每条依次输入

IP,ux,uy

IP——结点号;

ux,uy——分别为该结点x,y方向已知位移分量(m),若其中某方向为自由,则其相应分量为0。

结点号存放在数NDI(ND)中,已知位移分量存放在数组DV(2,ND)中。

⑻ 支座反力信息,共NC条,每条依次输入

IP,M1,M2,M3,M4

IP——支座结点号;

M1,M2,M3,M4——为与该支座结点相关的单元号,若不足4个,则用0补充。

支座结点号存放在数组NCI(NC)中,相关单元号存放在数组NCE(4,NC)中。

以上数据须按如上顺序存放在数据文件中。

除此之外,程序中还用到其他一些主要变量和数组,说明如下:

N——结构自由度总数;

NH——按一维存贮的整体劲度矩阵的总容量;

NX——最大半带宽;

SK(10000)——维存贮的劲度矩阵;

R(1000)——开始存放等效结点荷载,求解方程以后,用来存放结点位移;

B(6)——存放单元应力σx,σy,τxy,σ1,σ2,α;

MA(1000)——主元素序号指标矩阵;

JR(2,500)——结点自由度序号矩阵;

ME(3)——存放单元结点i,j,m的整体编码;

NN(6)——单元结点自由度序号;

BI(3),CI(3)——单元劲度矩阵计算公式中的bi,bj,bm和ci,cj,cm;

S——三角形单元的面积;

H11,H12,H21,H22——单元劲度矩阵中子块Krs的4个元素。

5、算例

一个正方形弹性体,厚度为1m,四边受单位均布法向力作用,由于对称性,取其1/4进行计算,其有限元网格如图2-3所示,设

,不考虑自重。

该问题的精确解应力为

=1

=1

=0。

图1-3有限元网格

(1)输入文件数据

641503005

2000.00.00.01.0

10.02.0

20.01.0

31.01.0

40.00.0

51.00.0

62.00.0

11312

21245

31325

41563

101

201

400

510

610

1-0.5-0.5

3-1.0-1.0

6-0.5-0.5

11000

21230

42000

52340

64000

(2)输出文件结果

NODALDISPLACEMENTS

NODEX-COMP.Y-COMP.

10.00000E+00-0.10000E-02

20.00000E+00-0.50000E-03

3-0.50000E-03-0.50000E-03

40.00000E+000.00000E+00

5-0.50000E-030.00000E+00

6-0.10000E-020.00000E+00

ELEMENTSTRESSES

ELEMENTX-STRESSY-STRESSXY-STRESSMAX-STRESSMIN-STRESSANGLE

1-1.000-1.0000.000-1.000-1.00090.000

2-1.000-1.0000.000-1.000-1.00090.000

3-1.000-1.0000.000-1.000-1.00090.000

4-1.000-1.0000.000-1.000-1.00090.000

NODESTRESSES

NODEX-STRESSY-STRESSXY-STRESSMAX-STRESSMIN-STRESSANGLE

1-1.000-1.0000.000-1.000-1.00090.000

2-1.000-1.0000.000-1.000-1.00090.000

3-1.000-1.0000.000-1.000-1.00090.000

4-1.000-1.0000.000-1.000-1.00090.000

5-1.000-1.0000.000-1.000-1.00090.000

6-1.000-1.0000.000-1.000-1.00090.000

NODALREACTIONS

NODEX-COMPY-COMP

10.0000.000

21.0000.000

40.5000.500

50.0001.000

60.0000.000

6、源程序

CFINITEELEMENTPROGRAMFORTWODIMENSIONAL

CTRIANGLEELEMENT

C

DIMENSIONK(800000),COOR(2,3000),AE(4,11),

*MEL(5,2000),MA(6000)

CHARACTER*32dat

COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC

WRITE(*,300)

300FORMAT(///''

*':

****'/'+PLEASEINPUTFILENAMEOFDATA')

READ(*,*)data

OPEN(4,FILE=data,STATUS='OLD')

OPEN(7,FILE='OUT',STATUS='UNKNOWN')

READ(4,*)NP,NE,NM,NR,NI,NL,NG,ND,NC

CWRITE(*,400)NP,NE,NM,NR,NI,NL,NG,ND,NC

CWRITE(7,400)NP,NE,NM,NR,NI,NL,NG,ND,NC

CALLINPUT(JR,COOR,MEL,AE)

CALLCBAND(MA,JR,MEL)

CALLSK0(SK,R,COOR,MEL,MA,JR,AE)

CALLLOAD(COOR,MEL,R,JR,AE)

IF(ND.GT.0)CALLTREAT(SK,MA,JR,R)

CALLDECOMP(SK,MA)

CALLFOBA(SK,MA,R)

WRITE(*,650)

WRITE(7,650)

CALLOUTPUT(JR,R)

WRITE(*,700)

WRITE(7,700)

CALLCES(COOR,MEL,JR,R,AE)

IF(NC.GT.0)callERFAC(COOR,MEL,JR,R,AE)

400FORMAT(/2X,'NP=',I3,2X,'NE=',I3,2X,'NM='

*,I3,2X,'NR=',I3,2X,'NI='I3,2X,'NL=',I3,2X,

*'NG=',I3,2X,'ND=',I3,2X,'NC=',I3)

500FORMAT(1X,'TOTALDEGREESOFFREEDOMN=',

*I4,1X,'TOTAL-STORAGE','NH=',I5,1X,

*'MAX-SEMI-BANDWIDTHMX=',I3)

550FORMAT(/20X,'TOTALSTORAGEIS

*GREATERTHAN50000')

600FORMAT(30X,'NODALFORCES'/8X,'NODE',

*11X,'X-COMP.',14X,'Y-COMP.')

650FORMAT(/30X,'NODALDISPLACEMENTS'/8X,

*'NODE',13X,'X-COMP.',12X,'Y-COMP.')

700FORMAT(/30X,'ELEMENTSTRESSES'/5X,

*'ELEMENT',5X,'X-STRESS',3X,'Y-STRESS',

*2X,'XY-STRESS',1X,'MAX-STRESS',1X,

*'MIN-STRESS',6X,'ANGLE'/)

STOP

END

C*********************************************

SUBROUTINEKRS(BR,BS,CR,CS)

COMMON/CB/EO,VO,W,T,A,H11,H12,H21,H22

*,ME(3),BI(3),CI(3)

ET=EO*T/(1.0-VO*VO)/A/4.0

V=(1.0-VO)/2.0

H11=ET*(BR*BS+V*CR*CS)

H12=ET*(VO*BR*CS+V*BS*CR)

H21=ET*(VO*CR*BS+V*BR*CS)

H22=ET*(CR*CS+V*BR*BS)

RETURN

END

C*********************************************

SUBROUTINEINPUT(JR,COOR,MEL,AE)

DIMENSIONJR(2,*),COOR(2,*),AE(4,*),MEL(3,*)

COMMON/CA/NP,NE,NM,NR

COMMON/CC/N,MX,NH

DO70I=1,NP

READ(4,*)IP,X,Y

COOR(1,IP)=X

COOR(2,IP)=Y

70CONTINUE

DO11J=1,NE

READ(4,*)NEE,NME,(MEL(I,NEE),I=1,3)

MEL(3,NEE)=NME

11CONTINUE

DO10I=1,NP

DO10J=1,2

10JR(J,I)=1

DO20I=1,NR

READ(4,*)IP,IX,IY

JR(1,IP)=IX

JR(2,IP)=IY

20CONTINUE

N=0

DO30I=1,NP

DO30J=1,2

IF(JR(J,I))30,30,25

25N=N+1

JR(J,I)=N

30CONTINUE

DO55J=1,NM

READ(4,*)jj,(AE(I,jj),I=1,4)

CWRITE(*,910)jj,(AE(I,jj),I=1,4)

IF(NI.eq.1)then

AE(1,jj)=AE(1,jj)/(1.0-AE(2,jj)*AE(2,jj))

AE(2,jj)=AE(2,jj)/(1.0-AE(2,jj))

endif

55CONTINUE

910FORMAT(/20X,'MATERIALPROPERTIES'/(3X,I5,4(1x,E8.3)))

RETURN

END

C**********************************************

SUBROUTINECBAND(MA,JR,MEL)

DIMENSIONMA(*),JR(2,*),MEL(3,*),NN(6)

COMMON/CA/NP,NE,NM,NR

COMMON/CC/N,MX,NH

DO65I=1,N

65MA(I)=0

DO90IE=1,NE

DO75K=1,3

IEK=MEL(K,IE)

DO95M=1,2

JJ=2*(K-1)+M

NN(JJ)=JR(M,IEK)

95CONTINUE

75CONTINUE

L=N

DO80I=1,6

NNI=NN(I)

IF(NNI.EQ.0)GOTO80

IF(NNI.LT.L)L=NNI

80CONTINUE

DO85M=1,6

JP=NN(M)

IF(JP.EQ.0)GOTO85

JPL=JP-L+1

IF(JPL.GT.MA(JP))MA(JP)=JPL

85CONTINUE

90CONTINUE

MX=0

MA

(1)=1

DO10I=2,N

IF(MA(I).GT.MX)MX=MA(I)

MA(I)=MA(I)+MA(I-1)

10CONTINUE

NH=MA(N)

WRITE(*,500)N,MX,NH

WRITE(7,500)N,MX,NH

500FORMAT(/5X,'FREEDOMN='

*,I5,3X,'SEMI-BANDWI.MX=',I5,3X,

*'STORAGENH=',I7)

RETURN

END

C***********************************************

SUBROUTINESK0(SK,R,COOR,MEL,MA,JR,AE)

DIMENSIONAE(4,*),COOR(2,*),MEL(3,*),JR(2,*),R(*),

*MA(*),SK(*),SKE(6,6),NN(6)

COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC

COMMON/CB/EO,VO,W,T,A,H11,H12,H21,H22,

*ME(3),BI(3),CI(3)

COMMON/CC/N,NH

DO10I=1,NH

10SK(I)=0.0

DO70IE=1,NE

CALLDIV(IE,COOR,MEL,AE)

DO30I=1,3

DO30J=1,3

CALLKRS(BI(I),BI(J),CI(I),CI(J))

SKE(2*I-1,2*J-1)=H11

SKE(2*I-1,2*J)=H12

SKE(2*I,2*J-1)=H21

SKE(2*I,2*J)=H22

30CONTINUE

DO40I=1,3

J2=ME(I)

DO40J=1,2

J3=2*(I-1)+J

NN(J3)=JR(J,J2)

40CONTINUE

DO60I=1,6

DO60J=1,6

IF(NN(J).EQ.0.OR.NN(I).LT.NN(J))GOTO60

JJ=NN(I)

JK=NN(J)

JL=MA(JJ)

JM=JJ-JK

JN=JL-JM

SK(JN)=SK(JN)+SKE(I,J)

60CONTINUE

70CONTINUE

cWRITE(0,500)(SK(I),I=1,20)

500FORMAT(/10X,'SK='/(6F12.5))

RETURN

END

C**********************************************

SUBROUTINELOAD(COOR,MEL,R,JR,AE)

DIMENSIONAE(4,*),COOR(2,*),MEL(3,*),R(*),JR(2,*),

*NF(50),FV(2,50)

COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC

COMMON/CB/EO,VO,W,T,A,A1(4),ME(3),BB(6)

COMMON/CC/N,NH

DO10I=1,N

10R(I)=0.0

IF(NG)70,70,30

30DO60IE=1,NE

CALLDIV(IE,COOR,MEL,AE)

DO50I=1,3

J2=ME(I)

J3=JR(2,J2)

IF(J3)50,50,40

40R(J3)=R(J3)-T*W*A/3.0

50CONTINUE

60CONTINUE

70IF(NL)110,110,80

80READ(4,*)(NF(I),I=1,NL)

READ(4,*)((FV(I,J),I=1,2),J=1,NL)

CWRITE(*,500)(NF(I),I=1,NL)

CWRITE(7,500)(NF(I),I=1,NL)

CWRITE(*,600)((FV(I,J),I=1,2),J=1,NL)

CWRITE(7,600)((FV(I,J),I=1,2),J=1,NL)

DO100I=1,NL

JJ=NF(I)

J=JR(1,JJ)

M=JR(2,JJ)

IF(J.GT.0)R(J)=R(J)+FV(1,I)

IF(M.GT.0)R(M)=R(M)+FV(2,I)

100CONTINUE

110RETURN

500FORMAT(/20X,'NODESOFAPPLIEDLOAD***NF='

*/(1X,10I8))

600FORMAT(/30X,'LUMPED-LOADS***FV='

*/(5X,5F15.3))

END

C*********************************************

SUBROUTINETREAT(SK,MA,JR,R)

DIMENSIONSK(*),MA(*),NDI(75),DV(2,75),JR(2,*),R(*)

COMMON/CA/NP,NE,NM,NR,NI,NL,NG,ND,NC

COMMON/CC/N,NH

READ(4,*)(NDI(J),J=1,ND)

READ(4,*)((DV(I,J),I=1,2),J=1,ND)

CWRITE(*,500)(NDI(J),J=1,ND)

CWRITE(7,500)(NDI(J),J=1,ND)

CWRITE(*,550)((DV(I,J),I=1,2),J=1,ND)

CWRITE(7,550)((DV(I,J),I=1,2),J=1,ND)

DO20I=1,ND

DO20J=1,2

IF(DV(J,I))10,20,10

10JJ=NDI(I)

L=JR(J,JJ)

JN=MA(L)

SK(JN)=1.0E30

R(L)=DV(J,I)*1.0E30

20CONTINUE

500FORMAT(/25X,'NODENO.**NDI='/(1X,10I8))

550FORMAT(/25X,'DISPLACEMENT-VALUES**DV='/

*(10X,6F10.6))

RETURN

END

C*********************************************

SUBROUTINEDECOMP(SK,MA)

DIMENSIONSK(*),MA(*)

COMMON/CC/N,NH

DO50I=2,N

L=I-MA(I)+MA(I-1)+1

K=I-1

L1=L+1

IF(L1.GT.K)GOTO30

DO20J=L1,K

IJ=MA(I)-I+J

M=J-MA(J)+MA(J-1)+1

IF(L.GT.M)M=L

MP=J-1

IF(M.GT.MP)GOTO20

DO10LP=M,MP

IP=MA(I)-I+LP

JP=MA(J)-J+LP

SK(IJ)=SK(IJ)-SK(IP)*SK(JP)

10CONTINU

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1