在结构、传热、流体或者电磁仿真当中,我们经常会碰到载荷、材料参数和几何尺寸需要来来回回修改的情况,如果每一次都用手工去改数值然后再求解,不仅容易漏掉一些方案,而且想把不同方案的结果放到一起比较也不太方便。要让COMSOL自动完成这件事,首先就要弄清怎么去设置参数扫描,以及扫出来的那一批结果又该怎样批量地导出去,处理的总体思路是先把那些打算调整的量定义成参数,跟着就用【Parametric Sweep】这个功能去统一计算,最后再按照所需结果的类型,去选择到底是用表格导出还是用数据导出。COMSOL提供的参数化扫描既可以针对稳态问题,也可以针对瞬态问题,它能按顺序把好多组参数组合都算出来。
一、COMSOL怎么设置参数扫描
在正式开始做参数扫描之前,先得把要改的数值定下来,而且不要贪心地把所有参数一口气都加进去,因为一旦组合的数量涨得太快,计算的总时间就会猛地升上去,让人等得很辛苦。
1、先把全局参数建好
在模型树里面,用右键点一下【Global Definitions】这个节点,接着选上【Parameters】,就能去添加参数的名称、表达式、单位,还有一些备忘的说明了,比方说可以把入口的压力写作pin,把材料的厚度写作thk,等到这些参数都建好之后,再到边界条件的设定、材料属性的填写或者几何尺寸的输入框里,用这些参数名称把原来写死的固定数给换掉,这样就等于把那些数值变成了可以随时统一调动的东西。
2、把参数扫描节点加上去
还是在模型树里头,这次对着【Study】点右键,然后选【Parametric Sweep】,进到它的设置窗口以后,去戳一下参数表格底下那个用来增加参数的按钮,把刚刚建好、打算要扫描的参数都给勾上,再去填它对应的数值列表,要是只变少数几个离散的值,就可以直接一个一个地把数值写进去,如果是那种有规律变化、间隔相等的值,就可以用range表达式来生成一串数,这样填起来会省事不少。
3、把参数组合的方式弄清楚
当有好几个参数要一起扫描的时候,得特别看一看它们之间的组合方式,在软件里有全组合和指定组合两种路子,全组合会把各个参数的值按笛卡尔积的方式一一交叉起来,比如两个参数各自有五个值,那一下子就生出了二十五组要算的任务,如果你其实只想让它们一一对应地变化,那就要赶紧切到指定组合,免得无意间生成了一大堆不必要的计算量,白白耗掉时间。
4、执行计算并把结果检查一遍
轻轻点一下【Compute】按钮,求解过程就会开始,等到全算完以后,去结果数据集或者绘图节点那里切一切不同的参数值,就能看到各种方案下面的云图和曲线了,拿到这些初算结果以后,最好先抽几组边界值看看模型有没有不收敛或者数据发生异常跳动的情况,确认都正常了,再往下整理剩下的数据。
二、COMSOL参数扫描结果怎么批量导出
要把结果批量导出来,头一步就得想明白自己到底要的是那种可以放在汇报表格里的汇总数值,还是打算保留每一组参数对应下来的全场分布文件,因为这两类结果的导出入口是不一样的,不能走错了门。
1、汇总数值得先让它们变成表格
如果你要对比的是最大应力、平均温度、流量或者位移这种用一个数字就能说明问题的量,就进到【Results】里面的【Derived Values】,往里头加一个【Global Evaluation】或者【Maximum】、【Average】之类用来评估的节点,在对应的表达式栏里填好要统计的东西,然后点一下【Evaluate】,计算出来的那串数字自然就进到表格里了,COMSOL就是靠着这些派生值节点才把评估结果写进Table里面的。
2、把参数汇总表导出
接下来顺着【Results】→【Tables】的路径找到刚刚生成好的那个表格,对着它点右键,选上添加到导出,或者直接在【Export】的底下新创建一个【Table】节点,把要输出的文件名和位置设好之后,执行一次导出就可以把这张表格保存成文本文件,之后把它丢进Excel里再做筛选和分析都比较顺手。
3、场分布数据得靠Data导出来
要是需要把每一组参数下面的温度场、应力场或者速度场都单独留下来,那就要走【Results】→【Export】→【Data】这条道,在弹出来的窗口里依次去选数据集、表达式、希望输出的格式还有文件存放的位置,因为参数扫描的结果组数通常不会少,所以可以在导出设置里打开追加写入的模式,让系统把多组数据连续地往同一个文件里写,COMSOL的文档也提到过,这种追加数据的方式挺适合处理参数扫描结果的导出。
4、为每组参数单独保存一份文件
当几何形状或者网格会跟着参数的变化而改变的时候,最好别把所有场数据一股脑儿全塞进一个文件里,可以换一种思路,在【Job Configurations】下面找到刚才运行的【Parametric Sweep】,再给它添加一个【Export to File】,这样系统就能根据当前的参数值自动生成不一样的文件名,很适合需要把不同方案的数据文件成批保留下来的场合,后面整理起来也会清楚很多。
三、COMSOL参数扫描导出前怎么复核
当这些批量的计算全部跑完之后,不要看也不看就急急忙忙把结果交给项目组,因为只要参数的名称、单位或者导出的次序中间有任何一个地方搞混了,以后再想把这些数据跟原始方案重新对上就会变得特别费劲。
1、把参数的单位再核查一遍
要再三确认长度、压力、温度还有材料这些参数的单位是不是从头到尾都统一了,另外在导出的表格里面,最好是同时把参数的名称和它的具体数值都留一列下来,不要只单薄地导出几条结果数据,否则别人回过头来看的时候,压根猜不出某一行对应的是什么条件。
2、找出那些有问题的组合
翻一翻结果当中是不是藏着没能收敛的、结果栏干脆是空的,或者数值突然蹦出一个离谱高峰的组合,在整个批量任务里哪怕只有少数组失败了,也要把它们单独拎出来记好,不要让它混在里头拉低了平均值,或者把后面的对比结论给带歪了。
3、把模型版本也保存一下
在开始扫参数之前先另外存一个模型文件,同时把导出数据的目录按照日期和模型的版本来起名,这样等以后再去调网格、改边界条件或者换材料参数的时候,就能很快地顺着版本找到当时对应的那一批结果,不至于张冠李戴。
总结
想在COMSOL里把参数扫描搭起来,主要就是先去【Global Definitions】→【Parameters】当中把变量定义好,然后再到【Study】底下添一个【Parametric Sweep】并把要变动的数值列表填齐,要批量导出计算结果的话,如果想要那种汇总性的指标,就优先用【Derived Values】和【Table】去生成表格,要是想保留场分布的完整数据,那就走【Export】→【Data】这条路,万一参数的组合特别多或者网格会跟着变,还可以再通过【Job Configurations】里的【Export to File】把每个方案的文件分开存,这样后续无论是要整理还是对比都会更有条理。