基于SINDA/FLUINT与ANSYS Fluent的热流联合仿真方法介绍

2021-08-24 15:44:38 admin 1522

前言:SINDA/FLUINT是一款应用于复杂系统热设计分析和流体流动分析的综合性仿真软件,软件具备强大的传导、对流、辐射、热控、轨道环境等模拟功能,广泛应用于航空航天、电子、能源、石油化工、生物医药、汽车等诸多领域。SINDA/FLUINT软件的流体模拟采用介于一维管路流与三维CFD模拟之间的流体网络法,能够基于三维流动空间快速模拟对流换热效应,极大的提高了对流换热的计算效率。但该方法在面对流场流动相对复杂的情况时,由于无法精确的对三维流场流动进行模拟,因此无法得到精确的结果。本文介绍的热流联合仿真方法,能够基于Fluent强大的流场计算能力和SINDA/FLUINT强大的热分析与热流耦合能力,实现这类复杂流动问题的精确仿真。

基于SINDA/FLUINT与ANSYS Fluent的热流联合仿真方法介绍 

 

一、方法说明

       本文介绍了建立SINDA/FLUINT(简称S/F)和Thermal Desktop(检查TD)与流场仿真软件间耦合接口并进行热流联合仿真的基本方法。文中选择以ANSYS Fluent为流场求解器来进行演示,对于其他CFD求解软件,如CFX、ADINA等,均可通过类似的方法进行耦合。

       本文中使用的软件及版本为:

  • ANSYS 2020 R2:包括Fluent和System Coupling;

  • SINDA/FLUINT V6.2:包括SINDA/FLUINT、Thermal Desktop和OpenTD。

       在阅读本文并尝试建立热流耦合仿真分析之前,请确保您已经熟悉SINDA/FLUINT、Thermal Desktop、OpenTD、ANSYS Fluent、ANSYS System Coupling等软件和模块的基本情况,本文中不包括这些软件基本使用方法介绍相关的内容。

       基于本文中介绍的联合仿真方法,您可以进行稳态、瞬态及准瞬态(即耦合的一方进行稳态求解而另一方进行瞬态求解)耦合仿真。耦合的区域,即由一系列线性面有限单元组成的集合,将在耦合过程中起到数据传递的作用。两方软件可以分别以任意精度来对目标界面进行网格剖分,界面上不要求网格一致,而是通过映射的方式来实现数据传递。

       对于瞬态计算,数据在指定的耦合时间步间隔后在界面上进行传递;对于稳态计算,数据在每次求解收敛后在界面上进行传递,并持续进行数据传递和迭代直到热模型和流场模型同时达到收敛。

       界面上常用的数据传递方式包括以下三种:

  • Thermal Desktop提供温度数据,Fluent提供对流换热系数和流场参考温度数据;

  • Thermal Desktop提供温度数据,Fluent提供热通量数据;

  • Thermal Desktop提供热通量数据,Fluent提供温度数据。

       第一种传递方式的鲁棒性和稳定性最高,因此最为推荐。对于熟悉共轭传热方法并了解界面处收敛和稳定性需求的用户而言,也可以使用其他数据传递策略来提高数据传递性能。如果您希望了解更多关于稳定性和加速方法相关的内容,欢迎与我们中仿智能的相关工作人员联系,或者拨打我们的全国统一客服热线400-888-5100来获取对应的资料。

       除了SINDA/FLUINT、Thermal Desktop和ANSYS Fluent三款软件外,本文中还使用了ANSYS System Coulping来实现Fluent与TD和S/F之间的耦合管理。System Coulping是一款专门用于耦合管理的ANSYS产品,支持交互式和命令式两种模式。本文中基于命令模式,提供了相应的示例Python输入脚本文件。此脚本文件可以满足大多数耦合应用场景,对于不太熟悉System Coulping软件的用户来说,仅需要编辑修改脚本文件中的执行控制参数,如最大迭代步数、收敛残差等,即可自定义计算任务,无需重新创建耦合控制脚本文件。

       ANSYS System Coupling作为一款通用的耦合仿真工具,能够实现多方求解器间的同步与通讯管理。本文中System Coupling负责Fluent求解器的调用及控制,同时提供与SINDA/FLUINT软件间的耦合接口。而SINDA/FLUINT软件这一侧,则是基于OpenTD开发了专门的应用程序,来控制包括TD算例的加载、S/F运行中流体模型与热模型间的数据交换实现等。最后,在System Coupling的输入Python脚本中,我们将基于OpenTD开发的SINDA/FLUINT软件侧的耦合驱动应用程序(CRTech_ANSYS_CoSolver_v202.bat,简称CRTech Solver)定义为参与联合仿真的对象,即可实现S/F和TD与Fluent间的联合仿真。

   CRTech Solver的运行脚本将自动在System Coupling中加载,运行脚本中定义了软件的环境需求,并包含了对“CRTech_ANSYS_CoSolver_v202.exe”的调用,如下图中红框所示。

基于SINDA/FLUINT与ANSYS Fluent的热流联合仿真方法介绍

     如上图所示,CRTech Solver作为中间应用,实现了System Coupling与Thermal Desktop以及SINDA/FLUINT间的数据传递。基于CRTech Solver和System Coupling,能够实现指定dwg文件的启动和指定算例的运行,两者联合作用建立了ANSYS Fluent与SINDA/FLUINT间的热交换数据传递通道,并实现了在指定瞬态耦合时间步下或稳态计算收敛时执行数据传递。

 

二、热流联合仿真示例

    在这一部分内容中,我们将通过一个实际的例子来演示如何实现热流联合仿真。我们通过Python输入脚本文件来运行ANSYS System Coupling,脚本文件中定义了耦合仿真工具、工作路径以及各仿真工具的输入。我们将详细介绍这一脚本文件内容,同时介绍文件中各命令对应的操作。

       仿真的基本流程为:

  • 定义热模型和流体模型的工作路径;

  • 分别在Thermal Desktop和Fluent中指定界面区域;

  • 在SINDA/FLUINT的OPERATIONS block中添加对联合仿真的调用;

  • 准备System Coupling输入脚本及配置文件;

  • 运行System Coupling启动联合仿真。

 

1. 定义工作路径

       System Coupling输入脚本文件中需要指定相关文件的位置,我们可以根据实际部署情况指定多个工作路径。一般来说,我们推荐对整个联合仿真项目建立一个大工作路径,并在其中针对每一部分耦合任务建立一个单独的文件夹。

       在本例中,我们创建了一个文件夹“HeatingCoil”来作为整个项目的工作路径,并在其中创建了“CRTech”和“Fluent”两个子文件夹来分别存放SINDA/FLUINT相关的热模型数据和Fluent相关的CFD模型数据。文件夹可以任意命名,只需保证与输入脚本文件中定义的路径名称一致即可。本例中定义的工作路径如下图所示。

基于SINDA/FLUINT与ANSYS Fluent的热流联合仿真方法介绍

     对于工作路径中的其他对象:“Syc”文件夹是由ANSYS System Coupling自动生成的文件夹;“run.bat”文件可以快速启动ANSYS System Coupling并读取“run.py”脚本文件;而“run.py”即为我们提到的Python脚本输入文件,我们可以通过编辑这个文件来对整个求解过程进行控制。关于脚本文件的内容我们将在第5步中详细介绍。

 

2. 指定界面区域

      我们需要在Fluent和Thermal Desktop中分别指定涉及到数据交换的界面区域。System Coupling通过“*.scp”格式文件来获取界面区域信息。目前仅支持面与面间的数据交换。(这里的面包括实体的表面。)

      对于Thermal Desktop,需要将相应的面加入到名为“COUPLING_REGION_SURFACES”的区域中。实现这一操作最容易的方式,是在TD Direct模块中对涉及到耦合数据交换的CAD几何面对象通过热编辑工具添加区域标签集“Coupling_Region”。指定的面不需要连续,可以自由指定任意多的面来进行数据交换。

基于SINDA/FLUINT与ANSYS Fluent的热流联合仿真方法介绍


      对于Fluent,将涉及到耦合数据交换的面的热边界条件设置为“via System Coupling”即可。

基于SINDA/FLUINT与ANSYS Fluent的热流联合仿真方法介绍 

      除了分别在Fluent和TD Direct或Thermal Desktop中指定界面外,我们还需要额外定义两个文件来告诉System Coupling哪些区域是耦合区域,以及在耦合区域中传递哪些数据。这就是我们前面提到的“*scp”文件。这是一种基于XML格式的文件。我们需要分别创建“fluent.scp”和“crtech.scp”并分别放在对应的模型路径下。

      对于Fluent软件,“fluent.scp”可以通过导出直接进行创建,具体可以参考Fluent用户手册中第45章的相关内容。应注意在导出后需要将工作路径修改为实际工作路径。

      对于SINDA/FLUINT软件,最方便的方式是直接复制,并根据需要编辑本算例中对应的文件。例如可以直接将分析类型由“steady”改为“transient”来进行瞬态模拟等等。值得注意的是,当算例中包含“Coupling_Region”区域,即表明区域内的面为热交换面。Thermal Desktop会自动创建额外的SINDA/FLUINT热网络对象来表示对流换热热导和流体温度边界节点,同时软件还会自动创建包含网格信息的文件并传递给CRTech Solver。

 

3. 修改Thermal Desktop算例设置

      对于需要进行耦合的算例,只需进行一个简单的修改:修改SINDA/FLUINT的OPERATIONS block,在调用“STEADY”或“TRANSIENT”之前,加入对“OPENSF”的调用即可,如下列命令所示:

CALL TDHTR  $ Hold Heater Temps for steady state                                

CALL OPENSF                                                                         

CALL STEADY                                                                         

CALL TDREL  $ Release heaters for transient                                      

这一行命令的作用是控制SINDA/FLUINT进入OpenSF进程,等待CRTech Solver的执行和数据交换指令。

用户可以在Case Set Manager的Dynamic页面下勾选“Show Temps While Calculating”来查看每个热流耦合步后热模型上的温度实时更新情况。

基于SINDA/FLUINT与ANSYS Fluent的热流联合仿真方法介绍

 

4、启动System Coupling

      为了方便,我们创建了一个简单的命令脚本来启动ANSYS System Coupling并读入指定文件。该文件可以任意命名,本例中我们将其命名为“run.bat”。该文件的内容为:

del .\CRTech\DEFAULT-2.stdout                                                     

“C:\Program Files\ANSYS Inc\v202\SystemCoupling\bin\systemcoupling” -R run.py

cmd /k                                                                              

      文件第一行目的为删除任何之前存在的CRTech Solver产生的输出文件,否则CRTech Solver会在之前的输出结果的基础上继续输出。这里同样可以加入任何计算前的控制命令。

      文件第二行为System Coupling的启动命令,附带选项定义了输入文件为“run.py”。

      最后一行为可选命令,作用为阻止Windows命令提示符窗口自动关闭,方便我们通过命令提示符窗口来查看计算输出。如果你选择了关闭命令提示符窗口,也可以通过“/SyC/scLog.scl”文件来查看相应的输出日志信息。

 

5、Python输入脚本

      ANSYS System Coupling通过读入Python脚本来确定耦合对象、界面区域、控制参数等。更多关于ANSYS System Coupling软件的相关信息可以查看该软件的用户手册。

      本例中的“run.py”文件中包含的内容为:

import os                                                                     

import platform                                                           

#                                                                                   

# Fetch the data model.                                               

dm = DatamodelRoot()                                               

#                                                                                   

# Load the Fluent SCP file.                                           

AddParticipant(InputFile = ‘.\\fluent.scp’)              

AddParticipant(InputFile = ‘.\\crtech.scp’)                      

      此部分代码定义了“*.scp”文件的路径。

# Set Fluent to use 4 CPU’s.                                                      

fluentSolver = dm.CouplingParticipant[‘FLUENT-1’]              

fluentSolver.ExecutionControl.AdditionalArguments = ‘ -t4’                     

      此部分代码定义了Fluent求解器及计算核数。

# Add CRTech participant to the datamodel.                                       

crTechSolver = dm.CouplingParticipant[‘DEFAULT-2’]                              

crTechSolver.DisplayName = ‘Thermal Desktop’                                     

#                                                                                    

# Specify CRTech Solver executable.                                               

crTechSolver.ExecutionControl.Option = ‘User Defined’                           

crTechSolver.ExecutionControl.Executable = ‘~/CRTech_ANSYS_CoSolver_v202.bat’

crTechSolver.ExecutionControl.WorkingDirectory = ‘./CRTech’                     

addArguments = ‘ --dwg HeatingCoil.dwg --case “Case Set 0” -steady ’           

crTechSolver.ExecutionControl.AdditionalArguments = addArguments               

      此部分代码定义了SINDA/FLUINT求解器相关内容。SINDA/FLUINT不是ANSYS系列工具,因此对于System Coupling而言,需要指定额外信息。这里我们指定了求解器的位置及额外求解控制参数。一般来说,当我们定义自己的联合仿真项目时,只需要编辑dwg文件名称、希望运行的Case Set以及设置进行稳态(-steady)或瞬态(-transient)计算即可。按照ANSYS命令习惯,包含参数的选项需要通过双破折号定义,同时若dwg文件或Case Set名称中含有空格,需要外加引号。

# create coupling interface.                                                      

interfaceName = AddInterface(SideOneParticipant = ‘FLUENT-1’,  

                                SideOneRegions = [‘coilsurface’],                

                                SideTwoParticipant = ‘DEFAULT-2’,                

                                SideTwoRegions = [‘Coupling_Region’]             

      此部分代码将Fluent与Thermal Desktop中分别定义的耦合区域进行关联。值得注意的是,对SINDA/FLUINT软件而言,耦合区域名称总是‘Coupling_Region’;而对于Fluent而言,我们可以根据实际情况指定多个耦合区域,例如:[‘wall’, ‘battery’, ‘duct’]。

      这里我们将“Side One”指定为Fluent,将“Side Two”指定为Thermal Desktop,将这些信息保存到“interfaceName”中,并将在接下来的命令中使用。

# add data transfer from CRTech Solver to Fluent.                               

AddDataTransfer(Interface = interfaceName,                                       

                  SideOneVariable = ‘temperature’,                                

                  SideTwoVariable = ‘T’,                                           

                  TargetSide = ‘One’)                                              

      此部分代码定义了耦合界面两侧的数据传递,Fluent将接收Thermal Desktop的温度数据。变量名由应用定义并需要在“*.scp”文件中声明。在Fluent中,温度表示为“temperature”,而在Thermal Desktop中,温度表示为“T”。

# add data transfer from Fluent to CRTech Solver.                               

AddDataTransfer(Interface = interfaceName,                                       

                  SideOneVariable = ‘near-wall-temperature’,                     

                  SideTwoVariable = ‘Tref’,                                        

                  TargetSide = ‘Two’)                                              

#                                                                                    

AddDataTransfer(Interface = interfaceName,                                       

                  SideOneVariable = ‘heat-transfer-coefficient’,                 

                  SideTwoVariable = ‘Hconv’,                                       

                  TargetSide = ‘Two’)                                               

      此部分代码定义了耦合界面两侧的数据传递,Thermal Desktop将接收Fluent的对流换热系数和近壁面流体参考温度数据。Thermal Desktop会自动创建额外的SINDA/FLUINT网络单元来描述对流换热热导和流体边界节点,并基于CRTech Solver在耦合执行过程中从Fluent接收数据并传递到对应的位置。

 

# Set maximum number of coupling iterations.                                     

dm.CouplingControl.AnalysisType.StepControl.MaximumIterations = 5              

      此部分代码定义了最大稳态迭代步数为5。System Coupling会在数据传递过程中监控耦合区域的情况,并会在满足收敛条件时终止计算。这一参数的目的是通过定义计算步数上限来防止非预期的CPU计算时间消耗。

      在每个迭代步中,System Coupling会以Thermal Desktop提供的耦合区域面上的初始温度来调用Fluent执行稳态计算,并在计算完成后将对流换热系数和流体温度传递给CRTech Solver。而CRTech Solver会直接调用SINDA/FLUINT来完成稳态计算,并将温度结果传递给Fluent来进入下一轮迭代。

# Solve.                                                                             

Solve()                                                                              

      最后这部分代码将控制ANSYS System Coupling开始联合仿真求解。

      以上我们完成了一个稳态耦合仿真控制脚本文件的定义。这一文件可以作为模板文件使用,我们仅需要修改Thermal Desktop dwg文件、Case Set以及最大迭代步数即可满足大多数联合仿真计算任务的需求。

      特别的,如果要执行瞬态或准瞬态仿真,我们需要在“Solve()”命令之前定义如下控制命令:

# Define the transient coupled analysis controls.          

analysisType = dm.CouplingControl.AnalysisType        

analysisType.Option = ‘Transient’                            

analysisType.DurationControl.Option = ‘Endtime’    

analysisType.DurationControl.EndTime = ‘1200.0 [s]’

analysisType.StepControl.TimeStepSize = ‘5.0 [s]’    

analysisType.StepControl.MinimumIterations = 1        

analysisType.StepControl.MaximumIterations = 1        

#                                                                                     

# Solve.                                                                             

Solve()                                                                              

      除了上述命令外,还需要在“crTechSolver.ExecutionControl.AdditionalArguments”变量中(SINDA/FLUINT求解器定义部分)确保输入参数为“-transient”。

      我们通过“TimeStepSize”参数来控制Thermal Desktop与Fluent间数据交换的时间间隔,这一参数并不指定各求解器内部进行瞬态计算的时间步,但会进行相应的调整来使得在发生数据交换时,仿真时间与耦合时间恰好一致。“EndTime”应与SINDA/FLUINT中的“TIMEND”参数相匹配,来实现终止耦合计算。

      对于本例而言,瞬态耦合步之间不存在迭代,而是一个简单交错排列的过程。因此,我们将最大和最小迭代数都设为1。对此,我们必须额外小心,只有确定系统满足解耦条件的前提下,这才是一种精确的近似方法。对于高度耦合的模型而言,我们需要更多的耦合时间步。

 

6. 执行联合仿真

      开始执行联合仿真前需关闭Thermal Desktop和Fluent软件,System Coupling会在后台自动调用Fluent软件。我们可以通过在工作路径下打开Windows命令提示符窗口并输入“run”命令来启动仿真,或者直接双击运行“run.bat”文件即可。正如前文中描述的,System Coupling将会启动并自动读入“run.py”脚本文件。

      通过脚本文件,我们控制System Coupling启动了我们基于OpenTD开发的CRTech Solver,这一应用程序会自动启动指定的Thermal Desktop dwg文件并运行指定的Case Set。同时我们还定义了热模型与流体模型的耦合界面,CRTech Solver会控制Thermal Desktop自动将每个区域范围内的热节点通过对流热导与流体边界节点连接。热导的数值将根据Fluent传递来的节点面积和对流换热系数数据来确定;同样的,边界节点温度将根据Fluent传递来的流体参考温度确定。作为SINDA/FLUINT求解器的输出之一,Thermal Desktop会生成界面网格数据文件并传递给CRTech Solver,CRTech Solver会将这个文件进一步传递给ANSYS System Coupling并将相应的数据映射到Fluent对应的区域内。

      联合仿真将输出“Convection_Coefficients.txt”和“Near_Wall_Temperatures.txt”两个文件,包含Fluent在上一个求解步中传递到热模型壁面节点的界面数据。我们可以将这两个文件在Thermal Desktop中作为后处理数据载入并渲染,来查看数据情况,如下图所示。

基于SINDA/FLUINT与ANSYS Fluent的热流联合仿真方法介绍 

      控制台会将各个求解器的相关信息直接输出到对应求解器工作路径下的“FLUENT-1.stdout”和“DEFAULT-2.stdout”文件中,System Coupling的输出会保存的“/SyC/sclog.scl”文件中。如果在联合仿真运行过程中遇到了问题,可以在这些文件中查看错误信息排查原因。

 

三、耦合界面算法设置

      上一部分的讨论中我们提到,在热流耦合界面处,使用对流换热系数和参考温度的方式来传递数据,具有比较普遍的应用场景。但这并不总是最好的方式。我们可以通过下面的变量来设置不同的数据传递策略,来实现在界面上传递不同的参数。

      CrTechSolver.ExecutionControl.AdditionalArguments,可选参数包括:

  • -ht_t:Fluent提供Hconv和Tref,S/F提供T;(默认选项)

  • -q_t:Fluent提供热通量,S/F提供T;

  • --stability :在“-q_t”的基础上增加“G”,来提高稳定性;

  • -t_q:Fluent提供T,S/F提供热通量。

      应注意,当指定了不同的参数时,“AddDataTransfer”命令也需要进行相应的调整。例如,当我们使用“-q_t”方法时,由Fluent提供的变量应该为热通量而不是Hconv和Tref,如下所示:

# add data transfer from Fluent to CRTech Solver.                               

AddDataTransfer(Interface = interfaceName,                                       

                  SideOneVariable = ‘heatflow’,                                   

                  SideTwoVariable = ‘Q’,                                           

                  TargetSide = ‘Two’)                                              

      除此之外,我们还可以引入拟牛顿法来加速数据传递并提高稳定性。关于这一设置的详细信息请参考ANSYS System Coupling指南。具体的启用命令如下:

dm.SolutionControl.GlobalStabilization.Option = ‘Quasi-Newton’                 

dm.CouplingInterface[interfaceName].DataTransfer[‘Transfer-                    

2’].Stabilization.Option = ‘Quasi-Newton’                                        

      耦合的稳定性取决于耦合界面两侧温度和热通量变化的相对敏感度。一个简单的参考方法是热导率最高的介质需要设定为热通量或对流边界条件,而热导率最低的介质的一侧需要设定为温度边界条件。例如对于固态金属表面强迫空气对流,“ht_t”或“q_t”选项会比较合适;而对于液态金属流过固态陶瓷表面,“t_q”选项则会比较合适。

      关于共轭传热算法的加速和稳定性并不是本文讨论的重点,如果您希望了解更多相关内容,欢迎与我们中仿智能的相关工作人员联系,或者拨打我们的全国统一客服热线400-888-5100来获取对应的资料。关于本文中介绍的方法,如果您有任何想法或疑问,也欢迎随时与我们联系交流。


各省份区域负责人联系方式:
张经理:17621192152【上海、浙江、广东、广西、海南、江西、福建】
丰经理:17521145176【北京、河北、天津、山东、山西、安徽、江苏、河南、黑龙江、辽宁、吉林、内蒙古】
许经理:18971301365【湖北、四川、重庆、宁夏、贵州、云南、陕西、甘肃、新疆、青海、湖南】

公司电话:021-80399555
地      址:上海市松江区九新公路1005号临港松江科技城中仿大厦 (201615) 
电子邮箱:info@cntech.com
客服热线:400-888-5100