平面杆繫結構有限元編制程式

2022-08-24 12:24:06 字數 5125 閱讀 6072

斜腿剛構計算

一、程式編制說明

本程式全部採用visual basic語言編寫,可以進行簡單杆繫結構的受力分析,能夠精確計算出結構體系的結點位移和內力,並採用文字方式輸入和輸出資料,方便實用。例子是針對斜腿剛構的計算,全橋共劃分為6個單元,計算簡圖如下。

二、子程式劃分

data:資料的準備與輸入

zg:總體剛體矩陣

dg:單元剛度矩陣

translate:座標轉換矩陣

result:杆端位移與杆端力計算

mult:矩陣相乘

mult1:矩陣與向量相乘

gas:高斯消元法

boundary:邊界條件

load:外荷載

三、識別符號說明:

1、整數型變數

nn:結點總個數

ele:單元總個數

gd:固定支座個數

jz:鉸支座個數

zc:支承個數

ms:系統總自由度數目(總剛階數)

pn:荷載作用的結點數(結點荷載個數)

2、一維陣列變數

ei:桿件抗彎剛度

ea:桿件抗拉剛度

cn:cos值

sn:sin值

ln:單元左端結點標號陣列

rn:單元右端結點標號陣列

fx:水平方向結點外力

fy:垂直方向結點外力

moment:結點彎矩

z:總體座標系下結點位移儲存

p:總體座標系下結點力儲存

3、二維陣列變數

bke:區域性座標單元剛度矩陣儲存

tke:體系總體剛度矩陣儲存

t:座標轉換矩陣儲存

四、源程式**

dim i, j as double

dim nn as integer, ele as integer, ms as integer

dim gd as integer, jz as integer, zc as integer, pn as integer

dim lrn(1 to 12, 1 to 12) as double, l(1 to 7) as double, g(1 to 21, 1 to 21) as double

dim ea(1 to 7) as double, ei(1 to 7) as double, cn as double, sn as double

dim x(1 to 7) as double, y(1 to 7) as double, p(1 to 21) as double

dim tke(1 to 21, 1 to 21) as double, tke1(1 to 21, 1 to 21) as double

dim bke(1 to 6, 1 to 6) as double, t(1 to 6, 1 to 6) as double

dim tz(1 to 6, 1 to 6) as double, z(1 to 21) as double

dim ln(1 to 6) as integer, rn(1 to 6) as integer

dim fx(1 to 7) as double, fy(1 to 7) as double, moment(1 to 7) as double

private sub form_click()

open "e:\homework\" for input as #1

open "e:\homework\" for output as #2

call data '輸入資料

call zg '總剛度矩陣

call boundary ' 輸入邊界條件

call load '輸入荷載

call result '計算結果(杆端力)

close #1

close #2

end sub

public sub data() '資料的準備與輸入

print #2, "平面杆系有限元程式——斜腿剛構計算"

print #2

print #2, "原始資料的輸入"

print #2,

print #2, "結點數"; spc(3); "單元數"; spc(3); "固定支座數"; spc(3); "鉸支座數"; spc(3); "支承數"; spc(3); "結點荷載數"; spc(3); "系統總自由度數"

input #1, nn, gd, jz, zc, pn

ms = 3 * nn: ele = nn - 1

print #2, nn; spc(6); ele; spc(6); gd; spc(6); jz; spc(6); zc; spc(6); pn; spc(6); ms

print #2,

print #2

print #2, "結點座標的輸入"

print #2,

print #2, "結點"; spc(3); "x"; spc(6); "y"; spc(3); "單位:公尺"

for i = 1 to nn

input #1, i, x(i), y(i)

print #2, i; spc(3); x(i); spc(6); y(i)

next i

print #2,

print #2

print #2, "桿件相關資訊的輸入"

print #2,

print #2, "桿件號"; spc(3); "左結點號"; spc(3); "右結點號"; spc(3); "抗彎剛度"; spc(3); "抗拉剛度"; spc(3); "桿件長度"; spc(3); "e=2.06e+11n/m2"

for i = 1 to ele

input #1, i, ln(i), rn(i), ei(i), ea(i)

next i

for i = 1 to ele

l(i) = sqr((y(rn(i)) - y(ln(i))) ^ 2 + (x(rn(i)) - x(ln(i))) ^ 2)

print #2, i; spc(8); ln(i); spc(8); rn(i); spc(8); format(ei(i), "0.000e+00"); spc(8); format(ea(i), "0.000e+00"); spc(8); (format(l(i), "0.

000"))

next i

'輸入結點編號

lrn(1, 1) = 3#: lrn(1, 2) = 3#: lrn(1, 3) = 4#

lrn(2, 1) = 1#: lrn(2, 2) = 2#: lrn(2, 3) = 3#

lrn(1, 4) = 5#: lrn(1, 5) = 7#: lrn(1, 6) = 6#

lrn(2, 4) = 4#: lrn(2, 5) = 5#: lrn(2, 6) = 5#

print #2,

print #2

print #2, "輸入結點荷載"

print #2,

print #2, "結點號"; spc(3); "fx"; spc(4); "fy"; spc(4); "moment"; spc(4); "單位:n"

for i = 1 to nn

input #1, i, fx(i), fy(i), moment(i)

next i

for i = 1 to nn

print #2, i; spc(3); format(fx(i), "0.0e+"); spc(4); format(fy(i), "0.0e+"); spc(4); format(moment(i), "0.

0e+")

next i

print #2,

print #2

print #2, "輸入約束條件"

end sub

public sub dg(k) '形成單元剛度矩陣

'for k = 1 to ele

for i = 1 to 6

for j = 1 to 6

bke(i, j) = 0#

next j

next i

bke(1, 1) = ea(k) / l(k)

bke(2, 1) = 0#

bke(2, 2) = 12 * ei(k) / l(k) * l(k) * l(k)

bke(3, 1) = 0#

bke(3, 2) = 6 * ei(k) / l(k) * l(k)

bke(3, 3) = 4 * ei(k) / l(k)

bke(4, 1) = -ea(k) / l(k)

bke(4, 2) = 0#

bke(4, 3) = 0#

bke(4, 4) = ea(k) / l(k)

bke(5, 1) = 0#

bke(5, 2) = -12 * ei(k) / l(k) * l(k) * l(k)

bke(5, 3) = -6 * ei(k) / l(k) * l(k)

bke(5, 4) = 0#

bke(5, 5) = 12 * ei(k) / l(k) * l(k) * l(k)

bke(6, 1) = 0#

bke(6, 2) = 6 * ei(k) / l(k) * l(k)

bke(6, 3) = 2 * ei(k) / l(k)

bke(6, 4) = 0#

bke(6, 5) = -6 * ei(k) / l(k) * l(k)

bke(6, 6) = 4 * ei(k) / l(k)

for i = 1 to 6

for j = 1 to 6

bke(i, j) = bke(j, i)

next j

next i

'print #2, k, "單剛"

' for i = 1 to ele

' for j = 1 to ele

' print #2, (format(bke(i, j), "0.000")); spc(2);

' next j

' print #2,

' next i

' next k

end sub

public sub translate(k) '形成座標變換矩陣

' for k = 1 to ele

cn = (x(rn(k)) - x(ln(k))) / l(k)

有限元第五章杆繫結構的有限元法

5.1 引言 杆繫結構是工程中應用較為廣泛的結構體系,包括平面或空間形式的梁 桁架 剛架 拱等。其組成形式雖然複雜多樣,但用計算機進行分析時卻較為簡單。杆繫結構中的每個桿件都是乙個明顯的單元。桿件的兩個端點自然形成有限元法的節點,桿件與桿件之間則用節點相連線。顯然,只要建立起桿件兩端位移與杆端力之間...

杆繫結構靜力學分析正

有限元ansys上機 實驗報告 學院 機械工程學院 班級 09機設 姓名 郭志良 學號 2009111145 指導老師 胡開群 實驗名稱 杆繫結構靜力學分析 目錄1 實驗目的 2 實驗原理 3 實驗儀器裝置 4 實驗內容 5 實驗報告 6 實驗體會 一 實驗目的 1 熟悉有限元分析的基本原理和基本方...

地月繫結構關係以及月相變化原因

達根 摘要 月球與地球是兩個關係最為密切的天體。正確認識地月系的結構關係,是人類最重要的天文科學任務。由於整體研究方法之下,可以發現目前關於地月系的結構關係的天文知識是不盡合理的,所以我們這裡提出更改的要求。事實上,地月系中的地球與月球,應該是一對雙星,而且是地球在圍繞月球轉,以及月亮月相的圓缺變化...