说明: 1.内容只是笔者的个人观点和意见 2.没有排序规则,也没有分类 3.为了方便碎片化阅读,每篇十个
很多基础库都会自定义向量类,向量类可以用在几何,渲染,网格,求解器计算等。一个通用的向量类至少包含了如下功能: 构造函数\点乘\叉乘\向量标量的加减乘除\向量方向是否相同,是否相反\向量是否和XYZ轴平行\向量归一化 向量的英文为vector,容易引起重名和冲突,自定义注意唯一命名。 2. 矩阵 matrix 这里的矩阵主要是指小规模矩阵,以及利用矩阵进行各种变换;大规模线性方程组矩阵后面介绍。 变换矩阵是几何计算,视图渲染,网格计算等最常用的工具之一。 比如对几何对象实施平移,旋转,缩放,镜像,以及任意形式的变换,都可以通过在对象上施加一个矩阵来实现;视图变换也有类似的功能。一般第三方库都有普通矩阵定义和实现。 一个变换矩阵类要实现如下功能: 生成单位矩阵\矩阵求逆\矩阵和矩阵乘法\矩阵和向量乘法\矩阵分解\变换点坐标\生成对称矩阵 参考书:实用线性代数 3. 高斯积分 高斯积分是利用数值方法计算积分的一种方法,有限元方法中,单元的基函数为多项式,在构造单元刚度矩阵时,需要在网格单元内计算积分,在求解器开发中常用来计算单元刚度矩阵,是开发求解器必掌握的方法。 关键字:高斯积分 高斯积分点 单元刚度矩阵 4. Delaunay网格划分 Delaunay网格划分方法是三角形剖分最基础的方法,没有之一,其使用范围比Advance Front Method还要广泛。公众号之前也有介绍,参见 不管是做几何,还是做网格,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参数介绍 10. P单元和H单元 P单元和H单元是有限元方法中两种不同的单元类型,代表了两种提高计算精度的思路 第一类有限元方法称为H-型有限元,其中H代表单元的最大尺寸。在计算过程中,该方法不改变单元的类型而是通过不断缩小单元的几何尺寸,也就是加密网格 第二类有限元方法称为P-型有限元方法,其中P为计算中使用的单元的最低阶次。在计算过程中,该方法不改变结构的网格,而是通过提高单元的最低阶次来改进计算结果,也就是提高形函数的阶,具体表现就是在网格内部增加节点 其中EDA的线性单元(三角形三个顶点)习惯称为0阶单元,而结构分析中称为1阶单元,注意区分。 关键字:形函数 基函数 P单元 H单元 有限元 |
|