COMSOL报错调试总结(不定期更新) |
您所在的位置:网站首页 › comsol输入表达式 › COMSOL报错调试总结(不定期更新) |
COMSOL报错调试总结
1. 条件设定类1.1 除零错误1.2 未定义变量值1.3 边界条件/材料属性等缺失1.4. 装配期间内存不足1.5. 出现错误“奇异矩阵”1.6. 语法错误1.7. 其它
2. 收敛性问题2.1.稳态2.2. 瞬态2.2.1. 初始值不一致2.2.2. 最后一个时间步不收敛网格细化调整求解器
3. 物理场的特殊性3.1. 无法计算弹塑性应变变量
官方给的案例总是非常完美,运行流畅,结果完美。跟着官网案例学习很久之后,终于自己上手做模型,一旦报错,就是两眼一抹黑,无从下手。这里把我碰到的一些COMSOL报错问题以及调试方法记录下来。注意:每一个模型都有各自的特点,不可一概而论,别人也很难帮你找到模型问题,还是需要自己掌握调试方法。
附上以下参考来源: http://wap.sciencenet.cn/blog-1467490-1118453.html?mobile=1 http://cn.comsol.com/support/knowledgebase 更新日志: 2020-11-04,增1.6语法错误,案例1 2020-11-09,增1.7其它 2020-11-16,增3.1 1. 条件设定类一部分错误来源于模型构建时的疏忽,例如遗漏边界条件等等,这些错误通常容易解决: 1.1 除零错误根据报错指出的信息,用Ctrl+F查找分母变量的位置,如果是设定变量,那么可以直接将该变量值从0改为eps,如果是方程视图中的变量,那么需要追本溯源,查看时哪个设定参数导致了该变量值为0,进行修改即可。 1.2 未定义变量值可能在建模过程中遗漏了某个变量的设定,补全即可。 1.3 边界条件/材料属性等缺失一般明显的问题可以从模型树中看到警告符,在相应分支下修改即可。 1.4. 装配期间内存不足
检查一下模型设定是否有问题,是否每一个域和边界都进行了明确指定。另外,检查网格,是否存在严重畸变等等。 1.6. 语法错误案例1,只允许涉及网格时间的时间导数(Time derivative only allowed with respect to mesh time). 解决方案:将模型中涉及时间的t改写为TIME,例如d(x,t)改为d(x,TIME)。似乎在涉及动网格时容易出现此问题,可能是模型内置的语法,具体不太清楚。 1.7. 其它1.7.1. Invalid property value ‘Error expression’ is an array of strings. - : Cannot be empty. - : Unsupported characters ∇ × or ·
COMSOL论坛上也有相似问题,见 https://cn.comsol.com/forum/thread/95892/invalid-property-value 2. 收敛性问题收敛性问题是最头疼的,对于刚入门的小白很难找到其根源。解决此类问题必须非常熟悉该物理场。 2.1.稳态没研究过,可参考:http://cn.comsol.com/support/knowledgebase/103 2.2. 瞬态 2.2.1. 初始值不一致大部分的物理场默认初始值都是0,可能会造成其与边界条件的设定存在严重冲突。 官方给出了非常好的方案:http://cn.comsol.com/support/knowledgebase/1172 可能的解决方案: (1)逐步施加边界条件 如果初始值与边界条件相差大,有可能会导致此问题。通过添加阶跃函数(step)的方式可以使得边界载荷等从0s开始存在一个从0到所施加数值的渐变过程,可以有效提高收敛性。 (2)使用稳态研究来初始化瞬态研究 即在开始瞬态研究步骤前先进行稳态计算,有一些物理场预设的研究中就有此种方案:带初始化的瞬态研究。 2.2.2. 最后一个时间步不收敛无法收敛可能是模型本身存在问题,就需要仔细检查模型,可以把时间步调小,并将每一步的计算结果保存下来,只要进行了迭代,就可以查看计算结果,根据结果的数值去确定模型设定是否存在问题。 另一种情况是模型本身高度非线性化,也就是,算不出来。这时候需要去调整模型。 参考:https://cn.comsol.com/support/knowledgebase/1127 https://blog.csdn.net/GENGXINGGUANG/article/details/104084733?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase 小白一枚,尝试过以下方案: 网格细化如果网格划分过于疏,可能会造成某些节点数值出现问题,可以尝试将网格细化看看有没有效果,也可以开启网格自适应。当然这是建立在时间成本之上的,需要进行平衡。使用移动网格(ALE)和变形几何(DG)这两个接口是尤其需要注意,出现网格畸变时,调整网格,开启网格自适应以及开启网格重新剖分是非常重要的调试手段。 调整求解器以下步骤可以一步步走,一个不行再进行下一个 (1)展开研究设置并转到瞬态求解器分支下的全耦合子特征,然后定位到方法和终止栏。将雅可比矩阵更新:改为在每次迭代中,以替代最小 (2)更改最大迭代次数与容差因子 可将最大迭代次数值增加到 25 或更大的值。接下来,调整容差因子:设置。其默认值 1 表示使用相对容差设置,如瞬态研究步骤中指定的那样。相对容差的默认值为 0.01,其实际值为容差因子:乘以此数值,即:在本例中,将容差因子:设为 0.1 可以得到这个非线性问题在每个时间步的相对容差为 0.001。这意味着,当您收紧瞬态求解器的相对容差设置时,通常可以放宽容差因子。 (4)启用非线性控制器 如果求解器日志中Tfail值一直在增大,则可以考虑启用非线性控制器。对于不含非线性的模型,Tfail 列中的数值也会递增,应该考虑收紧求解器的相对容差。 有的物理场会存在一些隐含条件,比如: (1)使用装配体时存在固体力学以外的物理场,界面处的物理量传递需要加上非局部耦合(一致映射)这样的条件。 (2)浓度场中浓度不可为负数。可以在求解器中增加停止条件。 (3)固体力学模块中使用尖角可能会造成该处应力无穷大,因此需要进行倒圆角处理。 具体案例: 3.1. 无法计算弹塑性应变变量固体力学模块,引入塑性时出现的问题. Failed to compute elastoplastic strain variables. Time-dependent solver interrupted. Not all time steps returned. 该问题在COMSOL官网上有相应的案例 Support:https://cn.comsol.com/support/knowledgebase/1150 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |