* 软件介绍 *

 

用Visual Basic 5.0 进行地基下卧软弱层计算

赵 蓬 桂林市勘察设计研究院

           岩土工程勘察设计需要对地基下卧软弱层进行验算。按照规范,当上覆土层与下卧软弱层的压缩模量比值大于等于3时,按规范简化公式计算,否则按线性弹性理论公式计算,但手工及计算器计算比较麻烦、且易出错,也不易对结果进行整理分析、输出。用 Visual Basic5.0编程进行地基下卧软弱层计算,其优点是可视化,与用户进行交互式对话,简便、迅速、直观、正确、提高工效。

        1 Visual Basic5.0简介 Basic 语言在岩土工程勘察中应用得很广泛,如进行地基变形验算、土样物理力学性质指标的统计、边坡稳定性计算等,Visual Basic5.0(以下简称VB 5.0) Microsoft公司开发的一套能编写Windows应用程序的语言,是Visual Basic最新的版本。该语言不仅继承了Basic 语言的各种优点,而且已经脱胎换骨、焕然一新,它是一种面向对象的可视化编程语言,其开发环境优越、使用方便、操作简单、功能强大。

           VB5.0要求硬、软件环境为:具有486微机及其兼机,VGA显示器,鼠标;Microsoft Window95中文版,VB5.0中文版。

        2 计算方法和编制依据

            根据《建筑地基基础设计规范》GBJ7-89,当地基受力范围内有软弱下卧层时,需要验算下卧软弱层顶面的地基强度,验算公式为: Pz+Pcz≤fz

图2.bmp (83746 bytes)

1 当上层土与下卧软弱土层的压缩模量比值大于或等于3时,计算如下:

条形基础

矩形基础

图3.bmp (176438 bytes)

上述地基承载力设计值及基础宽度的计算如下:

f=fk+ηbν(b-3)+ηdν0(d-0.5)

图4.bmp (204390 bytes)

    基础基底面积

     对于矩形基础 A=bl (m2)

     对于条形基础 A=b (长度方向取L=1m为计算单元)

     故条形基础最小宽度

图5.bmp (104230 bytes)

     2 当上层土与下卧软弱土层的压缩模量比值小于3时,按下公式计算:

     矩形基础

Pz=4×k×P0

     条形基础

Pz=P0/π(2β+sin2β)

β=arctng(b/2z)

图6.bmp (14774 bytes)

     3 计算程序及实例

      用VB5.0可设计对象窗口,编写窗口程序,对象窗口中有基础简单示意图,根据示意图填入已知的土层条件及数据,这样示意图中就直接显示出各种计算结果,简单、快捷。由下例可知。

      一轴心受压基础,上部结构传来轴向力设计值N=780kn,地质资料如图所示,设计基底面积及验算下卧软弱层。

图1.bmp (282994 bytes)

        程序运行:

    1 启动Window 95后,选择开始\程序\Microsoft Visual Basic 5.0进入VB5.0。

    2 在文件中进入下卧软弱层计算程序。

    3 在对象窗口中输入图中已知参数。

    4 选择基础类型为矩形基础。

    5 运行,出现对象窗口示意图,然后根据对象窗口示意图选择土层类型,填入各种已知参数。

    6 基础持力层为粉质粘土层,对话框要求输入粉质粘土的孔隙比、液性指数,计算机自动选择承载力修正系数ηb =0,ηd=1.1,并求出承载力。

   7 根据对象窗口示意图计算所示:A=4.45m2,在对话框中根据所求面积输入长度L=2.6m,宽度b=1.8m,计算机选择地基压力扩散角为25

   8 对象窗口示意图出现对话框,根据对象窗口示意图所计算出的基础面积或最小基础宽度,进行基础长、宽度的设定,示意图中自动显示出各种计算结果,若下卧软弱层达不到要求,可重新进行宽度、埋深设定,直到达到要求为止。从对象窗口中显示下卧软弱层满足强度条件。

   程序及对象窗口示意图如下:

Private Sub CmdCAL_Click()

n = Val(Txtn.Text)

d = Val(Txtd.Text)

z = Val(Txtz.Text)

r1 = Val(Txtr1.Text)

e1 = Val(txte1.Text)

r2 = Val(Txtr2.Text)

fk1 = Val(Txtfk1.Text)

e2 = Val(Txte2.Text)

e3 = Val(Txte3.Text)

fk2 = Val(Txtfk2.Text)

f1 = Val(Txtf1.Text)

p0 = Val(TxtP0.Text)

pz = Val(Txtpz.Text)

pcz = Val(Txtpcz.Text)

f = Val(Txtf.Text)

If combo1.Text = "淤泥和淤泥质粘土" And fk1 < 50 Then

nb = 0

nd = 1

ElseIf fk1 >= 50 Then

nb = 0: nd = 1.1

End If

If combo1.Text = "中 粗砂 卵石" Then

nb = 3: nd = 4.4

End If

If combo1.Text = "填土" Then

nb = 0: nd = 1.1

End If

If combo1.Text = "粉土" Then

e = InputBox("请输入孔隙比e", "e", e)

Sr = InputBox("请输入饱和度Sr", "Sr", Sr)

If e >= 0.85 Or Sr > 0.5 Then

nb = 0: nd = 1.1

Else

nb = 0.5: nd = 2.2

End If

End If

If combo1.Text = "粉砂 细砂" Then

nb = 2: nd = 3

End If

If combo1.Text = "粘性土" Then

e = InputBox("请输入孔隙比e", "e", e)

il = InputBox("请输入液性指数Il", "IL", il)

If e Or il >= 0.85 Then

nb = 0: nd = 1.1

Else

nb = 0.3: nd = 1.6

End If

End If

If combo1.Text = "红粘土" Then

aw = InputBox("请输入含水比aw", "aw", aw)

If aw > 0.8 Then

nb = 0: nd = 1.2

Else

nb = 0.15: nd = 1.4

End If

End If

If Combo2.Text = "矩形基础" Then

b = InputBox("请输入假设基础宽度b", "b=", b)

If b < 3 Then b = 3

If b > 6 Then b = 6

f1 = fk1 + nb * r1 * (b - 3) + nd * 1.1 * r1 * (d - 0.5)

If f1 < 1.1 * fk1 Then f1 = fk1 * 1.1

Txtf1 = Str$(f1)

a = n / (f1 - 20 * d)

Txta = Str$(a)

b = InputBox("请输入基础宽度", "基础宽度设计", b)

l = InputBox("请输入基础长度", "基础长度设计", l)

If e2 / e3 >= 3 Then

z = Val(z)

If z / b < 0.25 Then q = 0

If z / b >= 0.5 And 3 <= e2 / e3 <= 5 Then

q = (e2 / e3 - 3) + 23

End If

If z / b > 0.5 And 5 < e2 / e3 <= 10 Then

q = (e2 / e3 - 5) + 25

End If

If 0.25 <= z / b < 0.5 And 3 <= e2 / e3 <= 5 Then

x = 17 * (z / b - 0.25) / 0.25 + 6

y = 15 * (z / b - 0.25) / 0.25 + 10

q = (y - x) * (e2 / e3 - 3) / 2 + x

End If

If 0.25 <= z / b < 0.5 And 5 <= e2 / e3 <= 10 Then

x = 10 * (z / b - 0.25) / 0.25 + 10

y = 10 * (z / b - 0.25) / 0.25 + 20

q = (y - x) * (e2 / e3 - 5) / 5 + x

End If

p0 = (n + 20 * d * b * l) / (b * l) - r1 * d

TxtP0 = Str$(p0)

pz = (b * l * p0) / ((b + 2 * z * Tan(q * 3.1415 / 180)) * (l + 2 * z * Tan(q * 3.1415 / 180)))

pcz = d * r1 + z * r2

f = fk2 + 1.1 * (d * r1 + z * r2) / (d + z) * (z + d - 0.5)

If pz + pcz < f Then Txtgg.Text = "验算合格"

If pz + pcz > f Then Txtgg.Text = "验算不合格"

Txtpz = Str$(pz)

Txtpcz = Str$(pcz)

Txtf = Str$(f)

End If

If e2 / e2 < 3 Then

p0 = (n + 20 * d * b * l) / (b * l) - r1 * d

TxtP0 = Str$(p0)

a = l / b

c = 2 * z / b

k = ((Arcsin(a / (Sqr(1 + c * c) * Sqr(a * a + c * c))) + ((a * c) * (1 + a * a + 2 * c * c)) / (Sqr(1 + a * a + c * c) * (a * a + (1 + a * a + c * c)) * c * c))) / (2 * 3.1415)

pz = 4 * k * p0

pcz = d * r1 + z * r2

f = fk2 + 1.1 * (d * r1 + z * r2) / (d + z) * (z + d - 0.5)

If pz + pcz < f Then Txtgg.Text = "验算合格"

If pz + pcz > f Then Txtgg.Text = "验算不合格"

Txtpz = Str$(pz)

Txtpcz = Str$(pcz)

Txtf = Str$(f)

End If

End If

If Combo2.Text = "条形基础" Then

b = InputBox("请输入假设基础宽度b", "b=", b)

If b < 3 Then b = 3

If b > 6 Then b = 6

f1 = fk1 + nb * r1 * (b - 3) + nd * 1.1 * r1 * (d - 0.5)

If f1 < 1.1 * fk1 Then f1 = fk1 * 1.1

Txtf1 = Str$(f1)

b = n / (f1 - 20 * d)

b = InputBox("请输入修正后的基础宽度b", "b=", b)

Txtb = Str$(b)

If e2 / e3 >= 3 Then

z = Val(z)

If z / b < 0.25 Then q = 0

If z / b >= 0.5 And 3 <= e2 / e3 <= 5 Then

q = (e2 / e3 - 3) + 23

End If

If z / b > 0.5 And 5 < e2 / e3 <= 10 Then

q = (e2 / e3 - 5) + 25

End If

If 0.25 <= z / b < 0.5 And 3 <= e2 / e3 <= 5 Then

x = 17 * (z / b - 0.25) / 0.25 + 6

y = 15 * (z / b - 0.25) / 0.25 + 10

q = (y - x) * (e2 / e3 - 3) / 2 + x

End If

If 0.25 <= z / b < 0.5 And 5 <= e2 / e3 <= 10 Then

x = 10 * (z / b - 0.25) / 0.25 + 10

y = 10 * (z / b - 0.25) / 0.25 + 20

q = (y - x) * (e2 / e3 - 5) / 5 + x

End If

p0 = (n + 20 * d * b) / b - r1 * d

TxtP0 = Str$(p0)

pz = (b * p0) / (b + 2 * z * Tan(q * 3.1415 / 180))

pcz = d * r1 + z * r2

f = fk2 + 1.1 * (d * r1 + z * r2) / (d + z) * (z + d - 0.5)

If pz + pcz < f Then Txtgg.Text = "验算合格"

If pz + pcz > f Then Txtgg.Text = "验算不合格"

Txtpz = Str$(pz)

Txtpcz = Str$(pcz)

Txtf = Str$(f)

Txtb = Str$(b)

End If

If e2 / e3 < 3 Then

p0 = (n + 20 * d * b) / b - r1 * d

TxtP0 = Str$(p0)

c = Atn(b / (2 * z))

pz = (p0 / 3.1415) * (2 * c + Sin(2 * c))

pcz = d * r1 + z * r2

f = fk2 + 1.1 * (d * r1 + z * r2) / (d + z) * (z + d - 0.5)

If pz + pcz < f Then Txtgg.Text = "验算合格"

If pz + pcz > f Then Txtgg.Text = "验算不合格"

Txtpz = Str$(pz)

Txtpcz = Str$(pcz)

Txtf = Str$(f)

Txtb = Str$(b)

End If

End If

End Sub

Private Sub Cmdcls_Click()

Txtn = ""

Txtd = ""

Txtz = ""

Txtr1 = ""

txte1 = ""

Txtr2 = ""

Txtfk1 = ""

Txte2 = ""

Txte3 = ""

Txtfk2 = ""

Txtf1 = ""

TxtP0 = ""

Txtpz = ""

Txtpcz = ""

Txtf = ""

Txta = ""

Txtgg = ""

End Sub

Private Sub form_load()

combo1.AddItem "淤泥和淤泥质粘土"

combo1.AddItem "填土"

combo1.AddItem "红粘土"

combo1.AddItem "粘性土"

combo1.AddItem "粉土"

combo1.AddItem "粉砂 细砂"

combo1.AddItem "中 粗砂 卵石"

Combo2.AddItem "矩形基础"

Combo2.AddItem "条形基础"

End Sub

参考文献

沈克仁主编.《地基与基础》.中国建筑工业出版社1991年6月

庄乐和编 《土力学》 地质出版社出版 1982年6月

傅彬玄编著《Visual Basic3.0 for Windows 循序渐进教程》 学苑出版社 1994年9月

上一页

返回目录

下一页