Fluent 时间步长【转载】
转载自:http://blog.sina.com.cn/s/blog_4ada3be301011rjp.html
用FLUENT计算非稳态问题,是不是在计算时必须保证在每个时间步timestep里都要收敛才行,否则计算结果就不对呢?也就是说,在iteration选项里,max iteration pertime step设为一个值,比如500,就是如果500次迭代后仍未收敛,进入下一步迭代,那对结果会有什么影响。
对于隐式非定常格式,原则上,每个时间步长内必须保证结果收敛。在fluent 的帮助中就有这样的话:"对于不可压流动,在每个时间步内,不可压解必须迭代直至收敛。"另外,我们回归到fluent内部计算的本源,它实质就是一种差分算法,通过不断逼近来获得真实解,这样我们就不难理解为什么在每个时间步长内需要收敛了。max iteration pertime step 设定的是最大时间步,在单一步长内,如果结果已经收敛,则会自动跳至下一时间进行计算。所以其设定要纵观全局。但对于周期性流动,这种收敛性的要求就相对松动一些。不过你需要多计算几个周期,等计算结果达到对时间的周期状态后,再对结果进行储存。
对于显式非定常格式,在Fluent帮助中这样说:"一定记住,对于显式非定常格式,每一个迭代就是一个时间步。"
如果每个时间步内结果没有得到收敛,则很有可能你所得到的结果是不真实的,但是一个时间步内的不真实性应该不 会影响到下一个时间步长内的计算。因为在每一个时间步开时,fluent 都会进行初始化。在单个时间步内,它实际是按照稳态进行计算的。
time step size的设定是根据你的计算需要,一般是你的特征长度(比如说管道的长度)除于特征速度(比如平均速度)的值再小一到两个量级即可,如果你的time stip size太大,计算会提示你的,改小即可。
number of time steps是这样设定的:number of time steps X time step size=实际时间积累。比如说,你计算一个射流,你需要计算到1秒时候的情况,那么(number of time steps)=1秒/(time step size)。
Fluent中非稳态时间步长设置
最近所做的非稳态计算,若设置太小,计算时间就太长,设置太大的话就会出现Global Courant Number飙升过大的不能继续进行下去的问题。
有网友建议:http://www.efluid.com.cn/dvbbs/dispbbs.asp?boardid=61&Id=3782
单元最小长度除于流场平均流速,不过这个值可能很小,你可以以这个值为基准进行调节,一开始可以取大些,如果没有问题,可以再放大些,这样可以缩短计算时间。
若按这种方法,计算下面这个例子:2mm,10个网格,流速1m/s。时间步长time steps=0.2/1000=0.0002。但是我在进行计算时,设置为1e-6,都无法进行下去。所以这种换算方法还是只能作为参考。
我现在采用的是自动调节时间步长,目前看来效果还可以。
怎么知道非稳态计算时间步长是合适的?
courant number与收敛
courant number实际上是指时间步长和空间步长的相对关系,系统自动减小courant数,这种情况一般出现在存在尖锐外形的计算域,当局部的流速过大或者压差过大时出错,把局部的网格加密再试一下。在fluent中,用courant number来调节计算的稳定性与收敛性。一般来说,随着courant number的从小到大的变化,收敛速度逐渐加快,但是稳定性逐渐降低。所以具体的问题,在计算的过程中,最好是把courant number从小开始设置,看看迭代残差的收敛情况,如果收敛速度较慢而且比较稳定的话,可以适当的增加courant number的大小,根据自己具体的问题,找出一个比较合适的courant number,让收敛速度能够足够的快,而且能够保持它的稳定性。
时间步长与准确性
摘自《数值计算与工程仿真》第一期 作者gim
1 、在不计模型误差,而且计算稳定的前提下,数值计算的时间步长的选取存在一个恰当值,过大或过小都会影响模拟结果的准确性。
2 、具体数值模拟中,最好能有一定的实验数据或其它的可以认为准确的结果作为验证资料,这样才能恰当的选定时间步长,提高计算的准确性。
3 、FLUENT 软件采用隐式计算,这就需要设定每一次迭代的最大步数(Max Iterations per Time step ) ,如果达到最大步数前计算已经收敛,系统会自动进入下一步迭代。利用这一点可以采取如下方法确定迭代的时间步长:系统一般认为每一步的迭代次数应在10 一20 次之问,设定一个时间步长后如果在迭代次数内还没有收敛就应该减小时间步长,反之则应该增加时间步长。一般,都事先给定一个较小的时问步长进行迭代儿步,而后逐步调整。当然迭代次数也跟具体问题相关,还需要计算经验的不断积累。
tags: fluent,非稳态,时间步长
fluent迭代计算中,非定常问题的时间步长如何选取
显式时间积分方案:时间步长Δt<ρ(Δx)2 /2Γ;半隐式时间积分方案:时间步长Δt<ρ(Δx)2 /Γ;全隐式时间积分方案:时间步长没有限制。Δx是网格相邻节点的距离,Γ是扩散系数,不同问题有不同的物理意义
非稳态时间步长与迭代步数的讨论
在unsteady的计算求解中,大部分同学应该会对solver中设置比较迷惑,在这里,我想就我个人的理解对其时间步长与迭代步数进行一些分析讨论。
1、在进行unsteady 计算的时候,fluent是从前一个时间算到下一个时间(即time steps),而每个时间步长内的计算就相当于一个准稳态求解,因此需要设置Max Iterations per Time Step;在这个时间步长内的计算就是一个稳态过程,在达到iteration次数之前收敛完成,就跳到下一个time step,否则就将所规定的迭代次数算完在跳下一个time step。
2、时间步长的设置:(1)特征长度除以特征速度所得的时间小二个量级或者更小。这是理论值,实际上,如果不是工作站运行的话,花费的计算时间太长。因此,通常在fluent中选定这个比例的1/5到1/10,特别是一开始不知道如何设定的时候最好是打开adaptive 让它自动定义定义时间步长。但其中最小的时间尺度,个人认为最小也只能小到这个比例的1/100的这个水平上。(2)最小网格长度除以流速或者旋转流动速度。这个是保证每一次迭代都在一个网格范围内,不会因跨网格而导致结果误差,但实际中计算一段时间后可能加快计算速度,会将时间步长设置较大,最后为得到最终求解,再将时间步长调小,进行细微的计算。
3、时间步长里的迭代步数设置:保证每个时间步长达到收敛,或者能明显看到主要残差曲线趋于水平。
4、时间步数:看你需要计算多长时间,本人觉得至少需要计算3-5个流动循环周期才可能得到非定常的稳定流动周期状态。