首先在建模和条件设臵方面要按照这样的设臵顺序:
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&A
Q:如果是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-Flotran set up-Execution ctrl里面进行,Sol-Load step opt-Time/Frequency用来设臵固体时间步长,FSI里面设臵流固耦合的时间步长;
4)耦合标签是成对出现的,一对流固耦合有两个number,比如1-1,2-2,这两个number是相同的,这样软件才能识别是一个耦合对;
5)不错就是在Solution-Define Load-Field Surface Intr里面设臵流固耦合FSI。
Q:ALE是混合拉格朗日与欧拉的网格运动,只是表明你允许网格随着场的变形而发生随移。remesh是当网格出现畸变的时候,ansys根据用户指定的参数重新检查网格质量,符合条件的就重新划分。两个似乎没有太大的关系吧?只是经常在动态分析中需要用在一起。
另外,我只发现有flotran set up, FSI set up,在哪里设臵固体的耦合参数?
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->loadstep option->time--time step 中;不打开大变形开关,网格肯定会发生畸变,导致不收敛无法计算下去。所以需要用remesh命令来对畸变的网格重新划分。
Q:“流固耦合的时间步长设臵要分作三个部分:流体的、固体的和流固耦合的“这三个参数的设臵有没有先后,必须在流体模型建立好了就设臵流体的参数,固体模型建立好了就设臵固体参数?还是说最后一起设臵也可以!
A:个人认为,完全不需要按照顺序,就如同你画模型,和指定材料属性一样,不用先后分明的。自己心里明白各条命令的含义就可以了!
Q:
1)我今天算了个流固耦合的例子,但是打开了ALE就提示说需要做KEYOPT,,4,我在命令行里面输入了这个命令,但是还是不能算,好像这个命令没有起作用一样,后来我在GUI的方式下找到了FLOTRAN Set UP->Flow Evironment->FLOTRAN Coor Sys, 但是我看好像是KEYOPT,1,3,(不是KEYOPT,,4),我选择了关于Y轴对称,后来算还是不能算过去,最后只能把ALE功能关掉才能算下去。 所以请教各位这是什么原因?
我做的模型是二维的流固耦合模型,怎么才能实现KEYOPT,,4的功能啊? 还有就是怎么能打开remesh的功能,帮助里面好像没有啊!
2)好像在设臵的时候流体是没有材料属性的,只是在Fluid Property里面设臵一些密度粘度什么的,只有固体才设臵有材料属性,但是在划分网格的时候不是要选择网格类型和网格材料吗?流体网格划分的时候网格材料就默认为是固体的材料了(materal number 1),不知道怎么能改过来?(在GUI形式下实现网格划分的时候遇到的问题)
A:在命令流中,设臵fluid 141(142)单元之后,加一句keyopt,1(注意:是单元编号,不是单元号),4,1.就可以了。只有打开这个,才能让141(142)单元实现ALE的功能。本人一般都用命令流,所以在划分网格时候都是直接指定划分的单元类型和材料类型。至于材料的属性,只要是在/solu之前就可以。所以我说不需要分顺序。
Q:那固体的设定单元以后,还用keyopt命令吗?因为我的固体单元编号是2,所以是不是也得设臵keyopt,2,4,1?
还有一个问题是你在划分流体网格的时候指定的材料类型是什么?
因为一般是不定义流体的材料类型的,只有固体才有定义材料类型,而流体的只是在Fluid Property里面设定。
A:固体单元似乎没有ALE这个说法。一般来说,划分流体网格的时候,都默认流体为1号材料。不信你试试看,改为2号就会出错。
Q:我现在可以算通了,但是我是在材料属性里面另外添加了一个材料编号,设臵了流体的材料特性(密度和粘度)。然后在流体网格划分的时候材料项就选择了流体的材料编号2,不知道这样会不会和在Fluid Property中设臵的密度和粘度重合。
A:可以去试试看。从帮助中的例子(活塞)看,似乎它在流场网格划分中就根本没有指定材料号。固体材料编号为1。看来也是可以的!我认为,流体网格划分最好不要指定材料号,ansys应该会按照你的流体单元去找流体属性的。
总结:
上面好多讨论材料属性的问题,这个问题是这样解决的,若使用命令流的方式就没什么好说的了,若采用GUI方式,若你同时定义了fluid单元和固体单元,且定义了固体单元的材料属性,这时若划分流体网格时,固体材料属性也显示在单元属性里面,这时此固体单元属性对流体单元是无任何意义的,即使说无论定义与否,都不会影响流体单元的属性,流体单元的属性只有在fluid Property里面定义才有效,且流体单元本身也不具备弹性模量、泊松比和屈服强度等等固体的材料属性,所以这个问题大家不要担心。
流固耦合分析中固体推动流体还是流体推动固体的差别应该是很大的。不说设臵方面,单说建模方面,若是流体推动固体的分析,那么模型中必须有固体模型,即使固体属于刚体,否则你怎么定义固体的材料属性。而固体推动流体则相对较为好处理些,若固体处于流体的内部,且固体属于刚体的话,那么固体模型就可以省去,此时流体耦合就可以变成单独的流体分析。因此谁先谁后差别还是很大的。
流固耦合分析中流体单元的编号必为一,具体情况可以参考帮助文档的相关章节。 我说的流固耦合分析顺序基本上是按照帮助文档上的顺序,这样做比较不容易出错,若顺序改变,应该也可以的。
ALE方法既可以用于流体分析又可以用于固体分析,这点在ansys里面体现的不是太好,(不知道我说的对不对),若有人用过ls_dyna就会知道了,再做固体的大变形分析时(例如高速撞击、压力加工等)ALE方法是一个非常有用的方法。大家可以参考相应的理论书籍看看Lagrange、Euler和ALE方法的区别。