分享

工业软件底层技术200个知识点<1-10>

 多物理场仿真 2023-10-31 发布于上海

说明:

1.内容只是笔者的个人观点和意见

2.没有排序规则,也没有分类

3.为了方便碎片化阅读,每篇十个


  1. 向量 vector

很多基础库都会自定义向量类,向量类可以用在几何,渲染,网格,求解器计算等。一个通用的向量类至少包含了如下功能:

构造函数\点乘\叉乘\向量标量的加减乘除\向量方向是否相同,是否相反\向量是否和XYZ轴平行\向量归一化

向量的英文为vector,容易引起重名和冲突,自定义注意唯一命名。

2. 矩阵 matrix

这里的矩阵主要是指小规模矩阵,以及利用矩阵进行各种变换;大规模线性方程组矩阵后面介绍。

变换矩阵是几何计算,视图渲染,网格计算等最常用的工具之一。

比如对几何对象实施平移,旋转,缩放,镜像,以及任意形式的变换,都可以通过在对象上施加一个矩阵来实现;视图变换也有类似的功能。一般第三方库都有普通矩阵定义和实现。

一个变换矩阵类要实现如下功能:

生成单位矩阵\矩阵求逆\矩阵和矩阵乘法\矩阵和向量乘法\矩阵分解\变换点坐标\生成对称矩阵

参考书:实用线性代数

3. 高斯积分

高斯积分是利用数值方法计算积分的一种方法,有限元方法中,单元的基函数为多项式,在构造单元刚度矩阵时,需要在网格单元内计算积分,在求解器开发中常用来计算单元刚度矩阵,是开发求解器必掌握的方法。

关键字:高斯积分 高斯积分点 单元刚度矩阵

4. Delaunay网格划分

Delaunay网格划分方法是三角形剖分最基础的方法,没有之一,其使用范围比Advance Front Method还要广泛。公众号之前也有介绍,参见

深入理解数值计算网格(3)--非结构化网格生成算法

不管是做几何,还是做网格,Delaunay都是基础知识,建议熟练掌握

另外,个人建议书写不要翻译成中文,直接使用Delaunay,因为翻译成中文后,五花八门,类似边界条件Drichlet的翻译,几乎每种书的翻译都不一样,容易造成误解

关键字:Delaunay  三角 网格 Mesh

5. 设计模式

按照笔者多年使用频率,顺序大概如下:

1.单例模式

2.工厂/抽象工厂模式

3.观察者模式

4.命令模式

5.门面模式

6.中介者模式

7.策略模式

8.状态模式

9.访问者模式

设计模式可以理解为软件研发中的一些套路,类似于设计用的UML。

这里列出了101种设计模式:

https:///design-patterns-and-tips?from_wecom=1

时常有朋友觉得设计模式这种技巧性的内容被高估,但实践中确实有助于程序设计,帮助理解软件结构。由于设计模式属于一般的软件开发IT范畴,所以网络和纸质资料都比较多。

6. 数据结构--

树是一种最常用的软件数据结构,在计算机专业课《数据结构》中多有介绍,包括二叉树,平衡二叉树,B树,红黑树。C++的STL标准模板库中会大量使用树这种数据结构。在软件开发中,我们一般不会重复造轮子来写这些树的结构,但是理解这些数据结构有助于我们选择合适的模板。

比如std::map底层使用红黑树,每次执行插入操作时,会动态排序,当数据达到一定规模时,插入操作会引起性能问题。

针对大数据的索引查找,合理结合实际业务,自己实现对应的树结构可能更高效。

7. 泊松方程和拉普拉斯方程

这两个偏微分方程广泛应用于流体,电磁学、热学等多种热场的研究与计算。工业软件中的仿真软件研究几乎都是从这两个方程开始。如果要从事求解器算法相关开发,详细研究这两个方程,包括解析解,数值解。

理论性强,公式多,具体内容建议看书学习研究

8.数据结构--栈和队列

栈(stack)是一种数据结构,其特点是先进后出,类似一个弹夹,先放进去的子弹最后出来。

栈在程序中常用来处理需要保存临时对象,后续再使用的场景

队列是先进先出,类似排队。

栈和队列是软件研发中比较基础的数据结构。C++标准模板库中提供了std::stack和std::queue实现基本功能。实践中,软件框架中的息队列,事件管理多线程多进程管理,结构嵌套,原子操作等都会用到栈和队列数据结构。但并不是简单的使用,而是需要自己根据业务,设计接口,封装实现。

另外C++里分配数据可以放在栈,也可以放在堆heap。

这里的栈指分配在CPU的寄存器中,比如定义int x; 

而堆则是在内存里分配,比如 int* x = new int;

初学者注意区分

9. S参数

S参数是高频电路仿真最为关心的结果,是建立在入射微波与反射微波关系基础上的网络参数。它可以利用入射波与反射波的比率来计算诸如输入阻抗、频率响应和隔离等指标。而且由于可以用矢量网络分析仪(VNA)直接测量S参数,因此无需知晓网络的具体细节

以下是针对没有EDA背景朋友写的S参数介绍

一篇文章了解S参数

10. P单元和H单元

P单元和H单元是有限元方法中两种不同的单元类型,代表了两种提高计算精度的思路

第一类有限元方法称为H-型有限元,其中H代表单元的最大尺寸。在计算过程中,该方法不改变单元的类型而是通过不断缩小单元的几何尺寸,也就是加密网格

第二类有限元方法称为P-型有限元方法,其中P为计算中使用的单元的最低阶次。在计算过程中,该方法不改变结构的网格,而是通过提高单元的最低阶次来改进计算结果,也就是提高形函数的阶,具体表现就是在网格内部增加节点

其中EDA的线性单元(三角形三个顶点)习惯称为0阶单元,而结构分析中称为1阶单元,注意区分。

关键字:形函数 基函数 P单元 H单元 有限元

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多