流固耦合分析成功的条件作者:mbrslydddd本人近来查看好多CFD分析的论坛,发现好多网友都在为流固耦合而头大,且网上也没有完整的、系统的案例可供参考,目前小弟也在做流固耦合的问题,即为流体输送固体颗粒的过程的模拟,好不容易找到了完整的解决办法,不敢独享,特奉献于此。首先在建模和条件设置方面要按照这样的设置顺序:1)选取流体单元,(打开keyopt(4)选项),建立流体模型,注意此处挖去固体所占的空间,然后分区划分流体场网格(好像在ls_dyna里面不要挖去固体所占空间),注意靠近挖去空间的部分网格应该细小些,还有若要采用remesh在计算中重划网格,一定要使用三角形单元(所有流体场);2)流体场模型建立完成后,首先要在流固耦合的边界上施加流体耦合标签FSI,然后在在流体场区域施加必要的边界条件,诸如位移约束,速度、压力等等。然后设置求解流体场的时间步长、求解时间、流体属性,打开ALE选项(瞬态分析)网格重画属性等等;3)这样的工作完成后,进入/prep7,加入固体单元,设置固体材料属性,在挖去的部分建立固体模型,划分固体网格,在固体网格与流体场接触的固体边界上施加流体耦合标签FSI,注意要和前面的number相同;4)为固体实际必要的约束条件(看是固体推动流体还是流体推动固体);5)设置固体求解的时间步长和求解结束时间,设置流固耦合属性,(看是固体推动流体还是流体推动固体),求解时间步长和求解时间,收敛准则,迭代次数等等;6)保存求解。总之,在流固耦合分析中,你最好要按着先流体后固体再耦合的属性设置顺序,流固耦合标签FSI要分别加在流固耦合边界的流体边界上和固体边界上,加在的顺序要按照上面所述。在实际的建模中,流固耦合的边界上由于建模的原因会出现节点的重合现象,注意一定不要使用捏合节点的命令来将重合的节点变成一个,这个很重要。固体单元一定要设置求解的时间步长和求解中止时间,时间步长一般和求解流体场和流固耦合的时间步长相等。ALE+remesh选项是解决瞬态流固耦合问题的一个很重要的方法,流固耦合一般要伴随着流体的形状改变和位置的移动,因此首先启动ALE选项使流体与固体的耦合边界保持一致并规则化流场内部由于挤压而畸变的网格,其次若网格畸变的过于严重,就要启动remesh选项重新划分网格单元。看一个流固耦合时间步长设置的是否合理的方法是在求解中若发现软件频频调动remesh进行网格重画,那这个时间步长基本上处于最大的时间步长上,若很久出现一次或不出现,说明你的时间步长太小,可以适当提高,但是正常的情况下,软件只允许在一个求解过程中最多有100次网格重画,若超过,将退出求解。先写到这些,匆匆草就,可能有很多缺点和错误,大家指正(注意若固体推动流体且又不考虑固体的形变和应力等等,可以直接按照帮助文档上ALE一章)还有,若流体推动固体的分析中,固体发生了大位移,那么一定要在/solu中打开大变形分析选项,否则求解不收敛而退出。Q&AQ:如果是FSI的话,只需要设置FSI的时间参数就可以了吧?!不用固体和流体分别指定了。另外,如果remesh次数太多,在计算一定时间后,每一个时间步都重新划分,你怎么解决?A:先试着回答第一个问题吧。在流固耦合中,只设置FSI的时间参数可能是行不通的,FSI边界是动量能量的传递边界,它的参数设置只是定义动量能量以怎样的方式在流体和固体间传递,而流体和固体的相关时间参数设置是定义了:(1)当流体推动固体时,流体的流动参数计算FSI耦合边界固体的变形或移动参数计算;(2)当固体推动流体时,固体的变形或移动FSI耦合边界流体的流动计算。因此本人认为FSI是流固耦合的一个中间环节,没有它,流体和固体的能量和动量的传递不能进行,同样若只有它,流体和固体的参数设置不知道,能量和动量也没有办法传递。所以我认为必须同时指定流体、固体和FSI的相关参数设置。第二个问题:好像帮助文档上的ALE一章那个例子就是在每个时间步内都重新进行了remesh,本人认为ALE+remesh的原理是这样的,在任意一个时间步内,流体网格的变形都会通过ALE方法来进行规则化,(1)保持流体耦合的边界(2)减小内部网格的畸变程度。然而当ALE规则化后的网格不能满足你所定义的remesh的最小限度时,就要启动remesh选项重新划分了。这样我认为若要降低remesh的次数你可以通过降低时间步长来实现,本人曾经计算过一个大位移的例子,是为流体输送固体颗粒的案例,当采用较小的时间步长时,整个计算结束都没有出现一次remesh。Q:为什么我在设置了ALE时就提示错误,而且结束计算,当我把ALE关闭过后就可以算了,这是什么原因?A:根据楼上的提出的一些问题我再作一次详细的解释吧。1)“挖去固体所占的空间”应该这样来解释。我们知道在流固耦合中,固体可能处于流体的空间内部,比如ANSYS帮助文档上那个橡皮垫正是处于流体场的内部。为什么要在流体场的建模时要挖去固体所占的区域呢,这是流体场网格采用ALE算法而决定的,ALE算法首先可以很好的跟踪流体或者是固体的运动边界(这点和固体分析时Lagrange算法是相似的),其次它可以通过自身算法的特点来规则化内部网格的畸变,而Eluer算法则不行,Euler算法在计算流体时必须将网格划分到流体可能流到的所有区域。因此采用ALE方法做流固耦合的流体场建模时是要挖去固体区域的,这样在计算过程中即使固体发生了变形后,采用ALE算法流体网格仍然可以拟合变形后的边界。挖去的固体空间这个过程只是在做流体场的建模时挖去的,我们要在固体区的建模时补上;2)我所说是一种直接流固耦合的方法;3)流固耦合的时间步长设置要分作三个部分:流体的、固体的和流固耦合的。流体的就是在Sol-Flotransetup-Executionctrl里面进行,Sol-Loadstepopt-Time/Frequency用来设置固体时间步长,FSI里面设置流固耦合的时间步长;4)耦合标签是成对出现的,一对流固耦合有两个number,比如1-1,2-2,这两个number是相同的,这样软件才能识别是一个耦合对;5)不错就是在Solution-DefineLoad-FieldSurfaceIntr里面设置流固耦合FSI。Q:ALE是混合拉格朗日与欧拉的网格运动,只是表明你允许网格随着场的变形而发生随移。remesh是当网格出现畸变的时候,ansys根据用户指定的参数重新检查网格质量,符合条件的就重新划分。两个似乎没有太大的关系吧?只是经常在动态分析中需要用在一起。另外,我只发现有flotransetup,FSIsetup,在哪里设置固体的耦合参数?A:楼上对ALE和remesh的理解有点和我不怎么相同。打个比方,ALE和remesh对网格的作用如同“改革”和“革命”这两个概念一样,ALE只是在有限的范围内适当调整单元内节点的位置,比如帮助文档上ALE一章就有一个高速物体撞击后的网格变化的比较一部分,它在调整网格的畸变程度时并不会改变网格单元的数目。而remesh则不一样,由于remesh要重新划分网格,因此所占用的计算机资源是很大的,在动态分析中联立这两种网格划分方式可以节省计算机资源。其次在流固耦合里面采用ALE方法有助于捕捉流体的运动边界。这点我想很重要。一个完整的流固耦合分析包含这个三个过程(流体推动固体):1)单一的流体场分析;2)通过耦合边界FSI传递动量能量;3)单一的固体(结构)分析。固体分析时只是继承了流场分析时通过FSI传来的动量能量,所有对单一的流体场和固体的计算设置只是普通的流场分析和结构分析设置,并不存在所谓的固体耦合参数。耦合参数设置是对于固体和流体同时而言的。不知楼上是如何理解的。Q:1)ALE和remesh是在哪可以打开的,用命令形式还是GUI形式的?2)在求解的选项中,大位移和小位移是可以随便改动的吗?还是说根据所做的分析的具体问题就已经确定的?当在做小位移问题的分析的时候,但是在分析时说某个节点的位移超过了某一个限值,那这个是不是就应该更改为大位移选项呢?3)作为流固耦合的分析,假如时对称的模型,那在对称边界上应该如何设置边界条件呢?A:固体的耦合参数可以用命令deltim,time来设定。GUI方式在solu-loadstepoption-time--timestep中;不打开大变形开关,网格肯定会发生畸变,导致不收敛无法计算下去。所以需要用remesh命令来对畸变的网格重新划分。Q:楼主所说的“流固耦合的时间步长设置要分作三个部分:流体的、固体的和流固耦合的“这三个参数的设置有没有先后,必须在流体模型建立好了就设置流体的参数,固体模型建立好了就设置固体参数?还是说最后一起设置也可以!A:个人认为,完全不需要按照顺序,就如同你画模型,和指定材料属性一样,不用先后分明的。自己心里明白各条命令的含义就可以了!Q:1)我今天算了个流固耦合的例子,但是打开了ALE就提示说需要做KEYOPT,,4,我在命令行里面输入了这个命令,但是还是不能算,好像这个命令没有起作用一样,后来我在GUI的方式下找到了FLOTRANSetUP-FlowEvironment-FLOTRANCoorSys,但是我看好像是KEYOPT,1,3,(不是KEYOPT,,4),我选择了关于Y轴对称,后来算还是不能算过去,最后只能把ALE功能关掉才能算下去。所以请教各位这是什么原因?我做的模型是二维的流固耦合模型,怎么才能实现KEYOPT,,4的功能啊?还有就是怎么能打开remesh的功能,帮助里面好像没有啊!2)好像在设置的时候流体是没有材料属性的,只是在FluidProperty里面设置一些密度粘度什么的,只有固体才设置有材料属性,但是在划分网格的时候不是要选择网格类型和网格材料吗?流体网格划分的时候网格材料就默认为是固体的材料了(materalnumber1),不知道怎么能改过来?(在GUI形式下实现网格划分的时候遇到的问题)A:在命令流中,设置fluid141(142)单元之后,加一句keyopt,1(注意:是单元编号,不是单元号),4,1.就可以了。只有打开这个,才能让141(142)单元实现ALE的功能。本人一般都用命令流,所以在划分网格时候都是直接指定划分的单元类型和材料类型。至于材料的属性,只要是在/solu之前就可以。所以我说不需要分顺序。Q:那固体的设定单元以后,还用keyopt命令吗?因为我的固体单元编号是2,所以是不是也得设置keyopt,2,4,1?还有一个问题是你在划分流体网格的时候指定的材料类型是什么?因为一般是不定义流体的材料类型的,只有固体才有定义材料类型,而流体的只是在FluidProperty里面设定。A:固体单元似乎没有ALE这个说法。一般来说,划分流体网格的时候,都默认流体为1号材料。不信你试试看,改为2号就会出错。Q:我现在可以算通了,但是我是在材料属性里面另外添加了一个材料编号,设置了流体的材料特性(密度和粘度)。然后在流体网格划分的时候材料项就选择了流体的材料编号2,不知道这样会不会和在FluidProperty中设置的密度和粘度重合。A:可以去试试看。从帮助中的例子(活塞)看,似乎它在流场网格划分中就根本没有指定材料号。固体材料编号为1。看来也是可以的!我认为,流体网格划分最好不要指定材料号,ansys应该会按照你的流体单元去找流体属性的。总结:上面好多网友讨论材料属性的问题,这个问题是这样解决的,若使用命令流的方式就没有什么好说的了,若采用GUI方式,若你同时定义了fluid单元和固体单元,且定义了固体单元的材料属性,这时若划分流体网格时,固体材料属性也显示在单元属性里面,我告诉你这时此固体单元属性对流体单元是无任何意义的,即使说你无论定义与否,都不会影响流体单元的属性,流体单元的属性只有在fluidProperty里面定义才有效,且流体单元本身也不具备弹性模量、泊松比和屈服强度等等固体的材料属性,所以这个问题大家不要担心。流固耦合分析中固体推动流体还是流体推动固体的差别应该是很大的。