首页/文章/ 详情

多物理场与数学(1)--求解器开发的数学基础

2年前浏览1099

求解器是工业仿真软件里的核心,更强调了对数学的依赖。本文简要介绍一下求解器开发的数学基础。

关于求解器(Solver)

因为字面意思太通用,不同行业对“求解器”的理解可能不同。

对于工业仿真软件,“求解器”(Solver)主要指使用数值计算方法求解工程问题的计算程序,也是行业内的通用叫法,

工业仿真软件一般分为三个大模块:

前处理器,求解器,后处理器

1.前处理器主要处理几何,设置业务数据以及求解器需要的网格和属性数据;

2.求解器则读取前处理的数据进行仿真计算,并导出结果;

3.后处理器则对求解器的计算结果进行加工,显示相应计算结果。

为了解耦软件,也为了便于测试和发布,求解器通常设计成作为独立的可执行程序,用文件的形式和前处理器和后处理器交互。这种结构从三四十年前软件设计之初一直沿用到现在。

根据笔者的研发经历,将研发相关知识分为四类,也包括求解器:

第一类是理论基础。比如各种数值理论,控制方程,数学公式等等,这类知识其实不需要过于深究,原因在于就类知识类似于万有引力理论,它反映了万事万物的一些规律特征,其实很难理解,记住就好。这一块知识是科学家,数学家的工作。

第二类是推导计算。在第一类知识的基础上,通过公式推导,理论验证,将其变成可编程实现的算法和代码。这块理论相对成熟,研发都有迹可循;但需要一定的技术积累,有相当的技术门槛,在某些前沿领域还是有不确定的因素,查阅论文,期刊是常有的事,对应于软件研发中的原型开发技术,CAE软件研发的一些思考(5)--系统的开发求解器一文中有过介绍。这一块需要对业务有相当的知识积累,也是对数学和业务依赖最多的部分。

第三类是工程应用。工程应用是在第二类知识的基础上的拓展,这类知识就要求在研发中着重需要解决实际工程问题。实际工程问题的特点是模型规模大复杂,各种参数偏离标准模型假设,特征高度非线性,有各种不合理设计,存在性价比的问题,系统工程特征突出。这类知识通常都是现成的技术方案,但是内容多,知识繁杂,交错各种非技术因素,要找到一个适合业务的技术方案也不是简单的事情。

第四类是软件开发。这个包括了基本的语言开发,需求分析,架构设计,流程管理,技术选型,系统集成等一系列和软件工程相关的知识。通常做求解器开发的朋友接触较少。但这块对于一款软件产品却又至关重要。



回到主题,求解器开发首先是理解

偏微分方程

偏微分方程是多物理场仿真技术的起点和理论基础。偏微分方程在不同行业又叫控制方程或本构方程,笔者一般叫“控制方程”。

从经典的热传导方程,波动方程,赫姆霍兹方程,再到拉普拉斯,泊松方程,以及纳维斯托克方程,麦克斯韦方程,以及薛定谔方程。几乎每一个方程都是一种物理场或者某一类行业里的控制方程。这些经典的偏微分方程可能相互有联系,比如拉普拉斯泊松方程差别在于一个源项,赫姆霍兹方程麦克斯韦方程的一种特殊形式,在这些基础方程上,通过简化,扩展又会衍生成出各种特殊的方程。

正如前面介绍的知识类型,偏微分方程理论属于第一类理论基础,对于研发来说,可能并不需要我们研究的太深,但是理解偏微分方程的特点却能很好的帮助求解器开发:目前大部分偏微分方程都为二阶,即最高偏导两次,在构造形函数时,二阶多项式性价比往往最好;在多物理场耦合仿真中,往往首先需要明确不同物理场构成的偏微分方程组,偏微分方程组的强耦合求解仍然是世界难题,实际工程中一般使用弱耦合求解。COMSOL软件是目前对偏微分方程求解支持比较好的工具,可以支持用户自定义的偏微分方程和方程组,抛开工业应用和精度不谈,是名副其实的多物理场仿真软件。

边界条件是求解偏微分方程的一个重要内容,也是求解器开发实现的重点,偏微分方程的边界条件在 一篇文章入门多物理场有限元(全篇)一文中有所介绍。

偏微分方程求解的主流的数值方法包括有限元,有限差分,有限体积,离散元,边界元,矩量法等方法,以及无网格法,显式方法,时域有限差分,谱方法等等。这些之前有过介绍。

一篇文章入门无网格方法(1)

一篇文章入门时域有限差分方法(FDTD)

一篇文章入门边界元方法

离散元方法(DEM)简介

三维几何

求解器中一般会涉及到三维网格的各种计算,需要一定的几何基础知识。比如矢量运算,基本二维三维网格特征计算,空间查找,遍历,树结构加速等。

数值分析计算

求解器中会涉及到微积分,插值,拟合,常微分方程,迭代方法,误差分析,高精度计算等等。其中微积分是高数的基础内容,也是偏微分方程推导的基本工具,研发可能不需要推导公式,但一定要能看懂微分积分公式,是基础性内容。

线性代数

线性代数介绍了线性空间的基本概念,向量操作,矩阵的基本特征和运算等。这门课程在大学里绝对是排名第一的“挂科杀手”,但却是求解器开发基础中的基础。

矩阵论

求解器的大部分操作都基于矩阵,而且是大规模矩阵,所以对矩阵基础知识和计算要非常熟悉。比如一般有限元方法都是稀疏矩阵,稀疏矩阵有其特有的压缩存储方式和数据结构,而满秩矩阵也有特殊的加速求解方法,大规模分布式计算对矩阵的分块和通信有较高要求。一些特殊线性方程组求解方法比如多重网格,Krylov子空间,GMRES,JFNK等涉及到多种方法组合使用,基本都可以作为一个大的研究方向,真正解决实际问题需要相当的实践经验。

线性代数和矩阵其实在内容上有所重叠,从实际研发角度看,线性代数是基础,矩阵论着重于对矩阵的操作运算,比如矩阵求逆,分解,迭代计算,也包括各种类型线性方程组的求解。通常研发中不会写底层的求解库,而是去调用第三方库,但是每种库都有其特点,理解矩阵的特征对于选择合适的求解库也非常重要。

参考一篇文章入门大规模线性方程组求解

经典的《矩阵计算》一书基本涵盖了矩阵方方面面,其中对大规模线性方程组各种解法介绍也比较全面,求解器开发必备参考书。

image.png

最近几年火热的人工智能,计算机视觉,深度学习等,其底层算法实现也都是以线性代数和矩阵论为基础。

以上列举了一些求解器开发的数学基础内容,实际研发中还需要对各种通用基础算法比较了解,比如常规的排序算法,优化算法,线性规划等,有些求解器可能是半数值半解析,需要进行数学公式推导等等。

总之,求解器开发对数学知识要求相对较高,还要了解行业内业务和常用模型。要开发出高水平的求解器,掌握必要的软件架构设计,高性能计算,软硬件知识也必不可少。

理论科普
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-06-05
最近编辑:2年前
多物理场仿真技术
www.cae-sim.com
获赞 126粉丝 316文章 220课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈