云霄一羽

V1

2022/07/11阅读:4主题:自定义主题1

工程结构分析的底层原理(2):自底向上方法

虽说是随笔,但既然开了一个系列,就总希望讨论起来有一些逻辑。不同于一般的有限元类书籍或者结构分析教材,以一种自顶向下的思路解释有限元分析的原理:先说明弹性力学的一般解法,有限元分析的一般数学格式,然后分解讨论各种形函数的构造,各种存储格式的考虑,再针对动力问题静力问题非线性问题等特殊问题分别讨论。这个系列文章中对技术的讨论会反过来,以一种自底向上的方式来解释这些原理,以一种更为落地的、可读的方式,降低读者理解的难度——毕竟数学公式到代码实现还是有很远的差距,只是知道一堆宏观的抽象的理论公式而不知道具体怎么实现,不知道代码实践和公式理论之间的差异,对我们的工作实际上并没有什么帮助。

好在我们谈论的只是结构分析,而非广义通用的有限元分析,因此我们可以抛去很多不必要的部分,聚焦于结构分析这个有限元很小的子集。先避开那些晦涩的弹性力学理论, 具体地讨论每一个简单的原子问题,看看这些是如何实现的,构造一个个底层的小砖块,再看这些砖块怎么逐步构成结构分析的整个大厦。当大厦的框架建立起来之后再回头看,相信教科书中那些顶层的宏观理论会变得非常清晰,基于这些宏观理论又可以再特化开去讨论更多的新问题,通过这样的途径对结构分析就会有一个渐进深入的理解。

这个系列文章主要面向年轻的工程师和在校学生,并不能算是公众科普文,默认读者具有以下背景知识:

力学基础:理论力学、材料力学、结构力学、弹性力学、动力学的相关基础 线性代数基础:向量、矩阵及相关运算、向量空间、坐标变换等基本原理 数值计算基础:误差、数值差分及数值积分 Python语言基础:python的数据类型、表达式、控制流等基本使用,面向对象编程;numpy、scipy等科学计算包的基本使用 这些知识大部分在本科阶段都会学到,只有少量知识会在研究生阶段接触,因此对于多数科班出身的工程师一般都能理解。当出现一些特别的知识时会附加说明,或者单独写一点文字作专门的讨论。

Python是一种非常容易上手的编程语言,而且代码中并不会追求太多奇技淫巧,因此如果缺乏相关编程背景的朋友快速学习一下应该也并非什么难事。程序中会尽量用一些技术成熟的程序包,以突出核心逻辑,尽可能减少不必要的重复造轮子,不过一些包的底层原理必要时也会简单说明一下。

考虑到我们讨论的问题涉及代码实现,有时会不得不涉及一些技术细节,比如最基本的软件架构、编程范式等,本人并非专业程序员,很多代码的写法不能说很科学合理,但会务求代码阅读起来尽量概念清晰,在此基础上追求尽可能高一点的运行性能。

从实际的代码实现去理解结构分析理论,是非常直观的。如果说自顶向下的方法是开启上帝视角的话,那么自底向上的方法就好比旅行时从山脚一步一步爬到山顶,然后四下眺望,感到豁然开朗,四周山势了然于胸,此时发现另一处山峰,便可轻装前往,不再迷茫。

公众号:营造笔谈

分类:

数学

标签:

数学编程

作者介绍

云霄一羽
V1