使用C#编写自定义excel函数推导矩形梁纯扭承载力估算公式
对于数据分析,excel无疑是一个强大的工具,工程中也经常使用excel编写小计算软件来进行计算辅助,例如计算钢筋面积、计算截面几何性质、双向板配筋计算等。然而由于excel自带函数功能不强,当计算中涉及大量参数,并且需要进行大量的判断、循环等操作时,使用excel自带的函数就显得很吃力。若使用VB等语言编写小软件进行辅助计算,虽然可以突破函数的限制,但是如果需要不断改变计算参数来寻找规律,就不如excel方便,当数据量大时,甚至无法完成。近日由于毕业论文的关系学习了使用C#编写自定义的excel公式,从而将C#语言的强大性与excel的方便性结合起来,为更加复杂的计算提供工具支持。
这段时间由于毕业论文的关系一直在做混凝土梁抗扭承载力的计算,于是突发奇想,虽然规范里抗扭承载力公式考虑了配筋的因素,但是混凝土梁抗扭总的来说应该是由截面控制的,并且由于工程中常用的钢筋等级和钢筋面积只有特定的几种,配筋规则也较为简单,因而可以写出一个计算混凝土梁在常用配筋下的最大抗扭承载力的函数,利用excel的拖动递增功能,就可以很快计算出各种常用截面下混凝土梁的最大抗扭承载力,再利用excel的数据回归功能,就能回归出一条根据混凝土梁尺寸估算最大抗扭承载力的估算公式。
实现过程如下:
1. 用VS新建一个类库
3. 使用LINQPad生成GUID
(以上步骤通过百度学来,参考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互操作注册
将上面计算出的数据在excel里排成一列,假定回归公式为:
回归结果为:
由于公式较长,尝试用其他方法进行回归。经过多次计算,发现采用如下的回归公式能缩短公式长度,并且精度大致不变。
公式为:
按照自定义函数计算的结果
误差分析结果
通过误差分析结果发现,除位于右上角的少数宽扁梁外,其他梁截面的计算结果误差均在2.3%以内,绝大部分误差在1%以内,且大部分偏于安全(误差大于零)。说明该公式对于大部分截面能适用。
12. 结论
混凝土矩形梁纯扭作用下最大抗扭承载力估算公式为:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!