《浅基础工程及程序设计》丁继辉程序代码 第四章 程序代码.docx
《《浅基础工程及程序设计》丁继辉程序代码 第四章 程序代码.docx》由会员分享,可在线阅读,更多相关《《浅基础工程及程序设计》丁继辉程序代码 第四章 程序代码.docx(23页珍藏版)》请在冰豆网上搜索。
《浅基础工程及程序设计》丁继辉程序代码第四章程序代码
4.6源程序代码
本章柱下交梁基础计算工程主要包括1个窗体,2个模块。
两个模块的程序代码与第一章基本一致,这里主要给出柱下交梁基础各节点的分配荷载计算的主要程序代码。
OptionExplicit
DimJiKuan'基底宽度
DimJiChang'基底长度
DimJik'基床系数
DimJiE'梁弹性模量
DimLxzuo,Lxyou'基础梁x方向左、右伸出长度
DimLyshang,Lyxia'基础梁y方向左、右伸出长度
DimXx(50),Yy(50)'荷载作用位置坐标(m.m)
DimNxy(50)'荷载类型"
DimFxy(50)
DimBxx(50),Byy(50)'分别为x,y方向基础梁底面宽度(m)
DimEIBxx(50),EIByy(50)'分别为x,y方向基础梁刚度
Dimα,β
DimRls
PrivateSubXishu()
IfRls<=0.6Thenα=1#+(1.41-1)/0.6*Rls
If(Rls>=0.6AndRls<=0.62)Thenα=1.43+(1.41-1.43)/(0.62-0.6)*(Rls-0.6)
If(Rls>=0.62AndRls<=0.64)Thenα=1.41+(1.38-1.4)/(0.64-0.62)*(Rls-0.62)
If(Rls>=0.64AndRls<=0.65)Thenα=1.38+(1.36-1.38)/(0.65-0.64)*(Rls-0.64)
If(Rls>=0.65AndRls<=0.66)Thenα=1.36+(1.35-1.36)/(0.66-0.65)*(Rls-0.65)
If(Rls>=0.66AndRls<=0.67)Thenα=1.35+(1.34-1.35)/(0.67-0.66)*(Rls-0.66)
If(Rls>=0.67AndRls<=0.68)Thenα=1.34+(1.32-1.34)/(0.68-0.67)*(Rls-0.67)
If(Rls>=0.68AndRls<=0.69)Thenα=1.32+(1.31-1.32)/(0.69-0.68)*(Rls-0.68)
If(Rls>=0.69AndRls<=0.7)Thenα=1.31+(1.3-1.31)/(0.7-0.69)*(Rls-0.69)
If(Rls>=0.7AndRls<=0.71)Thenα=1.3+(1.29-1.3)/(0.71-0.7)*(Rls-0.7)
If(Rls>=0.71AndRls<=0.73)Thenα=1.29+(1.26-1.29)/(0.73-0.71)*(Rls-0.71)
If(Rls>=0.73AndRls<=0.75)Thenα=1.24+(1.24-1.26)/(0.75-0.73)*(Rls-0.73)
If(Rls>=0.75)Thenα=1.24
IfRls<=0.6Thenβ=1#+(2.8-1#)/0.6*Rls
If(Rls>=0.6AndRls<=0.62)Thenβ=2.8+(2.84-2.8)/(0.62-0.6)*(Rls-0.6)
If(Rls>=0.62AndRls<=0.64)Thenβ=2.84+(2.91-2.84)/(0.64-0.62)*(Rls-0.62)
If(Rls>=0.64AndRls<=0.65)Thenβ=2.91+(2.94-2.91)/(0.65-0.64)*(Rls-0.64)
If(Rls>=0.65AndRls<=0.66)Thenβ=2.94+(2.96-2.94)/(0.66-0.65)*(Rls-0.65)
If(Rls>=0.66AndRls<=0.67)Thenβ=2.96+(3#-2.96)/(0.67-0.66)*(Rls-0.66)
If(Rls>=0.67AndRls<=0.68)Thenβ=3#+(3.03-3#)/(0.68-0.67)*(Rls-0.67)
If(Rls>=0.68AndRls<=0.69)Thenβ=3.03+(3.05-3.03)/(0.69-0.68)*(Rls-0.68)
If(Rls>=0.69AndRls<=0.7)Thenβ=3.05+(3.08-3.05)/(0.7-0.69)*(Rls-0.69)
If(Rls>=0.7AndRls<=0.71)Thenβ=3.08+(3.1-3.08)/(0.71-0.7)*(Rls-0.7)
If(Rls>=0.71AndRls<=0.73)Thenβ=3.1+(3.18-3.1)/(0.73-0.71)*(Rls-0.71)
If(Rls>=0.73AndRls<=0.75)Thenβ=3.18+(3.23-3.18)/(0.75-0.73)*(Rls-0.73)
If(Rls>=0.75)Thenβ=3.23
EndSub
PrivateSubCommand1_Click()
'截面特征值计算
CallTianJiaJiBen
CallTianJiaHeZai
Me.List4.AddItem("")
Me.List4.AddItem("计算节点分配荷载")
Me.List4.AddItem("")
'计算x方向梁刚度特征值
DimSxx(50)'x方向梁刚度特征值
DimSyy(50)'y方向梁刚度特征值
ForI=1ToList8.ListCount
Sxx(I)=Sqr(Sqr((4#*EIBxx(I)/(Jik*Bxx(I)))))
NextI
'计算y方向梁刚度特征值
ForI=1ToList9.ListCount
Syy(I)=Sqr(Sqr((4#*EIByy(I)/(Jik*Byy(I)))))
NextI
'计算分配荷载Fxx(i),Fyy(i)----分别为Fxy(xi,yi)在x方向和y方向的分配荷载
DimFxx(50),Fyy(50)
ForI=1ToList2.ListCount
IfNxy(I)=1Then'转角节点--左上角
IfLxzuo=0#AndLyshang=0#Or(Lyshang/Syy(I)-Lxyou/Sxx(I)<=0.01)Then
Fxx(I)=Fxy(I)*(Bxx(I)*Sxx(I)/(Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(Byy(I)*Syy(I)/(Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Else
Rls=Lyshang/Syy(I)
CallXishu
β1=β
Rls=Lxzuo/Sxx(I)
CallXishu
β2=β
Fxx(I)=Fxy(I)*(β1*Bxx(I)*Sxx(I)/(β1*Bxx(I)*Sxx(I)+β2*Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(β2*Byy(I)*Syy(I)/(β1*Bxx(I)*Sxx(I)+β2*Byy(I)*Syy(I)))
EndIf
EndIf
IfNxy(I)=2Then'端部节点--上端部:
x方向是无限长梁,y方向是半无限长梁
IfLyshang=0#Then
Fxx(I)=Fxy(I)*(4*Bxx(I)*Sxx(I)/(4*Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(Byy(I)*Syy(I)/(4*Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Else
Rls=Lyshang/Syy(I)
CallXishu
α1=α
Fxx(I)=Fxy(I)*(α1*Bxx(I)*Sxx(I)/(α1*Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(Byy(I)*Syy(I)/(α1*Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
EndIf
EndIf
IfNxy(I)=3Then'转角节点--右上角
If(Lxyou=0#AndLyshang=0#)Or(Lyshang/Syy(I)-Lxyou/Sxx(I)<=0.01)Then
Fxx(I)=Fxy(I)*(Bxx(I)*Sxx(I)/(Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(Byy(I)*Syy(I)/(Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Else
Rls=Lyshang/Syy(I)
CallXishu
β1=β
Rls=Lxyou/Sxx(I)
CallXishu
β1=β
Fxx(I)=Fxy(I)*(β1*Bxx(I)*Sxx(I)/(β1*Bxx(I)*Sxx(I)+β2*Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(β2*Byy(I)*Syy(I)/(β1*Bxx(I)*Sxx(I)+β2*Byy(I)*Syy(I)))
EndIf
EndIf
IfNxy(I)=4Then'端部节点--右端部:
x方向是半无限长梁,y方向是无限长梁
IfLxyou=0#Then
Fxx(I)=Fxy(I)*(Bxx(I)*Sxx(I)/(Bxx(I)*Sxx(I)+4*Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(4*Byy(I)*Syy(I)/(Bxx(I)*Sxx(I)+4*Byy(I)*Syy(I)))
Else
Rls=Lxyou/Sxx(I)
CallXishu
α1=α
Fxx(I)=Fxy(I)*(Bxx(I)*Sxx(I)/(Bxx(I)*Sxx(I)+α1*Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(α1*Byy(I)*Syy(I)/(Bxx(I)*Sxx(I)+α1*Byy(I)*Syy(I)))
EndIf
EndIf
IfNxy(I)=5Then'转角节点--右下角
If(Lxyou=0#AndLyxia=0#)Or(Lyxia/Syy(I)-Lxyou/Sxx(I)<=0.01)Then
Fxx(I)=Fxy(I)*(Bxx(I)*Sxx(I)/(Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(Byy(I)*Syy(I)/(Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Else
Rls=Lyxia/Syy(I)
CallXishu
β1=β
Rls=Lxyou/Sxx(I)
CallXishu
β2=β
Fxx(I)=Fxy(I)*(β1*Bxx(I)*Sxx(I)/(β1*Bxx(I)*Sxx(I)+β2*Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(β1*Byy(I)*Syy(I)/(β1*Bxx(I)*Sxx(I)+β2*Byy(I)*Syy(I)))
EndIf
EndIf
IfNxy(I)=6Then'端部节点--下端部:
x方向是半无限长梁,y方向是无限长梁
IfLyxia=0#Then
Fxx(I)=Fxy(I)*(4*Bxx(I)*Sxx(I)/(4*Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(Byy(I)*Syy(I)/(4*Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Else
Rls=Lyxia/Syy(I)
CallXishu
α1=α
Fxx(I)=Fxy(I)*(α1*Bxx(I)*Sxx(I)/(α1*Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(Byy(I)*Syy(I)/(α1*Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
EndIf
EndIf
IfNxy(I)=7Then'转角节点--左下角
If(Lxzuo=0#AndLyxia=0#)Or(Lyxia/Syy(I)-Lxzuo/Sxx(I)<=0.01)Then
Fxx(I)=Fxy(I)*(Bxx(I)*Sxx(I)/(Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(Byy(I)*Syy(I)/(Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Else
Rls=Lyxia/Syy(I)
CallXishu
β1=β
Rls=Lxzuo/Sxx(I)
CallXishu
β2=β
Fxx(I)=Fxy(I)*(β1*Bxx(I)*Sxx(I)/(β1*Bxx(I)*Sxx(I)+β2*Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(β2*Byy(I)*Syy(I)/(β1*Bxx(I)*Sxx(I)+β2*Byy(I)*Syy(I)))
EndIf
EndIf
IfNxy(I)=8Then'端部节点--左端部:
x方向是半无限长梁,y方向是无限长梁
IfLxzuo=0#Then
Fxx(I)=Fxy(I)*(Bxx(I)*Sxx(I)/(Bxx(I)*Sxx(I)+4*Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(4*Byy(I)*Syy(I)/(Bxx(I)*Sxx(I)+4*Byy(I)*Syy(I)))
Else
Rls=Lxzuo/Sxx(I)
CallXishu
α1=α
Fxx(I)=Fxy(I)*(Bxx(I)*Sxx(I)/(Bxx(I)*Sxx(I)+α1*Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(α1*Byy(I)*Syy(I)/(Bxx(I)*Sxx(I)+α1*Byy(I)*Syy(I)))
EndIf
EndIf
IfNxy(I)=9Then'中间节点
Fxx(I)=Fxy(I)*(Bxx(I)*Sxx(I)/(Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
Fyy(I)=Fxy(I)*(Byy(I)*Syy(I)/(Bxx(I)*Sxx(I)+Byy(I)*Syy(I)))
EndIf
NextI
Me.List4.AddItem("计算分配荷载Fxx(i),Fyy(i)----分别为Fxy(xi,yi)在x方向和y方向的分配荷载")
Me.List4.AddItem("")
Me.List4.AddItem("iNxy(i)x(i)y(i)Fxy(i)Fxx(i)Fyy(i)")
ForI=1ToList2.ListCount
Me.List4.AddItem("")
Me.List4.AddItem(""&Format(I,"000"))&(""&Format(Nxy(I),"000"))&(""&Format(Xx(I),"0000.00"))&(""&Format(Yy(I),"0000.00"))&(""&Format(Fxy(I),"00000.00"))&(""&Format(Fxx(I),"0000.00"))&(""&Format(Fyy(I),"00000.00"))
Me.List4.AddItem("")
NextI
'节点分配荷载的调整
'调整前的地基平均反力
DimPqian'调整前的地基平均反力
DimPhou'调整后的地基平均反力
DimMxiu'修正系数
DimDetaP'地基反力增量
DimSumF
DimAzong
DimADieJ
SumF=0#
Azong=JiChang*JiKuan
ADieJ=0#
ForI=1ToList1.ListCount
SumF=SumF+Fxy(I)
ADieJ=ADieJ+Bxx(I)*Byy(I)
NextI
Pqian=SumF/(Azong+ADieJ)
Me.List4.AddItem("调整前地基净反力(kN/m^2)"&Format(Pqian,"0.00"))
'调整后的地基平均反力
Phou=SumF/Azong
Me.List4.AddItem("调整后地基净反力(kN/m^2)"&Format(Phou,"0.00"))
'修正系数
Mxiu=1+ADieJ/Azong
'地基反力增量
DetaP=Pqian*ADieJ/Azong
Me.List4.AddItem("修正系数:
"&Format(Mxiu,"0.00"))
'调整后x,y两个方向上的荷载增量
Me.List4.AddItem("ix(i)y(i)Fxy(i)Fxx(i)Fyy(i)")
ForI=1ToList1.ListCount
Fxx(I)=Fxx(I)+Fxx(I)*DetaP*Bxx(I)*Byy(I)/Fxy(I)
Fyy(I)=Fyy(I)+Fyy(I)*DetaP*Bxx(I)*Byy(I)/Fxy(I)
NextI
Me.List4.AddItem("")
Me.List4.AddItem("计算调整后分配荷载Fxx(i),Fyy(i)----分别为Fxy(xi,yi)在x方向和y方向的分配荷载")
Me.List4.AddItem("")
Me.List4.AddItem("iNxy(i)x(i)y(i)Fxy(i)Fxx(i)Fyy(i)")
ForI=1ToList2.ListCount
Me.List4.AddItem("")
Me.List4.AddItem(""&Format(I,"000"))&(""&Format(Nxy(I),"000"))&(""&Format(Xx(I),"0000.00"))&(""&Format(Yy(I),"0000.00"))&(""&Format(Fxy(I),"00000.00"))&(""&Format(Fxx(I),"0000.00"))&(""&Format(Fyy(I),"00000.00"))
Me.List4.AddItem("")
NextI
tuichu=1
ExitSub
tch:
MsgBox"数据输入有误,不能得出结果",vbExclamation
EndSub
PrivateSubTianJiaHeZai()
DimIAsInteger
ForI=1ToList1.ListCount
List1.ListIndex=List1.ListCount-I
Xx(I)=Val(List1.Text)
NextI
ForI=1ToList2.ListCount
List2.ListIndex=List2.ListCount-I
Yy(I)=Val(List2.Text)
NextI
ForI=1ToList3.ListCount
List3.ListIndex=List3.ListCount-I
Fxy(I)=Val(List3.Text)
NextI
ForI=1ToList5.ListCount