一、方法说明
本文中使用的软件及版本为:
对于瞬态计算,数据在指定的耦合时间步间隔后在界面上进行传递;对于稳态计算,数据在每次求解收敛后在界面上进行传递,并持续进行数据传递和迭代直到热模型和流场模型同时达到收敛。
Thermal Desktop提供温度数据,Fluent提供对流换热系数和流场参考温度数据;
Thermal Desktop提供温度数据,Fluent提供热通量数据;
Thermal Desktop提供热通量数据,Fluent提供温度数据。
除了SINDA/FLUINT、Thermal Desktop和ANSYS Fluent三款软件外,本文中还使用了ANSYS System Coulping来实现Fluent与TD和S/F之间的耦合管理。System Coulping是一款专门用于耦合管理的ANSYS产品,支持交互式和命令式两种模式。本文中基于命令模式,提供了相应的示例Python输入脚本文件。此脚本文件可以满足大多数耦合应用场景,对于不太熟悉System Coulping软件的用户来说,仅需要编辑修改脚本文件中的执行控制参数,如最大迭代步数、收敛残差等,即可自定义计算任务,无需重新创建耦合控制脚本文件。
CRTech Solver的运行脚本将自动在System Coupling中加载,运行脚本中定义了软件的环境需求,并包含了对“CRTech_ANSYS_CoSolver_v202.exe”的调用,如下图中红框所示。
如上图所示,CRTech Solver作为中间应用,实现了System Coupling与Thermal Desktop以及SINDA/FLUINT间的数据传递。基于CRTech Solver和System Coupling,能够实现指定dwg文件的启动和指定算例的运行,两者联合作用建立了ANSYS Fluent与SINDA/FLUINT间的热交换数据传递通道,并实现了在指定瞬态耦合时间步下或稳态计算收敛时执行数据传递。
二、热流联合仿真示例
仿真的基本流程为:
System Coupling输入脚本文件中需要指定相关文件的位置,我们可以根据实际部署情况指定多个工作路径。一般来说,我们推荐对整个联合仿真项目建立一个大工作路径,并在其中针对每一部分耦合任务建立一个单独的文件夹。
我们需要在Fluent和Thermal Desktop中分别指定涉及到数据交换的界面区域。System Coupling通过“*.scp”格式文件来获取界面区域信息。目前仅支持面与面间的数据交换。(这里的面包括实体的表面。)
对于Fluent,将涉及到耦合数据交换的面的热边界条件设置为“via System Coupling”即可。
除了分别在Fluent和TD Direct或Thermal Desktop中指定界面外,我们还需要额外定义两个文件来告诉System Coupling哪些区域是耦合区域,以及在耦合区域中传递哪些数据。这就是我们前面提到的“*scp”文件。这是一种基于XML格式的文件。我们需要分别创建“fluent.scp”和“crtech.scp”并分别放在对应的模型路径下。
对于SINDA/FLUINT软件,最方便的方式是直接复制,并根据需要编辑本算例中对应的文件。例如可以直接将分析类型由“steady”改为“transient”来进行瞬态模拟等等。值得注意的是,当算例中包含“Coupling_Region”区域,即表明区域内的面为热交换面。Thermal Desktop会自动创建额外的SINDA/FLUINT热网络对象来表示对流换热热导和流体温度边界节点,同时软件还会自动创建包含网格信息的文件并传递给CRTech Solver。
3. 修改Thermal Desktop算例设置
CALL TDHTR $ Hold Heater Temps for steady state
CALL STEADY
这一行命令的作用是控制SINDA/FLUINT进入OpenSF进程,等待CRTech Solver的执行和数据交换指令。
4、启动System Coupling
del .CRTechDEFAULT-2.stdout
cmd /k
文件第二行为System Coupling的启动命令,附带选项定义了输入文件为“run.py”。
ANSYS System Coupling通过读入Python脚本来确定耦合对象、界面区域、控制参数等。更多关于ANSYS System Coupling软件的相关信息可以查看该软件的用户手册。
import os
#
dm = DatamodelRoot()
# Load the Fluent SCP file.
AddParticipant(InputFile = ‘.crtech.scp’)
# Set Fluent to use 4 CPU’s.
fluentSolver.ExecutionControl.AdditionalArguments = ‘ -t4’
# Add CRTech participant to the datamodel.
crTechSolver.DisplayName = ‘Thermal Desktop’
# Specify CRTech Solver executable.
crTechSolver.ExecutionControl.Executable = ‘~/CRTech_ANSYS_CoSolver_v202.bat’
addArguments = ‘ --dwg HeatingCoil.dwg --case “Case Set 0” -steady ’
此部分代码定义了SINDA/FLUINT求解器相关内容。SINDA/FLUINT不是ANSYS系列工具,因此对于System Coupling而言,需要指定额外信息。这里我们指定了求解器的位置及额外求解控制参数。一般来说,当我们定义自己的联合仿真项目时,只需要编辑dwg文件名称、希望运行的Case Set以及设置进行稳态(-steady)或瞬态(-transient)计算即可。按照ANSYS命令习惯,包含参数的选项需要通过双破折号定义,同时若dwg文件或Case Set名称中含有空格,需要外加引号。
interfaceName = AddInterface(SideOneParticipant = ‘FLUENT-1’,
SideTwoParticipant = ‘DEFAULT-2’,
此部分代码将Fluent与Thermal Desktop中分别定义的耦合区域进行关联。值得注意的是,对SINDA/FLUINT软件而言,耦合区域名称总是‘Coupling_Region’;而对于Fluent而言,我们可以根据实际情况指定多个耦合区域,例如:[‘wall’, ‘battery’, ‘duct’]。
# add data transfer from CRTech Solver to Fluent.
SideOneVariable = ‘temperature’,
TargetSide = ‘One’)
# add data transfer from Fluent to CRTech Solver.
SideOneVariable = ‘near-wall-temperature’,
TargetSide = ‘Two’)
AddDataTransfer(Interface = interfaceName,
SideTwoVariable = ‘Hconv’,
此部分代码定义了耦合界面两侧的数据传递,Thermal Desktop将接收Fluent的对流换热系数和近壁面流体参考温度数据。Thermal Desktop会自动创建额外的SINDA/FLUINT网络单元来描述对流换热热导和流体边界节点,并基于CRTech Solver在耦合执行过程中从Fluent接收数据并传递到对应的位置。
# Set maximum number of coupling iterations.
此部分代码定义了最大稳态迭代步数为5。System Coupling会在数据传递过程中监控耦合区域的情况,并会在满足收敛条件时终止计算。这一参数的目的是通过定义计算步数上限来防止非预期的CPU计算时间消耗。
# Solve.
最后这部分代码将控制ANSYS System Coupling开始联合仿真求解。
特别的,如果要执行瞬态或准瞬态仿真,我们需要在“Solve()”命令之前定义如下控制命令:
analysisType = dm.CouplingControl.AnalysisType
analysisType.DurationControl.Option = ‘Endtime’
analysisType.StepControl.TimeStepSize = ‘5.0 [s]’
analysisType.StepControl.MaximumIterations = 1
# Solve.
除了上述命令外,还需要在“crTechSolver.ExecutionControl.AdditionalArguments”变量中(SINDA/FLUINT求解器定义部分)确保输入参数为“-transient”。
对于本例而言,瞬态耦合步之间不存在迭代,而是一个简单交错排列的过程。因此,我们将最大和最小迭代数都设为1。对此,我们必须额外小心,只有确定系统满足解耦条件的前提下,这才是一种精确的近似方法。对于高度耦合的模型而言,我们需要更多的耦合时间步。
6. 执行联合仿真
通过脚本文件,我们控制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对应的区域内。
上一部分的讨论中我们提到,在热流耦合界面处,使用对流换热系数和参考温度的方式来传递数据,具有比较普遍的应用场景。但这并不总是最好的方式。我们可以通过下面的变量来设置不同的数据传递策略,来实现在界面上传递不同的参数。
-ht_t:Fluent提供Hconv和Tref,S/F提供T;(默认选项)
-q_t:Fluent提供热通量,S/F提供T;
--stability
-t_q:Fluent提供T,S/F提供热通量。
# add data transfer from Fluent to CRTech Solver.
SideOneVariable = ‘heatflow’,
TargetSide = ‘Two’)
dm.SolutionControl.GlobalStabilization.Option = ‘Quasi-Newton’
2’].Stabilization.Option = ‘Quasi-Newton’
关于共轭传热算法的加速和稳定性并不是本文讨论的重点,如果您希望了解更多相关内容,欢迎与我们中仿智能的相关工作人员联系,或者拨打我们的全国统一客服热线400-888-5100来获取对应的资料。关于本文中介绍的方法,如果您有任何想法或疑问,也欢迎随时与我们联系交流。
各省份区域负责人联系方式:
张经理:17621192152【上海、浙江、广东、广西、海南、江西、福建】
丰经理:17521145176【北京、河北、天津、山东、山西、安徽、江苏、河南、黑龙江、辽宁、吉林、内蒙古】
许经理:18971301365【湖北、四川、重庆、宁夏、贵州、云南、陕西、甘肃、新疆、青海、湖南】
公司电话:021-80399555
地 址:上海市松江区九新公路1005号临港松江科技城中仿大厦 (201615)
电子邮箱:info@cntech.com
客服热线:400-888-5100