使用C#编写自定义excel函数推导矩形梁纯扭承载力估算公式

使用C#编写自定义excel函数推导矩形梁纯扭承载力估算公式

对于数据分析,excel无疑是一个强大的工具,工程中也经常使用excel编写小计算软件来进行计算辅助,例如计算钢筋面积、计算截面几何性质、双向板配筋计算等。然而由于excel自带函数功能不强,当计算中涉及大量参数,并且需要进行大量的判断、循环等操作时,使用excel自带的函数就显得很吃力。若使用VB等语言编写小软件进行辅助计算,虽然可以突破函数的限制,但是如果需要不断改变计算参数来寻找规律,就不如excel方便,当数据量大时,甚至无法完成。近日由于毕业论文的关系学习了使用C#编写自定义的excel公式,从而将C#语言的强大性与excel的方便性结合起来,为更加复杂的计算提供工具支持。

这段时间由于毕业论文的关系一直在做混凝土梁抗扭承载力的计算,于是突发奇想,虽然规范里抗扭承载力公式考虑了配筋的因素,但是混凝土梁抗扭总的来说应该是由截面控制的,并且由于工程中常用的钢筋等级和钢筋面积只有特定的几种,配筋规则也较为简单,因而可以写出一个计算混凝土梁在常用配筋下的最大抗扭承载力的函数,利用excel的拖动递增功能,就可以很快计算出各种常用截面下混凝土梁的最大抗扭承载力,再利用excel的数据回归功能,就能回归出一条根据混凝土梁尺寸估算最大抗扭承载力的估算公式。

实现过程如下:

1. 用VS新建一个类库


2. 作必要的引用


3. 使用LINQPad生成GUID


4. 添加COM属性以及COM注册和反注册函数


(以上步骤通过百度学来,参考http://blog.csdn.net/qianyun6/article/details/23022441)

 

5. 定义计算规则

根据以往的工程实践,承载力计算的规则定为:

1) 计算公式使用《混凝土结构设计规范》(GB50010-2010)公式6.4.4-1

2) 箍筋选用以下几种:8,10,12

3) 纵筋选用以下几种:8,10,12,14,16,18,20,22,25

4)由于计算的是混凝土梁的最大抗扭承载力,计算时假定混凝土梁配筋由扭矩控制,并使用如下计算假定:

(1) 假定混凝土梁底筋、面筋钢筋个数相同

(2) 假定梁底筋、面筋、腰筋直径相同

(3) 假定箍筋最小间距为100mm

(4) 假定腰筋间距约为200mm

 

6. 根据计算规则编写计算函数,思路如下:

(1) 输入参数为:梁宽度、梁高度、混凝土抗拉强度设计值

(2) 定义由纵筋面积成的一维数组

(3) 定义由箍筋面积、强度等级组成的二维数组

(4) 遍历以上两个数组

(5) 取得纵筋直径、箍筋强度、纵筋强度、箍筋直径等信息

(6) 根据纵筋直径、箍筋直径计算出纵筋最大根数

(7) 根据梁高计算出腰筋根数

(8) 根据规范公式计算抗扭承载力

(9) 若改变参数后计算出的抗扭承载力大于之前参数计算出的抗扭承载力,则将新的抗扭承载力作为最大抗扭承载力

(10) 遍历结束,输出最大抗扭承载力计算值,计算完毕

 

7. 使用COM互操作注册


此处若不勾选“为COM互操作注册”,则后面的注册步骤会失败

 

8. 生成dll,并用DOS命令进行注册

注册命令如下:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe"E:\05学习\02编程语言学习\C#\04Excel 函数开发\01 开发学习\MyExcelFun1\TuCal\TuCal\bin\Debug\TuCal1.dll"  /tlb

注销命令如下:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe"E:\05学习\02编程语言学习\C#\04Excel 函数开发\01 开发学习\MyExcelFun1\TuCal\TuCal\bin\Debug\TuCal1.dll"  /u

 

9. 在excel中加载公式,并进行计算。

计算中,梁宽度从200到450,以50为级数进行变化,梁高度从400到1300,以50为级数进行变化,混凝土等级假定为C30。

计算结果如下,单位是

 

10. 使用excel回归工具进行数值回归。

在excel加载项里勾选“分析工具库”,这样在“数据”命令栏就会出现“数据分析”工具按钮。


将上面计算出的数据在excel里排成一列,假定回归公式为:,式中,梁宽b,梁高h单位均为m(试算发现,若单位如此取,计算出的参数刚好差不多在同一个数量级上)。通过回归计算便可回归出式中参数C、K1、K2、K3、K4、K5、K6、K7

    由于屏幕不够大,只截取部分计算结果,如下所示:


回归结果为:


根据excel计算结果,回归公式为:,标准差为0.1。

由于公式较长,尝试用其他方法进行回归。经过多次计算,发现采用如下的回归公式能缩短公式长度,并且精度大致不变。

公式为:

 

11. 使用该回归公式计算其他截面的混凝土梁,并进行误差分析

公式推导时,使用的混凝土截面为:

梁宽:200 ~450,梁高:400 ~1300。

为验算公式的有效性,将梁截面扩展为:

梁宽:200 ~700,梁高:400 ~1750。

计算结果如下:


按照自定义函数计算的结果


按照回归公式计算的结果


误差分析结果

通过误差分析结果发现,除位于右上角的少数宽扁梁外,其他梁截面的计算结果误差均在2.3%以内,绝大部分误差在1%以内,且大部分偏于安全(误差大于零)。说明该公式对于大部分截面能适用。

 

12. 结论

混凝土矩形梁纯扭作用下最大抗扭承载力估算公式为:

式中:

b——混凝土梁梁宽,单位:m

h——混凝土梁梁高,单位:m

T——混凝土梁估算抗扭,单位:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值