当前位置: 首页 > news >正文

双向流热固耦合的收敛

1 收敛性

如果想把流固耦合计算过程的收敛性弄清楚,必须理解流固耦合的求解过程和对流场与固体场的定义设置:

-这个与其他的真实物理场可能有所不同

-例如你的初始条件可能是不同的当遇到收敛困难时,需要看一下的求解过程用户使用监测点和备份文件来回答这些问题

图片

为了流固耦合计算的收敛性,程序为用户提供了丰富的控制手段和方法包括:

-求解问题的初始化;

-时间步长;

-稳定性控制;

-每个时间步内流体计算的迭代次数;

-耦合迭代次数;

-流固耦合界面上的亚松弛系数在调整这些控制参数的之前,用户应该弄清楚计算的问题不收敛的原因。

在开始流固耦合计算之前,用户应该使用具有代表性的载荷分别独立的进行流体和固体计算:

-检查流体和固体计算环境的基本设置是否正确;

-用户在每个场得设置尽可能与稍后的流固耦合计算中的设置相同,例如相同的时间步等;

-结构计算使用固定的压力边界条件;

-流体计算可以使用固定的边界或简化的动边界;

如果提供具有带变形的流体载荷有困难,则建议用户可以使用系统耦合器进行单向流固耦合计算,实现将流场压力传递到固体场作为载荷来完成固体场得计算。

2

初始化

完成流体和固体环境分别求解后,下一步需要考核如何对

流固耦合计算进行初始化。这里我们将考虑一个瞬态双向

流固耦合的初始化

(1)不提供前一个稳态计算结果

-初始流体求解来自于在流体计算中设置的压力和速度;

-结构没有预应力(0初始位移);

这个情况适合于初始流场压力是已知的并且可以被准确指

定(典型情况为0)没有从流场传到固体场得初始力;

-使用Fluent中的操作压力设置。

在固体场环境设置中没有要求提供预应力的结构。

图片

(2)提供稳态流体计算结果

-初始的流体求解来自于前一个稳态流体求解-结构没有预应力(0初始位移)该方法适用于作用于流固耦合界面的初始流体力来自于稳态流场求解,这样将不会引起瞬态结构计算时在开始计算时结构发生突然变形,从而造成求解失败。承受预应力要求的结构,没有其他载荷作用在上面。

在右侧压电FSI喷墨喷嘴例子中,需要初始稳态流体计算结果来获得油墨半月形状,但是此时的压力的数值并不能显著影响结构的偏斜。

图片

图片

(3)提供稳态流固耦合计算结果

-初始的流场和固体场的求解来自于收敛的稳态双向流固耦合计算结果。

对于瞬态计算,这将提供最一致的起点。该方法适用于,结构在进行瞬态计算之前已经存在预变形/预应力的情况。

该操作要求使用稳态到瞬态的重启动设置,但是目前该设备并不支持但是用户可以采用下面方法代替,用户可以使用一个初始瞬态系统耦合器工况行为计算,就像稳态工况一样。

为了模拟稳态/静态工况在瞬态结构动力学分析系统中设置关闭时间积分选项,这样设置将使瞬态计算退化为一个静力学计算工况。

流体环境必须保持瞬态计算模式

-其行为就像每个时间步使用1次迭代的压力基耦合迭代求解的稳态流体计算;

-在流体求解控制选项下方设置Courant数为1e6或更高值,对于动量和压力方程的显式松弛系数设置为1

-设置时间步尺寸为一个伪瞬态时间步开始求解,然后重启动后,打开瞬态结构动力学中的时间积分选项,并且调整Fluent设置来重新求解纯瞬态流体计算。

选项2(稳态流体求解)是一种最常用的初始瞬态FSI工况方式该选项提供了一个非0力,在瞬态求解起始时刻传递结构。

这可能是好的情况,在瞬态计算开始时可能会产生一个小的突变,当后处理观察结果时,可以忽略这个突变。

当存在下面情况时,可能就不行了

-流体是不可压缩,特别当和小的时间步设置联合使用时,这是因为很小的突变都是导致较大的压力变化,从而影响计算的收敛性和准确性。

选项2(稳态流体求解)当存在下面情况时,可能就不行了

-结构的刚度非常小,即非常柔软,这就是导致初始力会产生较大的结构变形从而引起FLUENT计算失败或通过结构区域时产生较大的压力变化。

-初始的跳跃会引起结构振动,这个振动必须经过较长的时间才会消失,与刚度成比例的阻尼为刚度阻尼系数,可以用来消耗不期望的高频结构振动响应。

-监视点的力和位移将有助于观察到在开始求解时结构的具体响应。建议用户在每个迭代监听数据,然后用户可以观察在每个耦合迭代过程中的力/位移是如何响应的。

对于开始求解时,建议用户回答以下问题

-什么是传递到结构中的初始力?

-如果力存在较大阶跃变化,在给定的时间步,你将希望结构具有怎样响应?

-你具体希望什么样的位移?

-在用户给定的时间步中,你希望流体系统对这些位移具有怎样的反应?减少时间步的大小通常让瞬态开始求解的鲁棒性变得更差

-对于一个给定的变形,越短时间的流体响应,则流体加速度的响应越大,压力的变化越大。

3

监测收敛

默认数据传递收敛表,在FSI界面上,提供了一个好的观察力/位移收敛的途径。

期望的图形是锯齿形,显示了每个时间步的收敛性,典型的曲线形状是在下一个时间步开始时发生跳跃。默认情况下,归一化的数据传递变化率必须小于1%,此时FSI才能收敛。

左侧表显示X轴的耦合步,可以明显观察到在每个耦合步都满足了收敛。耦合的迭代次数是默认的。

图片

前面已经介绍了FSI的计算过程监视

-Fluent求解器输出流场的收敛信息;

-结构求解器输出结构的收敛信息;

-对于力,位移Fluent在每次迭代进行监视。

4

收敛控制

ANSYS提供了一些收敛控制方法,这些方法可以很容易的完成FSI的收敛求解,它通常以下面的参数设置开始:

-默认的耦合迭代:,最小1;最大5(瞬态)

-默认的数据传递亚松弛系数为1

-对于瞬态FSI,可能每一次耦合迭代过程中,Fluent有5次迭代,但是这种情况是不独立的。

-基于用户需要重新求解的物理的FSI的时间步

-时间步长取用户感兴趣的最高频率的1/20;

-流场的Courant数以上面的参数为起点,根据求解行为,用户可以调整求解控制策略。

收敛控制-耦合迭代

当出现下面的情况,建议用户调整耦合次数

-一种情况就是FSI的收敛情况非常好,力收敛,位移收敛在一个时间步内是

一个稳定值,没有震荡性。

--用户仅需几次耦合迭代就可以满足数据传递的收敛目标;

--对于瞬态工况,首先要考虑就是减少时间步;

--对于稳态FSI计算,假设用户仅使用1个时间步,也至少需要5次耦合迭代,

用户也可以使用1次耦合迭代和多个时间步来代替。

-对于瞬态FSI流固耦合计算,通常情况下没有必要修改这个控制参数。

收敛控制-亚松弛系数URF

在下面情况下,用户可以调整数据传递的亚松弛系数

-用户运行一个稳态FSI工况

-应该逐步趋向于稳定求解

-通常的URF的数值为0.5

一般情况下,瞬态的FSI计算中,URF值取1

-在非稳定FSI工况下,系统的物理惯性提供了求解的稳定性

-一些瞬态工况是不稳定的,在一个时间步内的数据传递值具有震荡性。

-如果用户通过稍微减小URF值,可以满足力/位移的稳定收敛性,那这样是非常理想的,建议URF的数值不能小于0.75。

收敛控制-亚松弛系数URF

如果用户调整亚松弛系数,请记住下面的公式

% D Load Received = (1 –( 1 –URF)^Max. Coupling Iters) * 100%例如,用户设置URF=0.25,最大的耦合迭代次数为5,则% D Load Received = (1 –( 1 –0.25)^5) * 100%=76%因此,该时间步结束后,载荷的变化率为76%,即减少了载荷增量。对于瞬态FSI计算,在每个时间步的第1个耦合迭代,URF总是等于1,因此计算过程,只是在第2个耦合迭代步,才减少载荷增量。

如果载荷是阶跃变化,则仍保持恒定增量。

-Fluent迭代判断每个耦合迭代过程的Fluent迭代次数要求用户观察点的力监测行为,而不是GUI中每个时间步显示的次数。

下图中的第一个耦合步,存在太多的Fluent迭代,消耗了大量的CPU。对于这种情况,使用合理的力可以减少迭代次数。

图片

图片

收敛控制-Fluent迭代每个耦合迭代过程中越少的Fluent迭代则需要更多不必要的耦合迭代在每个耦合迭代过程中力稳定增加,并且从一个耦合迭代到下一个耦合迭代,在和MAPDL求解器进行数据交换前,力也增加。

注意,每个耦合迭代的开始或结束,观察起来不是很明显。

上图中使用的每个迭代步5次耦合迭代。

图片

收敛控制-Fluent迭代

合理的Fluent迭代次数。

在每个耦合迭代中力仅仅在开始时趋于平缓。

在每个耦合迭代中都实现完全收敛,没有意义,因为力在下一个耦合迭代中还是变化。在第一次耦合迭代中,Fluent中迭代次数越多,可能将使力进一步远离收敛值,造成收敛困难。

较少的Fluent的迭代将有助于提高FSI的计算稳定性,通过更新位移前,不让力偏移的更远,来保持MAPDL和Fluent中的耦合关系。

图片

收敛控制-时间步长

对于每个求解器,时间步长尺寸的设置基本要求是相同的,给用户提以下几点要求:

-选用的时间步长能确定每个求解器的求解过程具有良好的收敛性;

-如前所述,如果在瞬态FSI开始求解时存在小的跳跃,则越小的时间步长会使这个情况变化的越糟,而不是越好;

-如果从一个时间步到下一个时间步,力/位移存在大量的变化,可以考虑减少时间步长,但是过小的时间步长可能陷入求解结构高频振动模式,而这种结果,并不是用户所关心的。

5

收敛稳定性

实际工程中,存在一些FSI案例,无论按照前面所讲的方法,对相关的参数做如何设置,都难以保证FSI求解的稳定性。

下面的条件就可能产生不稳定的力/位移的案例

-薄结构

例如,薄板,隔膜,膜结构

-具有较小杨氏模量的结构

例如超弹材料,橡胶等

-具有很大密度的气体模型(不可压缩)或液体

通过观察力/位移监测点图来识别FSI计算中不稳定工况。

从一个耦合迭代到下一个耦合迭代中时间步中存在振荡,表明FSI耦合界面的不稳定。

图片

在第一时间步将产生振荡随着振荡幅值的增加,求解可能在一个耦合迭代失败,或第二个,第三个时间步迭代计算失败。

重要的是区分和来自较差初始条件的不稳定工况

-一个较差的初始化结果显示了在开始求解时力残差的跳跃发展,如果发生了这种情况,建议改进Fluent的初始化不稳定情况的发生伴随着小振荡的增长开始但是用户仅仅进行第二次或第三次耦合迭代,就出现了严重的不稳定,因此这种情况类似于载荷阶跃突变。

失稳机理

图片

为了解决这种情况造成的求解不稳定问题,程序提供Solution

Stabilization选项,该选项在动网格面板中求解选项中基于体积的稳定选项是关联选择的系统耦合区域单元体积的函数。

基于系数的稳定选项是流体本构方程线性矩阵系数的函数。

图片

从实际物理情况角度看,稳定手段可以减慢Fluent在FSI界面上压力的响应。

-这意味着当Fluent接受新的位移是,压力不会在Fluent中快速的增加或降低,即增加了其稳定性。

-这种“阻尼”压力响应允许用户以一种控制方式来让计算结果实现收敛,而不会发生振荡。

稳定技术工具对收敛结果没有影响。

稳定比例系数越大,则导致结果计算越稳定,即让压力变化的更慢。

-在具体的情况,需要设置恰当的值;

-对于基于体积的方法比例系数取值范围为0.01到1e5如果系统耦合所选择的单元数量较少,为了达到相同的稳定响应,则需要设置较大的稳定比例系数。

图片

如何发现恰当的稳定比例系数?

观察压力响应过程中存在多少“阻尼”?

基于体积法的比例系数等于0;发散案例的基准。

图片

基于体积法的比例系数等于1;计算仍然发散,但是能够完成更多的耦合迭代次数,并且注意到压力变化也变化的平缓了。

图片

如何发现恰当的稳定比例系数?观察压力响

应过程中存在多少“阻尼”?

基于体积法的比例系数等于2;计算不在发散,但是仍然处于欠阻尼状态,在经过7次耦合迭代后,计算仍然不能收敛。

图片

基于体积法的比例系数等于10;计算稳定了,但是处于过阻尼状态。经过7次耦合迭代后,尚未完全收敛。

图片

如何发现恰当的稳定比例系数?

观察压力响应过程中存在多少“阻尼”?

基于体积法的比例系数等于3;响应非常后,经过5次耦合迭代计算,就收敛了。

图片

对于这个案例,基于体积的稳定比例系数取3是最好的,但是这个参数并不能适用于其他案例。

建议用户开始求解时,总是从较少的稳定系数取起

-用户使用的第一个值,一般不能能满足稳定性要求;

-避免落入过阻尼的陷阱,当出现过阻尼时,响应区域变得平缓。

用户请注意,响应是比例系数和流体迭代计算的函数。

-考虑下面的案例-如果用户每次耦合迭代执行更多的Fluent迭代,振荡将进一步扩大,变得更加不稳定。

-在实际中,建议用户设置较小的Fluent迭代次数同时联合使用比例系数来获得最佳的响应。使用大量的Fluent的迭代没有意义。

6

收敛建议

大量的红色标示可能表明你正使用错误的方式来改善收敛性。

-每个时间步使用过多的耦合迭代次数(一般是超过10次的耦合迭代);

-瞬态案例中使用较小的界面亚松弛系数,即小于0.75

-时间步长比流体或结构计算要求的时间步长还小;

-与单独Fluent计算相比,FSI计算中每个时间步中设置了大量的Fluent迭代

如果计算失败

-找到求解器发生失败的第一个地方,观察所有输出文件来确定错误

是从何时开始的?

-检查映射;

-如果是在MAPDL中失败,检查传递的力是否合理

-如果是在Fluent中失败,检查接受的位移是否合理

-是在那个场的求解中收敛的

http://www.xdnf.cn/news/212779.html

相关文章:

  • ShaderToy学习笔记 05.3D旋转
  • 微信小程序 首页之轮播图和搜索框 代码分享
  • 每日算法-250429
  • 【每日八股】复习 MySQL Day3:锁
  • 从零开始学Python游戏编程45-类的继承2
  • 第十六届蓝桥杯 2025 C/C++组 25之和
  • WPF之TextBlock控件详解
  • 《解锁CSS Flex布局:重塑现代网页布局的底层逻辑》
  • 企业级私有化部署,内部聊天软件
  • CMD与PowerShell:Windows命令行工具的对比与使用指南
  • React Three Fiber 详解:现代 Web3D 的利器
  • verdi使用tcl脚本批量添加波形
  • x86架构-k8s设置openebs的hostpath作为默认存储类的部署记录
  • 51单片机快速入门之 SPI通信 2025年4月29日09:26:32
  • 如何知道Ubuntu的端口是否被占用,被那个进程占用?如何终止进程
  • PH热榜 | 2025-04-29
  • 通信原理第七版与第六版的区别附pdf
  • Javascript 中作用域的理解?
  • MCP Java SDK 介绍与使用指南
  • Docker的简单使用(不全)
  • Java中的内部类?
  • 在Anolis OS 8上部署Elasticsearch 7.16.1与JDK 11的完整指南
  • C++之AVL树
  • Android Studio for Platform(ASFP)真机调试
  • Qt5与现代OpenGL学习(四)X轴方向旋转60度
  • 《Vue3学习手记7》
  • RVO2(C#版)源码分析
  • 什么是ICSP编程
  • [展示]集成式深度学习对音频降噪的基准测试BenchMark
  • 【图片识别改名】批量读取图片区域文字识别后批量改名,基于Python和腾讯云的实现方案