平面三角形三结点有限元计算程序VB实现_第1页
平面三角形三结点有限元计算程序VB实现_第2页
平面三角形三结点有限元计算程序VB实现_第3页
平面三角形三结点有限元计算程序VB实现_第4页
平面三角形三结点有限元计算程序VB实现_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、先附上本人的一次调试试验所得 原数据写在了以下窗口里 计算结果,以下数据生成在一个 .dat 文件里 " 结点个数 NJ 为 10"" 单元个数 NE 为 9"" 问题类型代码 L * M为 0"" 弹性模量 EO 为 1"" 泊松比 AMU" 为"" 结点坐标数组为为 "" 结点 1","(0,0"" 结点 2","(2,0"" 结点 3","(4,0&q

2、uot;" 结点 4","(6,0"" 结点 5","(1,2"" 结点 6","(3,2"" 结点 7","(5,2"" 结点 8","(2,4"" 结点 9","(4,4"" 结点 10","(3,6"" 单元结点码数组 (局部 i,j,k 为 "" 单元 1","

3、(1,2,5"" 单元 2","(2,3,6"" 单元 3","(3,4,7"" 单元 4","(3,7,6"" 单元 5","(2,6,5"" 单元 6","(5,6,8"" 单元 7","(6,7,9"" 单元 8","(6,9,8"" 单元 9","(8,9,10"

4、;" 支杆位置数组为 ""1,2,7,8"" 结点载荷大小及位置数组 ""0,19/10,20"" 结点位移数组为 (x方向 ,y 方向 "" 结点 1","(0,0"" 结点" 结点" 结点 4","(0,0"" 结点" 结点" 结点" 结点" 结点" 结点" "窗口设置及源代码如下 Private Sub Comm

5、and1_Click(ext <> "" And Text8.Text <> "" And <> "" And Text11.Text <> "" And Text12.Text <> "" AndStatic ijj& '用来将文件名字进行区分ReDim ajz#(1 To nj, 1 To 2, jm&(1 To ne, 1 To 3, ZgK#(1 To nj, 1 To nj, 1 To 2, 1 To

6、2, Pj#(1 To nj, 1 To 2, ui#(1 To nj, 1 To 2, YLZ#(1 To ne, 1 To 3, 1 To 3, 1 To 2, YL#(1 To ne, 1 To 3temp1 = Split(temp, "/"For i = 0 To UBound(temp1temp2 = Split(temp1(i, ","For j = 0 To 1ajz(i + 1, j + 1 = Val(temp2(jNext jNext itemp1 = Split(temp, "/"For i = 0 To UB

7、ound(temp1temp2 = Split(temp1(i, ","For j = 0 To 2jm(i + 1, j + 1 = Val(temp2(jNext jNext i'ZgK(1, 1, 1, 1 = 1111'ZgK(1, 1, 1, 2 = 1112'ZgK(1, 1, 2, 1 = 1121'ZgK(1, 1, 2, 2 = 1122'ZgK(1, 2, 1, 1 = 1211'ZgK(1, 2, 1, 2 = 1212'ZgK(1, 2, 2, 1 = 1221'ZgK(1, 2, 2,

8、 2 = 1222ZgK(1, 2, 2, 1, ZgK(1, 2, 2, 2'Next j'Next i'For i = 1 To ne' For j = 1 To 3' Print jm(i, j;'Next j'Next i'Print temp 'ttttttttttttttttttttttttttttttttttemp1 = Split(temp, "/"'Print temp1(0, temp1(1 'ttttttttttttttttttttttttttttttttttttt

9、ttttttttt'Print UBound(temp1 'ttttttttttttttttttttttttttttttttttttttttttt 'temp2 = Split(temp1(0, "," 'ttttttttttttttttttttttttttt'Print temp2(0 & temp2(1 'ttttttttttttttttttttttttttttttttFor j = 0 To UBound(temp1temp2 = Split(temp1(j, ","'Print te

10、mp2(1 'ttttttttttttttttttttttttttttttttttttttttttttttttttttttt pji = Int(Val(temp2(1 + 1 / 2'Print VarType(temp2(1 'tttttttttttttttttttttttttttttttttt pjj = modd(temp2(1Pj(pji, pjj = Val(temp2(0Next jCall ZhjZ(Pj(, ne, ALOUt, ajz(, jm(' For i = 1 To nj 'tttttttttttttttttttttttttt

11、tttttttttt'For j = 1 To 2 'tttttttttttttttttttttttttttttttttttttt'Print Pj(i, j; 'ttttttttttttttttttttttttttttttttttttttttt' Next j 'ttttttttttttttttttttttttttttttttttttttttttttttttt' Next i 'ttttttttttttttttttttttttttttttttttttttttttttttt'Call Gauss(Zgk(, Pj(, ui

12、(, nj'Dim i&, j&, k&, m#'For i = 1 To nj'End SubLy = UBound(temp1 + 1 '零元个数nS = UBound(ajz, 1 * 2 - LyReDim SPj#(1 To nS, SZgK#(1 To nS, 1 To nSFor i = 0 To UBound(temp1ui(Int(temp1(i + 1 / 2, modd(temp1(i = 0Next iCall XZgK(ZgK(, ui(, SZgK(, LyCall Xui(Pj(, ui(, SPj('

13、;For i = 1 To nj 'ttttttttttttttttttttttttttttttt'For j = 1 To 2 'ttttttttttttttttttttttttttttttt'Picture1.Print ui(i, j; 'tttttttttttttttttttttttttttttttttttt' Next j 'ttttttttttttttttttttttttttttttttttttt'Next i 'tttttttttttttttttttttttttttttttttttttttttttttt

14、9;For i = 1 To nS 'tttttttttttttttttttttttttttttttttttttttttttttttttttttt 'Picture1.Print SPj(i; 'ttttttttttttttttttttttttttttttttttt'Next i 'ttttttttttttttttttttttttttttttttttttttttttt'For i = 1 To nS 'ttttttttttttttttttttttttttttttttttt'For k = 1 To nS 'tttttttt

15、ttttttttttttttttttttttttttttttt'Picture1.Print Format(SZgK(i, k * 32 / 3, "0" 'tttttttttttttttttttttttttttttttttt 'Next k 'ttttttttttttttttttttttttttttttttttttttttttttttttttttt'Next i 'tttttttttttttttttttttttttttttttttttttttttttttttCall Gauss(SPj(, SZgK(, ui(' F

16、or i = 1 To nj' For j = 1 To 2'Picture1.Print ui(i, j' Next j' Next i'For i = 1 To ne' For j = 1 To 3'For k = 1 To 3'For n = 1 To 2'Next n'For j = 1 To 3'Picture1.Print YL(i, j'Next j'Next iijj = ijj + 1Picture1.Print "第 " & ijj &

17、 "次计算 "filesname = "源数据及计算结果对照 " & ijj & ".dat"Open filesname For Output Lock Write As #1Print #1,Print #1,Print #1,Print #1,Print #1,Print #1,Print #1,Write #1, "结点坐标数组为为 "For i = 1 To njWrite #1, "结点 " & i; "(" & ajz(i, 1

18、& "," & ajz(i, 2 & ""Next iPrint #1,Write #1, "单元结点码数组 (局部 i,j,k 为 "For i = 1 To neWrite #1, "单元Next iPrint #1,Write #1, "支杆位置数组为 "Print #1,Write #1, ""Print #1,Write #1, ""For i = 1 To njNext iPrint #1,Write #1, "&quo

19、t;For i = 1 To neWrite #1, "单元 " & i; "x=" & YL(i, 1 & "," & "y=" & YL(i, 2 & "," & "xy=" & YL(i, 3Next iPrint #1,Close #1End If '对应第一行的 ifEnd SubSub YjsL(ui#(, YLZ#(, YL#(, jm&(Dim i&, j&, k&

20、amp;, n&, ne&ne = UBound(YLZ, 1For i = 1 To neFor k = 1 To 3For j = 1 To 3For n = 1 To 2YL(i, k = ui(jm(i, j, n * YLZ(i, j, k, n + YL(i, k '两矩阵相乘Next nNext jNext kNext i'For i = 1 To ne' For j = 1 To 3'Picture1.Print YL(i, j'Next j'Next iEnd SubSub Gauss(SPj#(, SZgK#(

21、, ui#(Dim i&, j&, k&, n&, m#, uii#(, nii&, QH# 'QHn = UBound(SPjnii = UBound(ui, 1'Print nm = SZgK(i, k / SZgK(k, kFor j = k + 1 To nSZgK(i, j = SZgK(i, j - m * SZgK(k, jNext jSPj(i = SPj(i - m * SPj(kNext iNext k'For i = 1 To n 'tttttttttttttttttttttttttttttttttt

22、tttttttttttttttttttttttttttttttttttttttttttttt 'For j = 1 To n'Print SZgK(i, j'Next j'Next i'For i = 1 To n'Print SPj(i'Next i 'tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt uii(n = SPj(n / SZgK(n, nFor k = n - 1 To 1 S

23、tep -1QH = 0For j = k + 1 To nQH = SZgK(k, j * uii(j + QHNext juii(k = (SPj(k - QH / SZgK(k, kNext kk = 1For i = 1 To niiFor j = 1 To 2If ui(i, j <> 0 Thenui(i, j = uii(kk = k + 1End IfNext jNext i'For mm = 1 To n'Print uii(mm;'Next mmEnd Subk = 1For i = 1 To UBound(Pj, 1For j = 1

24、To 2If ui(i, j <> 0 ThenSPj(k = Pj(i, jk = k + 1End IfNext jNext iFor i = 1 To n 'ttttttttttttttttttttttttttttttttttttttttttttttttttttttPicture1.Print SPj(i; 'tttttttttttttttttttttttttttttttttttNext i 'tttttttttttttttttttttttttttttttttttttttttttEnd SubSub XZgK(ZgK#(, ui#(, SZgK#(,

25、Ly&Dim i&, j&, k&, n&, ki&, kj&, ii&'nj = UBound(ZgK, 1' For i = 1 To nj' For j = 1 To nj'For k = 1 To 2' For n = 1 To 2' Picture1.Print Format(ZgK(i, j, k, n * 32 / 3, "0"' Next n' Next k'Next j'Next iii = UBound(ZgK,

26、 1 * 2 - Ly'Print ii 'tttttttttttttttttttttttttttttttki = 1 'To iikj = 1 'To iiFor i = 1 To UBound(ZgK, 1For j = 1 To 2'ki = ki + 1If kj > ii Thenki = ki + 1kj = 1End If'Call XHcl(ki, kj'Picture1.Print SZgK(ki, kj * 32 / 3 'ttttttttttttttttttttttttttttttttttttt 

27、9;kj = kj + 1End IfNext nNext kNext jNext i 'Picture1.Print SZgK(2, 1 * 32 / 3 'tttttttttttttttttttttttttttttttttttttttttttttttttt 'Next kj 'Next ki 'For i = 1 To ii 'ttttttttttttttttttttttttttttttttttt 'For k = 1 To ii 'ttttttttttttttttttttttttttttttttttttttt 'Pi

28、cture1.Print Format(SZgK(i, k * 32 / 3, "0" 'tttttttttttttttttttttttttttttttttt 'Next k 'ttttttttttttttttttttttttttttttttttttttttttttttttttttt 'Next i 'ttttttttttttttttttttttttttttttttttttttttttttttt End Sub Sub ZhjZ(Pj#(, ne&, ALOUt#, ajz#(, jm&( '此处 ne 的值也

29、可以用 ubound(jm,1求得 Dim w#, i&, j&, P# For i = 1 To ne P = 0.5 * (ajz(jm(i, 2, 1 * ajz(jm(i, 3, 2 + ajz(jm(i, 3, 1 * ajz(jm(i, 1, 2 + ajz (jm(i, 1, 1 * ajz(jm(i, 2, 2 - ajz(jm(i, 3, 1 * ajz(jm(i, 2, 2 - ajz(jm(i, 1, 1 * ajz(jm(i, 3, 2 - ajz(jm(i, 2, 1 * ajz(jm(i, 1, 2 w = P * ALOUt 'Print

30、w 'ttttttttttttttttttttttttttttttttttttttttttt For j = 1 To 3 Pj(jm(i, j, 2 = Pj(jm(i, j, 2 + w / 3 Next j Next i End Sub Function modd&(ByVal temp2$ If Val(temp2 Mod 2 = 0 Then modd = 2 Else modd = 1 End If End Function Sub zhenggangK(jm&(, ajz#(, ne&, AMU#, ZgK#(, YLZ#(, EO#, TE#,

31、LM% '此处 ne 的值也可以 用 ubound(jm,1求得 Dim i&, j&, k&, k1&, b#(1 To 3, c#(1 To 3, P#, ZgKxs#, YLZxs1# ',jm1#(1 To 3 ZgKxs = EO * TE * 0.25 / (1 - AMU 2 For i = 1 To ne 'For j = 1 To 3 'jm1(j = jm(i, j 'Next j '此处 temp2 的传递方式只能是 byval(即传值,byref 会出错 P = 0.5 * (ajz(jm(

32、i, 2, 1 * ajz(jm(i, 3, 2 + ajz(jm(i, 3, 1 * ajz(jm(i, 1, 2 + ajz(jm(i, 1, 1 * ajz(jm(i, 2, 2 - ajz(jm(i, 3, 1 * ajz(jm(i, 2, 2 - ajz(jm(i, 1, 1 * ajz(jm(i, 3, 2 - ajz(jm(i, 2, 1 * ajz(jm(i, 1, 2 'Print P 'tttttttttttttttttttttttttttttttttttttttttttttttttttttttttt b(1 = ajz(jm(i, 2, 2 - ajz(j

33、m(i, 3, 2 b(2 = ajz(jm(i, 3, 2 - ajz(jm(i, 1, 2 b(3 = ajz(jm(i, 1, 2 - ajz(jm(i, 2, 2 c(1 = ajz(jm(i, 3, 1 - ajz(jm(i, 2, 1 c(2 = ajz(jm(i, 1, 1 - ajz(jm(i, 3, 1 c(3 = ajz(jm(i, 2, 1 - ajz(jm(i, 1, 1 'Print b(1, b(2, b(3, c(1, c(2, c(3 'ttttttttttttttttttttttttttttttttttttttttttttttttttttttt

34、tttttttttttttttttttt For k = 1 To 3 For k1 = 1 To 3 'Picture1.Print jm(i, k, jm(i, k1 'ttttttttttttttttttttttttttttttttttttttttttttttttttttttt ZgK(jm(i, k, jm(i, k1, 1, 1 = ZgK(jm(i, k, jm(i, k1, 1, 1 + ZgKxs * (b(k * b(k1 + (1 - AMU * 0.5 * c(k * c(k1 / P 'Picture1.Print ZgKxs * (b(k *

35、b(k1 + (1 - AMU * 0.5 * c(k * c(k1 / P 'Picture1.Print ZgKxs#, AMU# 'Picture1.Print ZgK(jm(i, k, jm(i, k1, 1, 1 * 32 / 3 'tttttttttttttttttttttttttttttttttttttttt ZgK(jm(i, k, jm(i, k1, 1, 2 = ZgK(jm(i, k, jm(i, k1, 1, 2 + ZgKxs * (AMU * b(k * c(k1 + (1 - AMU * 0.5 * c(k * b(k1 / P '

36、Picture1.Print ZgK(jm(i, k, jm(i, k1, 1, 2 * 32 / 3 'tttttttttttttttttttttttttttttttttt ZgK(jm(i, k, jm(i, k1, 2, 1 = ZgK(jm(i, k, jm(i, k1, 1, 2 'Picture1.Print ZgK(jm(i, k, jm(i, k1, 2, 1 'ttttttttttttttttttttttttttttttttttttttttttt ZgK(jm(i, k, jm(i, k1, 2, 2 = ZgK(jm(i, k, jm(i, k1, 2, 2 + ZgKxs * (c(k * c(k1 + (1 - AMU * 0.5 * b(k * b(k1 / P 'Picture1.Print ZgK(jm(i, k, jm(i, k1, 2, 2 '

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论