数值分析有什么步骤?

如题所述

第一步,分析问题,确定背后的物理机制和过程,即确定应力应变,能量迁移,流体动力学,波,电磁场还是其中某些的共同作用,这决定了有哪些物理场,物理量,和物理性质要被考虑进来。

第二步,根据物理机制和过程建立数学模型。这个数学模型说白了就是一堆方程和公式,其中有以偏微分方程为代表的控制方程和其他表达状态量之间,状态量和材料性质之间关系的附加公式。另外,初始和边界条件也要确定下来,因为我们研究的问题总是对应有限时间和有限空间大小的。

第三步,上述数学模型除非特别简单的方程和边界和初始条件,一般没有解析解(也就是用初等数学函数表达的解)。于是乎,数值离散方法就上场了,常见有有限单元法,有限体积法,和有限差分法等。这些方法所做的,就是把上建立在连续空间和时间之上的数学方程们离散成一个代数方程,一般有A*X=B的形式。X是一个矩阵。如在有限元法中,X就是在有限单元的顶点上的待求函数(因变量)的值,点的数量决定了X的矩阵大小。这里,在离散中又涉及了空间离散(网格划分)和方程离散(转连续方程为代数方程)。有些方法如有限元法者上述过程中还会附加要求推导弱形式等。

第四步,有代数方程以后,我们还需要求解它。这里面就有很多方法可供选择,比如直接法如高斯法和各种不同的迭代方法。一般除非我们是做求解器的,我们可以用很多现成的工具去求解这个代数方程,而不用再写一个求解器来求解。比如,在MATLAB中就可以使用一个再简单不过的X=A\B命令来求解。

第五步,求出了解之后,取决于你想要做什么,一般我会想知道解在某一时刻在空间内如何分布的。比如,如果我们做热传导分析,我们想到温度这个因变量是如何分布的。当然,我们也可能会想知道其他依赖于温度的材料性质如热传导系数和比热容的值,分布或者变化等。这些通过简单的计算都可以得到。一般的数值软件都提供至少基本的后处理用于显示和处理计算结果。如果自己编程的话,我们也可以使用第三方的后处理程序比如Paraview等。有些偏数学和理论的同学,没准还要做敏感性分析和误差分析,也就是看误差随某些变量和计算过程的变化,以此来推断模型,离散方法,求解器等中的错误,误差,或者性能。

当然,上述是完整的过程。但是如果你只是问具体的如用数值模拟软件的步骤,那就随软件不同而有所不同。但总的来说,一般分如下几步。

第一步,建立几何模型,就是不管是原始地使用文本输入文件,或是更加现代地直接用鼠标点,总之,把你要分析的物体的形状和尺寸告诉计算机。

第二步,你需要选择你关系的过程对应的模块或者物理场。当然,在一些简单只有一个物理场的软件中,你没有也就无须选择。物理场确定后,每个场都要在几何模型的边界上选择对应实际问题的边界条件。

第三步,划分网格。一般软件都提供自动划分功能,你按一个或者几个按钮就行。当然,有些软件提供更高级的网格划分控制方法来让你得到更满足你需求的网格。甚至还有自适应网格等。

第四步,如果你处理的是瞬态问题(跟时间相关),你还需要设置初始条件。另外,取决你的需求和软件的功能,你可能还需要添加表达材料性质或者在后处理中需要用到的函数和关系式。

第五步,设置求解器。这里你要选择求解的方法,如求解的时间和步长(瞬态问题),迭代方式和控制参数(如果有迭代),允许的误差。甚至你还可能能够选择离散的方法和参数,如在有限元软件中你有可能需要或者能够选择单元的类型。

第六步,点击求解(一般软件中都有这么一个按钮或者快捷键)。结果出来后,到后处理模块中去处理和显示你要的结果就好。如果你运气不好需要使用一个没有后处理模块的软件,你可能需要将结果导出到另一个后处理软件甚至自己编程来显示和处理结果。当然,有些软件没有前处理模块(上述中前某几步);同样道理,你可能需要在另一个软件中完成前处理并用某一特定方式将前处理得到的模型导入用于数值分析的软件中。总之,实际操作中蛋疼的很有可能本非数值模拟本身,可能是那些蹩脚的软件。

以上过程在如下书和网站中有详细的介绍,你还可以找到简单的MATLAB和其他程序的例子。书和网站是英文的,但我想看一本能让你茅塞顿开的英文书也许比一百本含糊不清或者断章取义的中文书要强(觉无崇洋媚外之意)。如有问题,可以去一个名为liurg或者liurgorg的用户那里问,在知乎,CSDN,博客园,科学网或者新浪博客都可以。

数值模拟专著Multiphysics

数值模拟前沿-多物理场学习网站

如何学习数值模拟

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜