云霄一羽

V1

2022/07/09阅读:14主题:自定义主题1

工程结构分析的底层原理(1)

并不是每一个工程师都需要知道工程结构分析的底层原理。

毕竟现在的商业软件足够强大,结构设计设置好各种材料参数构件尺寸,能跑通不报红就大功告成了。即使对结构选型布置没有太多经验,根据算出来的东西反复调整几次,一般都能做好,至于花多少时间费多少人力,很多时候其实不那么重要,一般工程设计还是工匠精神,唯手熟耳。

不过如果要追求有所超越的设计,就不得不了解那这些基础问题。毕竟商业软件照顾的还是大众的需求,并不是规范或者经验可以概括的。至于当下火热的人工智能,建筑本身是非结构化的数据,样本量也不大,这一代的各种机器学习模型还远远不足以完成这些复杂的生成、拟合、预测的任务,人工智能的未来在精确分析的领域还离我们很远。

对建筑师来说,不理解叶状结构的几何拓扑逻辑,仅靠拙劣的模仿没法还原ZAHA流畅曲线的神韵,而对结构工程师来说,不知道工程结构分析的底层原理,也只能对各类宏伟的超级工程和优雅的轻型结构望洋兴叹。毕竟极致的巨大在各个尺度层次上会产生不同的问题,而极致的轻盈更是容不得超出预期的半点误差。

工作原因,自己平日接触很多不寻常的工程,因此越发觉得对底层理解是必不可少的。闲暇之余学习了这些底层知识,并写了一点代码,也在github上分享出来( GitHub - zhuoju36/StructEngPy: 基于Python的建筑结构有限元分析程序 )。编程语言选择了Python,主要是认为语法简洁写起来快,分享出来大家都很容易读懂,有问题也可以一起指指点点讨论讨论。更何况Python对现在的学弟学妹们几乎是必修课了,能很容易读懂而不需要学习其他高性能的专用语言。

应该说这不是一个完整的软件,只能算是一个Toy,用来学习还是很好的,但用Python来写的代码,运行速度是极慢的,求解大型问题并不实用,不能说有多大潜力,而且从软件工程的角度,没有太多工程化的系列测试,可靠性自然不高。

不过麻雀虽小五脏俱全,能从头到尾撸一遍代码,那么工作中对计算方面绝大多数的问题就能有非常深刻的理解了,平日工作中很多时候软件为什么算不出来算不对,都可以迅速找出病因。为什么要考虑非线性?该考虑哪种非线性?为什么改了这个参数计算收敛不了?为什么这个单元算出来结果不连续?算出来的位移时程怎么这么奇怪?同样一个振动分析几种算法出来结果不一样,我该信哪个?能有充分把握解决并解释清楚这些形形色色的技术问题,我认为才是工程师和老工匠师傅的最大区别。而且遇到商业软件解决不了的疑难杂症,既然有最底层的代码,那么基于这些代码自己写点算法解决也就不是什么难事,这都是这个项目的有益意义。

虽然说talk is cheap,不过如果只是show code的话,作为原理复杂的工程科学计算,很多地方还是不好理解的,对读者是这样,对我自己时间久了也一样。所以还是决定写点随笔,零零星星回顾一下,一方面是技术笔记,另一方面也可以边写边改,人要成长的,代码也一样。

至于在工程项目上实用的大规模分析计算的需求,开了另一个基于Julia的项目Mozi.jl,由松耦合的一堆模块构成,会更靠谱一些,也会逐渐发布,反正又不是商业软件,有坑慢慢填就是了。

为什么不用OpenSees?首先OpenSees是C/C++编写的,不论是阅读源代码、编写程序还是编译执行都非常费力气。此外,我不是做学术用, 用不到那么多奇奇怪怪的单元,更重要的是,OpenSees虽然开源,但是不允许商用,要是未经同意在实际工程中用到OpenSees构成盈利性质,被社区发现了说不定要吃官司,毕竟规则还是要遵守的。

公众号:营造笔谈

分类:

数学

标签:

数学编程

作者介绍

云霄一羽
V1