当前位置:文档之家› CHP22时间步长

CHP22时间步长

CHP22时间步长
CHP22时间步长

CHP22.15 时间步长的设定

绘制当前时间数据图的方法:

使用显式非稳态公式或使用的是适应时间步长法,推荐用绘制当前时间或当前时间步长数据图。方法:

Solve—Monitors—statistic

在statistics框中选择time或是delta_time 项。

确定与时间有关的求解参数:

一阶或二阶隐式求解方法:

Max Iterations per Time Step:当FLUENT用隐式方法求解时,每个时间步长都要迭代。设定了每个时间步长内迭代的最大数值,如果在达到这个数值以前迭代收敛的话,求解过程会提前进入下一个时间步长。

Time Step Size:时间步长大小是t?的数值大小。由于FLUENT是完全隐式,因此没有队时间步长大小的要求。但为了正确模拟瞬态流动,时间步长大小的数量级至少应比系统中正在模拟的最小时间常量要小一个数量级。判断t?的选择的一个好方法是观察FLUENT在每个时间步长内迭代至收敛的次数,理想次数是10到20次,如果次数多于这个数值,则说明时间步长太大了。如果每个时间步长内只有几次迭代,则说明t?应该增大。常见的问题是FLUENT启动很快,而衰减也很快。这样情况下,聪明的办法是开始的5到10个时间步长设的相对较小,然后随着计算过程逐渐增加t?。

对于周期性时间的计算,应该根据时间周期的大小选择时间步长。比如说,对于转子/定子模型,可以在每个叶片通过之间设置20个时间步长。再比如对于涡轮流散的模型,每个周期20个时间步长比较好。

迭代时间步场面板上,默认的时间步长大小是固定的。要想在计算过程中随时修改时间步长大小,则要选adaptive并在adaptive time stepping中设好参数。第22.15.2节中详细讲述该内容。

22.15.2 调整性时间步长

调整性时间步长只有在segregated算法和coupled implicit算法中才能用,coupled explicit 算法不能用。另外,VOF或是分散相模型也不能用。

自动调整时间步长根据对与时间差分方案有关的truncation error截断误差而定,如果截断误差小于指定的允许程度,时间步长大小就要增大,反之,时间步长要减小。

截断误差的估测可以通过对算法的时间差分的预测修正得到。每个时间步长开始时,算法简单、粗略的计算问题的初始值,将它作为该时间步长的初始条件,然后用非线性迭代隐式算法修正,在对预测值和修正值之间的差异以截断误差为标准进行比较,如果达到了截断误差的预期程度,FLUENT就调整时间步长的大小。

参数:

截断误差Truncation Error Tolerance:指定与计算的截断误差相比较的初始值,增大这个值,会使时间步长增大,求解精度降低。反之,则变化趋势相反,但计算所需的时间要变长。对大多数情况,用默认值0.01即可。

结束时间Ending Time:指定计算的结束时间。结束时间不等于时间步乘以固定时间步长长短,应该专门指定它的值。

最大/最小时间步长长短Minimum/Maximun Time Step Size:该项指定时间步长的上下限值。如果时间步长很小,计算要花费的时间和所占空间就高,如果时间步长很大,计算精度就不够。

最大/最小步长改变系数Minimum/Maximum Step Change Factor Limit:限制了每一步时

间步长内步长改变的程度。其结果是使得时间步长内计算更加顺利,特别是当出现高频率的扰动时。如果时间步长改变系数f 由物质截断误差和计算截断误差求得,时间步长t ?n 用以下方法求得:

● 1

● 1

● f min

● f

固定时间步长的数量Number of Fixed Time Steps :指定固定时间步长的数量,该步骤要在时间步长开始改变之前进行。这个值就是Iterate 面板上Time Step Size 项。

较好的方法之一是在将时间步长该为适应性之前,先进行几步固定时间步长的迭代。有时候由于计算开始时的跳跃导致了假性离散误差,这些错误在一开始被离散掉,但会影响适应性时间步长的调整,而且计算开始时,时间步长也会特别小。

22.16 definition of residuals for the coupled solvers

耦合算法的残差仅仅是守恒变量(W)随时间的变化率。RMS 残差是计算域内每个网格内残差的均方根。

上式是耦合算法中所有耦合方程的没有经过放大(unscaled )的残差之和。耦合算法残差的求解和分离算法顺序一样。

一般来说,用上面的方程很难判断残差是否收敛,因为该残差没有scaled 。特别是在房间内的自然流动这种入口流速与残差相比相差不多的封闭流动,更难判断是否收敛。FLUENT 将残差用scaling 因子放大,scaling 因子用流经计算域的流速来代表。经过放大的残差定义式是:

分母是最初五次迭代的绝对值最大的残差。

上面经过放大的残差判断计算收敛就很有用了。使用的方法在第22.19.1节中讲述。有时候在计算过程中把残差减少了的数量级作为判断收敛与否的标准也是一种好方法。针对这个目的,FLUENT 提供了另一种方法叫normalize ,该法用迭代M 次以后的最大残差去除残差,M 可以由用户自己设定。

残差和的标准化normalization 是用M 次迭代后最大的残差去除N 次迭代的残差和

这种方法的残差标准化保证了所有方程的初始残差是1,有时候判断残差收敛很有用。系统默认M=5,使标准化残差与放大了的残差相等。标准化因子可

以在residual monitors控制面板中指定。

Overview of using the residual monitors panel

Plot parameters

如果选择了绘出残差值(在计算过程中绘出或是计算结束后绘出),有几个参数可以修改。

在plotting下面的控制面板中,可以指定绘图所用图形框的ID。迭代过程中更新的残差值临时画在激活的图形框中,然后返回到原来的图形框中。这样,残差值图就保存在一个相对独立的图形框中而并不与其他图形处理框相互影响。

改变plotting下面的iterations值,就修改了要绘制的残差图上要展示的横坐标间隔大小。如果将这个值设定为n,那么FLUENT就会展示出第n步结束的残差历史值对应的点。由于y轴表示的是经过放大后的在所有残差点最大最小值之间的值,所以可以通过修改iterations值使其小于原来设定的1000来放大残差图。举例来说,如果残差在计算紊流时很早就开始震荡,其峰值增大了残差值的范围,这使得后面的残差波动几乎分辨不出来。这时,设定残差的iterations值,使残差图不包括前面的峰值,这样,y轴的取值范围就会更合理。

还可以通过修改残差图的轴axes和残差曲线curves,改动残差分布。

Disabling monitoring

如果求解的问题中涉及到很多方程(比如紊流特性和多种物质),残差图就要绘制所有残差曲线,这样读取数据有困难。这种情况下,可以有选择的只控制一部分残差曲线,绘出对收敛影响最大的变量残差。方法是打开或关闭residual monitors 面板上的相关check项。

Controlling normalization

默认方法是放大残差,收敛标准为10-3,能量方程和P-1方程为10-6,也可以改用标准化方法求解残差。标准化方法既可以用scaled 方法也可以用unscaled 方法。需要注意的是如果用了标准化方法,收敛标准就要适当的调整。关于如何根据不同残查报告调整收敛标准看第22.19.1节。

!如果是从scaled的残差换成unscaled型残差(反之亦然),还是标准化处理残差,必须要点击renorm键重新计算标准化因子。

如果希望标准化残差,只要打开normalize选项即可。标准化因子这时会自动出现在控制面板上。FLUENT会normalize打印出的或绘出的每个变量的残差。默认的标准化因子是前5次迭代后的最大残差值。要改动最大残差值的取值M,可在normalization控制面板上改动。大多数情况下,最大残差值会出现在迭代场指定的迭代次数之后不久。如果出现了这种情况,可以点击renorm键重置所有变量的最大化因子使其取值是残差的最大值。后面的计算和画图就会用新的标准化因子。

还可以明确指定标准化因子。方法是在相应的残差控制面板上输入相应的标准化控制因子。

如果想输出未经标准化,也没有放大unscaled的残差,只要关闭normalize 和scale选项即可。要注意的是,不管报告的残差是normalized 还是scaled,unnormalized、unscaled的残差都保存在数据文件中。

Postprocessing residual values

如果收敛困难,绘出残差流场(比如用等值线图)判断高残差的位置。如果用的是coupled计算方法,所有变量的残差值在residuals对话框里就有。但如果用的是segregated算法,就只有mass imbalance。

22.16.3 Monitoring forces and moments

每次迭代结束,lift coefficient、drag coefficient、moment coefficient都会计算并保存到收敛纪录中。该记录可以绘出并保存到另外一个文件中。该文件一FLUENT XY plot格式保存。在计算外部空气动力学问题时,monitoring forces控制受力是一种有用的方法。例如,对受力需要仔细研究时,有时,受力在残差降到10-3之前就已经收敛了,这是用改法可以比值用残差控制收敛提前停止计算,从而节省了时间。(但一定要用flux reports检查质量流速和热传递速度,以保证质量守恒和能量守恒可以严格成立)。

!force coefficient 和moment coefficient用第26.8节中所讲的参考值。特别要注意的是,force coefficients 用参考面积、参考密度、参考速度求,而moment coefficient 用参考面积、参考密度和参考速度、参考长度求。

!只有过程中的force coefficient数据可以保存。如果要改变任何控制受力force monitoring 的参数,比如参考值、受力矢量force vector、moment center、moment axis、wall zones,在数据中就会看到其不连续性,以前的数据没有更新。一般,如果要改变参数,就要在继续迭代之前删掉前面的force coefficient数据。

Monitoring forces in unsteady flow calculations

如果计算非稳态流,每次更新时间步长后就会更新指定的force coefficient,不是在每次迭代以后都更新。受力控制的其他特征和有关的建立过程不变。

Overview of using the force monitors panel

用force monitors控制面板打印、绘制、保存指定趋于的drag ,lift, moment coefficients的收敛历史。

Solve—monitors—force

该面板中指定变量类型和系数、wall zones。其他附加条件可以分别给出,还可以修改绘图参数。

!记得修改以后要点击apply

specifying the force coefficient report

选择要控制的每个系数,是在force monitors面板设定好合适的参数然后点击apply。可以在迭代过程中同时控制1到3个系数。选定了希望计算的系数后,控制面板上会展示出该系数,点击apply可以保存现在的设置。

下面是指定force coefficient的步骤:

1、指明要report的类型(打印、绘图、写入文件)

2、如果要用printout,plot,file控制force或者单个壁面上的moment,看以下

叙述。

3、选择想要的drag,lift,moment系数。

4、在wall zones清单里,选择要计算系数所在的壁面区域。如果控制多个

系数,可以在不同区域计算这些系数。

5、根据所选的系数,计算如下

●如果控制drag或者lift系数,输入对应的force vector在各方向上的

分量。Force vector只有在选择了drag 或lift系数才会出现。系统默

认计算x方向上的drag系数,y方向上的lift系数。

●如果控制的是moment系数,输入moment center在三个坐标上的位

置。默认的中心位置在原点。除了中心位置,还要输入moment矢

量的分量。目前为止,一次只能控制moment的一个分量。在about

下拉菜单种选择x轴、y轴或者z轴。对于二维流动来说,只存在z

轴的moment矢量。

6、点击apply重复上面的过程设定其他参数。

Printing ,plotting ,and saving force coefficient histories

有三种方法得到选择的force 系数,print 、plot、save.也可以同时使用这三种方法。

!如果没选择save,则计算所得到的信息会在退出FLUENT是全部丢失。如果要展示当前的force-coefficient,只要点击plot即可。

Plot parameters

选择绘出force系数,有几个参数可以修改。在绘图控制框中,可以指定每个force系数画的图形框地址。这样在迭代过程中,激活的图形框就临时设定在该框中更新图形,然后才返回到它原来的值。这样,force 系数可以在单独的图形框中绘出而不会影响其他的图形。

还可以修改图形框的横纵坐标。

Monitoring forces and moments on individual walls

FLUENT默认的计算和控制总force或moment方法是同时计算所有算定的壁面参数。如果选定了多个壁面,就要分别控制每个壁面上的force 或者moment。这可以通过打开per zone选项实现。指定的force vector或者moment轴会对所有选定的壁面有效。

如果结果要打印到console ,force 或moment会单独列为一行。如果结果要绘图,则每个壁面上的系数都会以独立的曲线形式在另外的绘图框中画出。如果结果要保存文件,则文件会在XY plot文件形式保存。

Discarding the force-monitoring data

如果觉得包括force控制在内的数据文件没有用,(比如重新开始计算或者改变了计算参考值),可以不要前面的数据,点击clear键。这样就删除了所有在系数下拉菜单中选定的控制系数的数据,以及相关的历史文件。只有force控制数据可以用这种方法删除而其他数据不受影响。

22.10changing the courant number

对于耦合算法,时间步长主要通过courant数(CFL)控制,时间步长与CFL 成正比。

线性稳定性理论指明了courant的允许取值范围(即:在给定数值方案条件下,使计算稳定的取值范围)。指定了一个courant值,FLUENT就会计算出合适的时间步长。通常来说,时间步长越长,收敛越快。

隐式耦合算法的稳定性限制与显式耦合算法限制有很大不同。显式算法的限制范围更小,值较低。具体选择方法下面会介绍。

22.10.1courant number for the coupled explicit solver

线性稳定性分析表明,显式耦合算法多阶方案courant数的最大允许取值根据阶数和扩散项、粘度项更新的频率决定。但通常来说可以假设多阶方案的courant数取2.5合适。这个稳定限制值要比实际值低。因为控制方程力的非限制性关系。

默认的显式耦合算法courant数取1.0。在某些2维问题中可以增大。取值最好不要超过2.0。

如果问题正在收敛,即:如果残差正在迅速下降,问题也得到了正确的建立

和初始化,这时的courant数应该降低。根据建立初始条件的严格性,应该降低courant数到0.1至0.5之间。一旦问题初始阶段过去,就可以再把它增大。

22.10.2courant number for the coupled implicit solver

线性稳定性理论表示隐式耦合算法用到的gauss-seidel方法是无条件稳定的。但是和显式耦合算法一样,控制方程的非线性限制了求解的稳定性。

默认的courant是5.0,经常增大该值到10、20、100或者更高,这要视问题的复杂性而定。同样,在问题建立的时候,需要的courant数较低(当问题求解是高度非线性的),但是随着求解过程可以逐渐增大。

耦合AMG算法可以在给定循环内探测多阶循环的发散。如果求解发散,他会自动减小courant数,再次尝试迭代,并在屏幕上给出提示信息。自动测试五次。一旦成功的完成了当前迭代,courant就会自动回复到原来的值,在进行下一次迭代。

22.10.3user inputs

courant数的设置在solution controls 面板

solve—controls—solution

加速步长法

实验报告 实验名称:加速步长法 院(系):机电学院 专业班级:机械制造及其自动化 姓名:赵丹 学号:100710431 2013年5 月3 日

实验一:加速步长法实验日期:2013年5 月3日一、实验目的 了解MATLAB的基本运用 了解MATLB在优化中的使用 二、实验原理 加速步长法是利用试探来确定单谷函数的初始搜索区间。其主要思路是:从一点出发,按照一定的步长,试图确定出函数值呈现“高低高”规律的相邻三点。从一个方向试探搜索,如不成功,则沿反方向探索。如方向正确,则加大步长探索。直至最终三点x1x2x3,满足x1f(x2)

h=-h; x2=x4; f2=f4; else x3=x2; x2=x1; x1=x4; break; end end end left=min(x1,x3); right=x1+x3-left; 四调用执行程序: clc syms t f=t^3-t^2-2*t+1; [left,right]=xiti4_1(f,0,0.1) 执行结果:left = 0.7000 right = 3.1000 实验小结 通过本实验了解了了matlab的基本操作方法,了解加速步长法的原理与基本运用

ansys时间步长的确定

ANSYS 瞬态动力学分析中的时间步长的选择 对于瞬态动力学分析问题,如何选取合适的时间步长,才能保证得到正确的计算结果呢?这是我们在瞬态动力学分析中需要关注的一个问题。 积分时间步长的选取决定了瞬态动力学问题的求解精度:时间步长越小,则计算精度越高。太大的时间步长会导致高阶模态的响应出错,从而会影响到整体的响应。但是太小的时间步长会浪费计算资源。要得到一个较好的时间步长,应该遵循下述原则: (1)分析响应的频率。 时间步长应该小到可以分析结构的响应。既然结构的动力响应可以看成是一系列模态的组合,时间步长应该可以求解对响应有贡献的最高阶模态。对NEWMARK 积分方案而言,发现可以使用感兴趣结果的最高阶频率的每个周期内取20个点就可以得到大致合适的解答。这就是说, f t 201=? 上式中,t ?为时间步长,f 为所关注系统的最高频率。 如果需要计算加速度,则上述时间步长需要更小一些。 对于HHT 时间积分方法,可以使用同样的时间步长。在使用相同的时间步长和时间积分参数的前提下,HHT 方法比NEWMARK 方法更精确一些。 (2)分析加载的载荷-时间曲线。 时间步长应该足够的小到能跟踪载荷历程。响应一般要比施加的载荷慢半拍,阶跃载荷尤其如此。它需要较小的时间步以便能紧密的跟踪载荷的改变。它应该小到1/180f 会较合适。 (3)分析接触频率。 在包含接触(碰撞)的问题中,时间步长应该小到足以捕捉接触面之间的动力传递。否则,会产生明显的能量损失,而碰撞将不再是理想弹性的。时间步长可以由接触频率得到 c Nf t 1=? m k f c π21=

复化梯形法 复化矩形法 变步长梯形 变步长辛普森

陕西科技大学 机械教改班 用C++的积分 其实积分的思想就是,微分—>求和—>取极限,如果是用纯手工法那就是先对一个函数微分,再求出它的面积,在取极限,因为我们的计算速度和计算量有限,现在有了计算机这个速度很快的机器,我们可以把微分后的每个小的面积加起来,为了满足精度,我们可以加大分区,即使实现不了微分出无限小的极限情况,我们也至少可以用有限次去接近他,下面我分析了四种不同的积分方法,和一个综合通用程序。 一.积分的基本思想 1、思路:微分—>求和—>取极限。 2、Newton —Leibniz 公式 ?-=b a a F b F dx x f ) ()()( 其中,)(x F 被积函数)(x f 的原函数。 3、用计算机积分的思路 在积分区间内“微分—>求和—>控制精度”。因为计算机求和不可以取极限,也就是不可以无限次的加下去,所以要控制精度。 二.现有的理论 1、一阶求积公式---梯形公式 ?=+-=b a T b f a f a b dx x f )]()([2 )( 他只能精确计算被积函数为0、1次多项式时的积分。 2、二阶求积分公式——牛顿、科特斯公式 ?=+++-=b a S b f a b f a f a b dx x f )]()2(4)([6)( 他只能精确计算被积函数为0、1、2、3次多项式时的积分。 三.四种实现方法 1.复化矩形法 将积分区间[a,b]等分成n 个子区间: ],[],[],[],[],[112322110n n n n x x x x x x x x x x ---、、、 则h=(b-a)/n,区间端点值k x =a+kh

变步长的梯形积分方法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

变步长的梯形积分方法的应用 一、问题背景 实际问题当中常常需要计算积分,有些数值方法,如微分方程和积分方程的求解,也都和积分计算相关联。 依据人们所熟知的微积分基本定理,对于积分 ()dx x f I a ?=b , 只要找到被积分函数()x f 的原函数()x F ,便有下列牛顿-莱布尼茨(Newton-Leibniz )公式: ()()()a F b F dx x f b -=?a . 但实际使用这种求积分方法往往有困难,因为大量的被积函数,诸如 ()0sin ≠x x x ,2x e -等,其原函数不能用初等函数表达,故不能用上述公式计算。即使能求得原函数的积分,有时计算也十分困难。例如对于被积函数 ()6 11x x f +=,其原函数 ()C x x x x x x x x F ++-+++??? ??-+=1 313ln 3411arctan 61arctan 3122, 计算()a F ,()b F 仍然很困难,另外,当()x f 是由测量或数值计算给出的一张数据表时,牛顿-莱布尼茨公式也不能直接运用。因此有必要研究积分的数值计算问题。 二、数学模型 由于牛顿-科特斯积分公式在8≥n 时不具有稳定性,故不能通过提高阶数的方法来提高求积精度。为了提高精度通常可以把积分区间划分成若干的子区间(通常是等分),再在每个子区间上用低阶求积公式。这种方法称为复合求积法。 复合梯形法虽然方法简单,但是却不能估计积分精度,这有时候是很不方便的。要想控制积分精度,可以采用如下的方法,设积分区间已经划分为n 个子区间,这时再把区间划分更细,给出新的积分结果,如果前后两次积分的差比给定的误差容限小的话,则停止细华否则继续增加积分区间。这种方法原理很简单也 容易实现,但是实际计算中一般采用的比较少,因为这种方法比较机械效率不是太高,实际上采用比较多的通常是Romberg 方法。 三、算法及流程 给定义误差容限小量TOL ,对于()dx x f b a ?,有复合梯形公式

CHP22时间步长

CHP22.15 时间步长的设定 绘制当前时间数据图的方法: 使用显式非稳态公式或使用的是适应时间步长法,推荐用绘制当前时间或当前时间步长数据图。方法: Solve—Monitors—statistic 在statistics框中选择time或是delta_time 项。 确定与时间有关的求解参数: 一阶或二阶隐式求解方法: Max Iterations per Time Step:当FLUENT用隐式方法求解时,每个时间步长都要迭代。设定了每个时间步长内迭代的最大数值,如果在达到这个数值以前迭代收敛的话,求解过程会提前进入下一个时间步长。 Time Step Size:时间步长大小是t?的数值大小。由于FLUENT是完全隐式,因此没有队时间步长大小的要求。但为了正确模拟瞬态流动,时间步长大小的数量级至少应比系统中正在模拟的最小时间常量要小一个数量级。判断t?的选择的一个好方法是观察FLUENT在每个时间步长内迭代至收敛的次数,理想次数是10到20次,如果次数多于这个数值,则说明时间步长太大了。如果每个时间步长内只有几次迭代,则说明t?应该增大。常见的问题是FLUENT启动很快,而衰减也很快。这样情况下,聪明的办法是开始的5到10个时间步长设的相对较小,然后随着计算过程逐渐增加t?。 对于周期性时间的计算,应该根据时间周期的大小选择时间步长。比如说,对于转子/定子模型,可以在每个叶片通过之间设置20个时间步长。再比如对于涡轮流散的模型,每个周期20个时间步长比较好。 迭代时间步场面板上,默认的时间步长大小是固定的。要想在计算过程中随时修改时间步长大小,则要选adaptive并在adaptive time stepping中设好参数。第22.15.2节中详细讲述该内容。 22.15.2 调整性时间步长 调整性时间步长只有在segregated算法和coupled implicit算法中才能用,coupled explicit 算法不能用。另外,VOF或是分散相模型也不能用。 自动调整时间步长根据对与时间差分方案有关的truncation error截断误差而定,如果截断误差小于指定的允许程度,时间步长大小就要增大,反之,时间步长要减小。 截断误差的估测可以通过对算法的时间差分的预测修正得到。每个时间步长开始时,算法简单、粗略的计算问题的初始值,将它作为该时间步长的初始条件,然后用非线性迭代隐式算法修正,在对预测值和修正值之间的差异以截断误差为标准进行比较,如果达到了截断误差的预期程度,FLUENT就调整时间步长的大小。 参数: 截断误差Truncation Error Tolerance:指定与计算的截断误差相比较的初始值,增大这个值,会使时间步长增大,求解精度降低。反之,则变化趋势相反,但计算所需的时间要变长。对大多数情况,用默认值0.01即可。 结束时间Ending Time:指定计算的结束时间。结束时间不等于时间步乘以固定时间步长长短,应该专门指定它的值。 最大/最小时间步长长短Minimum/Maximun Time Step Size:该项指定时间步长的上下限值。如果时间步长很小,计算要花费的时间和所占空间就高,如果时间步长很大,计算精度就不够。 最大/最小步长改变系数Minimum/Maximum Step Change Factor Limit:限制了每一步时

二维铸造充型过程数值模拟的特征分数步长法

二维铸造充型过程数值模拟的特征分数步长法? 鲁统超1,葛亮2 1山东大学数学与系统科学学院, (250100) 2 山东大学数学与系统科学学院, (250100) E-mail :lutc@https://www.doczj.com/doc/5e113984.html, 摘 要:铸造充型过程的数学模型是包括连续性方程和动量方程的偏微分方程组。本文利用分数步长法将动量方程分裂成两部分,对第一个方程采用特征差分法进行处理,对第二个方程结合连续性方程进行处理后得到压力的 泊松方程,用迭代法进行求解,给出了收敛性分析和稳定性条件。 关键词:分数步长;特征差分;收敛性;迭代。 1. 引 言 铸造生产的实质就是直接将液态金属浇入铸型并在铸型中凝固和冷却,进而得到铸件。液态金属的充型过程是铸件形成的第一个阶段。许多铸造缺陷(如卷气、夹渣、浇不足、冷隔及砂眼等)都是在充型不利的情况下产生的。因此,了解并控制充型过程是获得优质铸件的重要条件。但是,由于充型过程非常复杂,长期以来人们对充型过程的把握和控制主要是建立在大量实验基础上的经验准则。随着计算机的发展,铸件充型过程数值模拟才得到广泛应用。 充型过程流场数值模拟的主控方程均为非线性方程。其计算使用有限差分或有限元等数值方法求解质量守恒方程(连续性方程)和动量守恒 方程即Navier-Stokes 方程,以得出流体运动规律。在以前的研究中,Chorin(1968)和Temam(1969)分别独立的提出投影法。1972年由Minnesota 大学的Patankar 与Spalding 提出了simple 算法,这是一个压力修正算法,在以后的研究中又有simplec 方法,Raithby 提出的simplex 方法, Sheng 等提出的simplet 算法。 本文中利用分数步长法的思想将动量方程分裂成两部分,对第一个方程采用特征差分法求解,对第二个方程结合连续性方程进行处理后得到压力的 泊松方程,我们用迭代法进行求解,给出了收敛性分析和稳定性条件。 2. 问题的数学模型 铸造充型过程的模型主要由连续性方程和动量方程组成。 (a) 流体的动量方程 1x u p V u g u t x μρρ ??=???++???r " (2.1) ? 本课题得到教育部高等学校博士点基金资助,编号:20030422049 - 1 -

Fluent时间步长

用FLUENT计算非稳态问题,是不是在计算时必须保证在每个时间步timestep里都要收敛才行,否则计算结果就不对呢也就是说,在iteration选项里,max iteration pertime step设为一个值,比如500,就是如果500次迭代后仍未收敛,进入下一步迭代,那对结果会有什么影响。 对于隐式非定常格式,原则上,每个时间步长内必须保证结果收敛。在fluent 的帮助中就有这样的话:“对于不可压流动,在每个时间步内,不可压解必须迭代直至收敛。”另外,我们回归到fluent内部计算的本源,它实质就是一种差分算法,通过不断逼近来获得真实解,这样我们就不难理解为什么在每个时间步长内需要收敛了。max iteration pertime step 设定的是最大时间步,在单一步长内,如果结果已经收敛,则会自动跳至下一时间进行计算。所以其设定要纵观全局。但对于周期性流动,这种收敛性的要求就相对松动一些。不过你需要多计算几个周期,等计算结果达到对时间的周期状态后,再对结果进行储存。 对于显式非定常格式,在Fluent帮助中这样说:“一定记住,对于显式非定常格式,每一个迭代就是一个时间步。” 如果每个时间步内结果没有得到收敛,则很有可能你所得到的结果是不真实的,但是一个时间步内的不真实性应该不会影响到下一个时间步长内的计算。因为在每一个时间步开时,fluent 都会进行初始化。在单个时间步内,它实际是按照稳态进行计算的。 time step size的设定是根据你的计算需要,一般是你的特征长度(比如说管道的长度)除于特征速度(比如平均速度)的值再小一到两个量级即可,如果你的time stip size太大,计算会提示你的,改小即可。

变步长梯形法

#include #include float f(float x) { float s; s=1/(x*x); return(s); } main() { float a,b,c,h,x,T1,T2,S; float T0; printf("变步长梯形法求积分:\n"); printf("需要求解的积分式为f(x)=1/(x*x)\n"); printf("请输入a: "); scanf("%f",&a); printf("请输入b: "); scanf("%f",&b); printf("请输入c: "); scanf("%f",&c); h=b-a; T1=h*(f(a)+f(b))/2; S=0; x=a+h/2; do { S=S+f(x); x=x+h; }while(x=c) { T1=T0; S=0; x=a+h/2; do { S=S+f(x); x=x+h; }while(x

T2=T1/2+h/2*S; printf("步长为%f时\t Tn=%f \t T2n=%f \t 误差变化:%f\n",h,T1,T2,fabs(T1-T2)); h=h/2;T0=T2; } printf("************************************************************** **************\n"); printf("所求的结果为=%f\n",T2); }

变步长梯形公式(C语言)

变步长梯形公式(C语言) 程序: // cehngxu.cpp : 定义控制台应用程序的入口点。 // #include"stdafx.h" #include"stdio.h" #include"math.h" double f(double x) //这里自定义了函数,因为出现sin(0)/0的情况,系统无法计算;{ double y; if (x == 0) y = 1; //把x=0作为一种情况,单独拿出来; else y = sin(x) / x; //正常情况下的函数; return(y); } //编写这个自定义函数便于你在作业中的计算,对于不用的题目只需改动一下函数即可计算; void main() //主函数; { double a , b ,h,k,s,t[4998]; //数组的定义中不能出现变量,故对其任意取值,一般取一个很大的数; int n = 1, m = 0; printf("please input a="); scanf_s("%lf", &a); //在VC环境下用scanf输入没有问题,但是在我这编译环境visual studio 2013下需要用scanf_s()输入; printf("please input b="); scanf_s("%lf", &b); t[1] = (b - a)*(f(a) + f(b)) / 2; do { h = (b - a) / n; s = 0; for (k = 0; k < n; k++) { s += f(a + (k + 0.5)*h); } t[2 * n] = t[n] / 2 + h / 2 * s; //梯形的递推公式 n = 2*n; m = m + 1;

分步步长法和多重网格法_实验

微分方程数值解 姓名: 班级: 一.二维抛物方程分布步长法

实验用的二维热传导 是方程是: 22(,,)sin()sin()0,1,0t u x y t x y e x y t πππ-=<<> 它满足书中 0,,0(,,0)(,)(0.,)(,,)(,0.)(,.)0l xx yy u u u x y l t u x y x y u y t u l y t u x t u x l t ?=+<<>?? =??====? 的要求,这里1l =。以0t =为初始时刻,分别用ADI,LOD,对称LOD (记为symLOD )进行算法设计,求在时刻1t =的数值解,并与精确解做比较。 实验过程: 1.t=1时刻原始图像 当x,y 方向上的网格数是160,时间t 方向上的网格数是40时,t=1时刻的原始图像为

2.ADI法恢复的图像 当x,y 方向上的网格数是160,时间t方向上的网格数是40时,ADI法所绘t=1时刻图像为

3.LOD法恢复图像 当x,y 方向上的网格数是160,时间t方向上的网格数是40时,LOD法所绘t=1时刻图像为 4.对称LOD法(记为symLOD)恢复图像

当x,y 方向上的网格数是160,时间t方向上的网格数是40时,symLOD法所绘t=1时刻图像为 5.x,y方向上的网格数和误差关系 t=40固定,x,y方向的的网格数分别取[10,50,100,250,500] 三者的误差的二范数分别为(见error2.m) ADI=[8.730504221745552e-010, 6.029451734592973e-009, 1.265923756496139e-008, 3.206705449439820e-008, 6.425372124435197e-008]; LOD=[8.730504221745788e-010, 6.029451734600921e-009, 1.265923756507861e-008, 3.206705449886893e-008, 6.425372131563230e-008]; SymLOD=[8.730502288715592e-010, 6.029452708815150e-009, 1.265923951388676e-008, 3.206705936704847e-008, 6.425373098974900e-008];

数值分析变步长求解积分

#include #include # define N 100 double function(double s) { double result; result=sin(s)/s; return result; } int explode2(int k) { int i,s=1; for(i=1;i

} for(i=0;i<2*2*2*N-1;i++) { sum3+=function(a+(i+i/2)*h/8); } d[0]=sum;d[1]=sum1;d[2]=sum2;d[3]=sum3; for(j=1;j<4;j++) T[i][j]=1/2*T[i][j-1]+h/explode2(j)*d[j]; for(i=1;i<4;i++) { for(j=0;j<4-i;j++) T[i][j]=explode4(i)/(explode4(i)-1)*T[i-1][j+1]-1/explode4(i)*T[i-1][j]; } printf("Romberg=%lf",T[3][0]); }

变步长,辛普森,梯形公式

#include #include #include #include #include #define ESC 27 #define EPS 0.5e-7 #define f(x1) (-2.0/(x1*x1-1)) #define g(x2) (-2.0/(x2*x2-1)) #define s(x0) (-2.0/(x0*x0-1)) char t; void tixing() { double a1=2,b1=3; double T,h1,x1; int n,i; printf("please input n:"); scanf("%d",&n); h1=(b1-a1)/n; x1=a1;T=0; for(i=1;i

simulink步长设置

simulink仿真设置 一、算法设置 1.变步长(Variable—Step)求解器 可以选择的变步长求解器有:ode45,ode23,ode113,odel5s,ode23s 和discret.缺省情况下,具有状态的系统用的是ode45;没有状态的系统用的是discrete。 1)ode45基于显式Runge—Kutta(4,5)公式,Dormand—Prince对.它是—个单步求解器(solver)。也就是说它在计算y(tn)时,仅仅利用前一步的计算结果 y(tn-1).对于大多数问题.在第一次仿真时、可用ode45试一下。 2)ode23是基于显式Runge—Kutta(2,3).Bogackt和Shampine对.对于宽误差容限和存在轻微刚性的系统、它比ode45更有效一些.ode23也是单步求解器。 3)odell3是变阶Adams-Bashforth—Moulton PECE求解器.在误差容限比较严时,它比ode45更有效.odell3是一个多步求解器,即为了计算当前的结果y(tn),不仅要知道前一步结果y(tn-1),还要知道前几步的结果y(tn-2),y(tn-3),…; 4)odel5s是基于数值微分公式(NDFs)的变阶求解器.它与后向微分公式BDFs(也叫Gear方法)有联系.但比它更有效.ode15s是一个多步求解器,如果认为一个问题是刚性的,或者在用ode45s时仿真失败或不够有效时,可以试试odel5s。odel5s是基于一到五阶的NDF公式的求解器.尽管公式的阶数越高结果越精确,但稳定性会差一些.如果模型是刚性的,并且要求有比较好的稳定性,应将最大的阶数减小到2.选择odel5s求解器时,对话框中会显示这一参数.可以用ode23求解器代替。del5s,ode23是定步长、低阶求解器。 5)ode23s是基于一个2阶改进的Rosenbrock公式.因为它是一个单步求解器,所以对于宽误差容限,它比odel5s更有效.对于一些用odel5s不是很有效的刚性问题,可以用它解决。 6)ode23t是使用“自由”内插式梯形规则来实现的.如果问题是适度刚性,而且需要没有数字阻尼的结果,可采用该求解器。 7)ode23tb是使用TR—BDF2来实现的,即基于隐式Runge—Kutta公式,其第一级是梯形规则步长和第二级是二阶反向微分公式.两级计算使用相同的迭代矩阵.与ode23s相似,对于宽误差容限,它比odtl5s更有效。 8)discrete(变步长)是simulink在检测到模型中没有连续状态时所选择的一种求解器。

相关主题
文本预览
相关文档 最新文档