1、首先要建立反映问题(工程问题、物理问题等)本质的数学模型。
具体说就是要建立反映问题各量之间的微分方程及相应的定解条件。这是数值模拟的出发点。没有正确完善的数学模型,数值模拟就无从谈起。牛顿型流体流动的数学模型就是著名的纳维—斯托克斯方程(简称方程)及其相应的定解条件。
2、寻求高效率、高准确度的计算方法
由于人们的努力,目前已发展了许多数值计算方法。计算方法不仅包括微分方程的离散化方法及求解方法,还包括贴体坐标的建立,边界条件的处理等。这些过去被人们忽略或回避的问题,现在受到越来越多的重视和研究。
3、开始编制程序和进行计算
实践表明这一部分工作是整个工作的主体,占绝大部分时间。由于求解的问题比较复杂,比如方程就是一个非线性的十分复杂的方程,它的数值求解方法在理论上不够完善,所以需要通过实验来加以验证。正是在这个意义上讲,数值模拟又叫数值试验。应该指出这部分工作决不是轻而易举的。
扩展资料:
数值模拟的发展史:
1955年Peaceman与Rachford研发的交替隐式解法(ADI)是数值模拟技术的重大突破。该解法非常稳定,而且速度快,所以迅速在包括石油,核物理,热传导等领域得到广泛应用。1958年Douglas,Jim和Blair,P.M第一次进行了考虑毛管压力效果的水驱模拟。
60年代数值模拟技术的发展主要在数值解法,第一个有效的数值模拟解法器是1968年Stone推出的SIP(Strong Implicit Procedure)。该解法可以很好地用来模拟非均质油藏和形状不规则油藏。
Stone在70年代发表了三相相对渗透率模型,由油水和油气两相相对渗透率计算油、气、水三相流动时的相对渗透率,该技术现在还广为应用。70年代另一项主要成就是Peaceman提出的从网格压力来确定井底流压的校正方法。
参考资料来源:百度百科—数值模拟
第一步,分析问题,确定背后的物理机制和过程,即确定应力应变,能量迁移,流体动力学,波,电磁场还是其中某些的共同作用,这决定了有哪些物理场,物理量,和物理性质要被考虑进来。
第二步,根据物理机制和过程建立数学模型。这个数学模型说白了就是一堆方程和公式,其中有以偏微分方程为代表的控制方程和其他表达状态量之间,状态量和材料性质之间关系的附加公式。另外,初始和边界条件也要确定下来,因为我们研究的问题总是对应有限时间和有限空间大小的。
第三步,上述数学模型除非特别简单的方程和边界和初始条件,一般没有解析解(也就是用初等数学函数表达的解)。于是乎,数值离散方法就上场了,常见有有限单元法,有限体积法,和有限差分法等。这些方法所做的,就是把上建立在连续空间和时间之上的数学方程们离散成一个代数方程,一般有A*X=B的形式。X是一个矩阵。如在有限元法中,X就是在有限单元的顶点上的待求函数(因变量)的值,点的数量决定了X的矩阵大小。这里,在离散中又涉及了空间离散(网格划分)和方程离散(转连续方程为代数方程)。有些方法如有限元法者上述过程中还会附加要求推导弱形式等。
第四步,有代数方程以后,我们还需要求解它。这里面就有很多方法可供选择,比如直接法如高斯法和各种不同的迭代方法。一般除非我们是做求解器的,我们可以用很多现成的工具去求解这个代数方程,而不用再写一个求解器来求解。比如,在MATLAB中就可以使用一个再简单不过的X=A\B命令来求解。
第五步,求出了解之后,取决于你想要做什么,一般我会想知道解在某一时刻在空间内如何分布的。比如,如果我们做热传导分析,我们想到温度这个因变量是如何分布的。当然,我们也可能会想知道其他依赖于温度的材料性质如热传导系数和比热容的值,分布或者变化等。这些通过简单的计算都可以得到。一般的数值软件都提供至少基本的后处理用于显示和处理计算结果。如果自己编程的话,我们也可以使用第三方的后处理程序比如Paraview等。有些偏数学和理论的同学,没准还要做敏感性分析和误差分析,也就是看误差随某些变量和计算过程的变化,以此来推断模型,离散方法,求解器等中的错误,误差,或者性能。
当然,上述是完整的过程。但是如果你只是问具体的如用数值模拟软件的步骤,那就随软件不同而有所不同。但总的来说,一般分如下几步。
第一步,建立几何模型,就是不管是原始地使用文本输入文件,或是更加现代地直接用鼠标点,总之,把你要分析的物体的形状和尺寸告诉计算机。
第二步,你需要选择你关系的过程对应的模块或者物理场。当然,在一些简单只有一个物理场的软件中,你没有也就无须选择。物理场确定后,每个场都要在几何模型的边界上选择对应实际问题的边界条件。
第三步,划分网格。一般软件都提供自动划分功能,你按一个或者几个按钮就行。当然,有些软件提供更高级的网格划分控制方法来让你得到更满足你需求的网格。甚至还有自适应网格等。
第四步,如果你处理的是瞬态问题(跟时间相关),你还需要设置初始条件。另外,取决你的需求和软件的功能,你可能还需要添加表达材料性质或者在后处理中需要用到的函数和关系式。
第五步,设置求解器。这里你要选择求解的方法,如求解的时间和步长(瞬态问题),迭代方式和控制参数(如果有迭代),允许的误差。甚至你还可能能够选择离散的方法和参数,如在有限元软件中你有可能需要或者能够选择单元的类型。
第六步,点击求解(一般软件中都有这么一个按钮或者快捷键)。结果出来后,到后处理模块中去处理和显示你要的结果就好。如果你运气不好需要使用一个没有后处理模块的软件,你可能需要将结果导出到另一个后处理软件甚至自己编程来显示和处理结果。当然,有些软件没有前处理模块(上述中前某几步);同样道理,你可能需要在另一个软件中完成前处理并用某一特定方式将前处理得到的模型导入用于数值分析的软件中。总之,实际操作中蛋疼的很有可能本非数值模拟本身,可能是那些蹩脚的软件。
以上过程在如下书和网站中有详细的介绍,你还可以找到简单的MATLAB和其他程序的例子。书和网站是英文的,但我想看一本能让你茅塞顿开的英文书也许比一百本含糊不清或者断章取义的中文书要强(觉无崇洋媚外之意)。如有问题,可以去一个名为liurg或者liurgorg的用户那里问,在知乎,CSDN,博客园,科学网或者新浪博客都可以。
数值模拟专著Multiphysics
数值模拟前沿-多物理场学习网站
如何学习数值模拟
1、模型选择:确定出一个具有特定边界的研究区域,分析海区的主要动力特征、地形特征,选择合适的数学模型。对于底部地形变化剧烈的海区和局部工程段,常需用三维模型;对于狭长型港湾河口,可以采用侧向平均的垂向二维模型。目前工程上应用最为广泛的是水深积分的平面二维模型。 2、简化近似:根据潮波运动特征,作出作出简化假定和近似,忽略非本质的物理过程,来简化潮波模型。潮流运动近乎于水平流动,垂向速度w与水平速度u、v相比可以略去不计。其水流运动特征可用“近水平流”来表示。从“近水平流”假定可得出静压假定,即局部压力满足流体静力学方程,从而使潮波模型得到了简化,我们称之为长波模型。 3、数学模型:采用数学模型表达简化的物理系统。数学模型包括控制微分方程、边界条件和初始条件。4、数值模型:用适当的数值方法将数学模型转变为一个数值模型。5、编程:基于选定的算法,写出计算机代码,得到数值结果。应用某些后处理程序包来显示结果。6、计算模型的验证。
首先要建立反映问题(工程问题、物理问题等)本质的数学模型。具体说就是要建立反映问题各量之间的微分方程及相应的定解条件。这是数值模拟的出发点。没有正确完善的数学模型,数值模拟就无从谈起。牛顿型流体流动的数学模型就是著名的纳维—斯托克斯方程(简称方程)及其相应的定解条件。
数学模型建立之后,需要解决的问题是寻求高效率、高准确度的计算方法。由于人们的努力,目前已发展了许多数值计算方法。计算方法不仅包括微分方程的离散化方法及求解方法,还包括贴体坐标的建立,边界条件的处理等。这些过去被人们忽略或回避的问题,现在受到越来越多的重视和研究。
在确定了计算方法和坐标系后,就可以开始编制程序和进行计算。实践表明这一部分工作是整个工作的主体,占绝大部分时间。由于求解的问题比较复杂,比如方程就是一个非线性的十分复杂的方程,它的数值求解方法在理论上不够完善,所以需要通过实验来加以验证。正是在这个意义上讲,数值模拟又叫数值试验。应该指出这部分工作决不是轻而易举的。
在计算工作完成后,大量数据只能通过图像形象地显示出来。因此数值的图像显示也是一项十分重要的工作。目前人们已能把图作得像相片一样逼真。利用录像机或电影放映机可以显示动态过程,模拟的水平越来越高,越来越逼真。
物理模型->数学模型(控制方程和边界条件)->数值离散方法->网格剖分->程序编制->设定参数->结果分析
参考:http://blog.sciencenet.cn/blog-577059-538449.html