精华内容
下载资源
问答
  • comsol问题记录

    千次阅读 2020-10-13 15:27:24
    comsol常见问题 1.绘图为空。组件——视图,把那个对物理场隐藏那些都删了。 2.三维分离求解器求解,进度卡在一个地方不动,多半是模型有问题。勾选网格自适应和非线性控制器,这两个在研究里面点一点就能找到。 .....

    comsol常见问题
    1.绘图为空。组件——视图,把那个对物理场隐藏,对几何隐藏那些都删了。(仅针对显示问题,本身计算错误不适用)

    2.三维分离求解器求解,进度卡在一个地方不动,多半是模型有问题。有时候细化一下网格,有时候查看一下模型条件(组织参数,边界条件)这些看是不是符合物理规律,有时候勾选网格自适应和非线性控制器,这两个在研究里面点一点就能找到。如果网格改不好,试着用物理场控制,可能会有惊喜。

    3.三维comsol结果画截面图:数据集新建截面,然后结果中建立二维绘图组。数据来源选择截面。

    4.comsol结果图想隐藏几何:组件-定义-视图里面新建对几何实体隐藏,点击选择即可。如果要隐藏的在里面,可以先建一个对域隐藏,点击视图查看隐藏后的效果,再新建隐藏,选中视图就可以点其他的了。

    5.comsol二维旋转模型想画截面图:现在数据集新建截面,选择对应数据集,然后绘图里面选择数据集为截面

    6.施加突变载荷(边界条件)出现重复误差测量失败,可能出现奇异时间的报错。可以用事件接口来解决:http://cn.comsol.com/support/knowledgebase/1245 我用的是隐性事件,需要注意:①指示器状态需要改变符号才能触发隐性事件;②指示器状态改变的时间维持过程不能太短,不然会不收敛,可以参考博客里面设置95和90两个温度点

    7.comsol5.5闪退。文件——首选项,里面点一点能找到渲染项,把opengl改成软件。(不一定有效,也有可能是电脑的问题)

    8.报错:非线性求解器不收敛,达到最大牛顿迭代次数。研究——求解器设置——瞬态求解器——全耦合,把最大迭代次数改大。

    9.报错:找不到一致的初始值,最后一个时间步不收敛。可以参考https://www.zhihu.com/question/346269752。比如我要仿真一个边界加电压的模型,电场初始值设为0,再加边界条件V,那么整个场中初始值就不一致了,存在0和V两种电压。根据前面的链接,最终使用给边界加一个阶跃。让它从0缓慢上升至V。

    9.点击隐藏箭头不起作用—选中旁边那个查看未隐藏对象。
    在这里插入图片描述

    展开全文
  • 计算到选定项 =计算 错误 非线性求解器不收敛 达到最大牛顿选代次数 时间:0 最后一个时间步不收敛 这里是在稀物质场中加入...达到最大牛顿迭代次数。时间:0。最后一个时间步不收敛。 请问各位朋友 这种情况如何解决
  • COMSOL报错调试总结(不定期更新)

    万次阅读 多人点赞 2020-07-19 15:39:23
    COMSOL报错调试总结1. 可定位错误1.1 除零错误1.2 未定义变量值1.3 边界条件/材料属性等缺失2. 难定位错误2.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. 装配期间内存不足

    在这里插入图片描述
    可以考虑扩大虚拟内存,或者把网格划分得稀疏一些
    http://cn.comsol.com/support/knowledgebase/1030

    1.5. 出现错误“奇异矩阵”

    检查一下模型设定是否有问题,是否每一个域和边界都进行了明确指定。另外,检查网格,是否存在严重畸变等等。

    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。这意味着,当您收紧瞬态求解器的相对容差设置时,通常可以放宽容差因子。
    在这里插入图片描述
    (3)更改非线性方法
    如上图右侧,将恒定(牛顿)改为自动牛顿,位置在(2)中图右侧

    (4)启用非线性控制器
    如果求解器日志中Tfail值一直在增大,则可以考虑启用非线性控制器。对于不含非线性的模型,Tfail 列中的数值也会递增,应该考虑收紧求解器的相对容差。
    在这里插入图片描述
    非线性控制器位置如下图
    在这里插入图片描述

    3. 物理场的特殊性

    有的物理场会存在一些隐含条件,比如:
    (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
    在这里插入图片描述
    Forum:https://cn.comsol.com/forum/thread/34552/failed-to-compute-elastoplastic-strain-variables-help-please
    https://www.comsol.jp/forum/thread/125792/failed-to-compute-elastoplastic-strain-variables-error-with-shrink-fit

    展开全文
  • 1、COMSOL只是一款“界面非常友善” “功能比较完善”的偏微分方程(PDE)求解器! 虽然COMSOL是多物理场耦合计算软件。但它相比其他软件的优点是:有中文版,功能齐全,界面友善。完全适用于习惯了windows操作系统...

    1、COMSOL只是一款“界面非常友善”
    “功能比较完善”的偏微分方程(PDE)求解器!

    虽然COMSOL是多物理场耦合计算软件。但它相比其他软件的优点是:有中文版,功能齐全,界面友善。完全适用于习惯了windows操作系统的广大群众。但无论叫它什么,它的本质都是“求解器”而已。进行数值建模或数值仿真,需要考虑三大步骤:前处理,求解,后处理。而COMSOL集成了这三大步骤。所有的设置都可以在同一个操作界面完成,而且采用的是树状分支结构。方便步骤的查找,展开等等。它实际上非常好学(相比那些敲命令行的软件而言…)。

    2、新手小白,首先应该明确要仿真的物理模型!

    正所谓,工欲善其事必先利其器。如果自己研究的物理模型,控制方程都搞不明白,直接去上软件。那后果只会自己很痛苦(盲人摸象,苦了自己)。

    3、了解物理模型之后,搜索相关案例进行学习!

    COMSOL官方有非常多的案例,只要它可以做的模型,基本都会相应的案例教学。但是,即便如此,也不会有完全一样的案例等着你去学。所以,不要抱着寻找一模一样的案例的心态学习,那太不现实。

    4、如何学习官方案例

    学习官方案例要注意:

    第一,通过学习案例,学会基本操作。也就是说你要明白怎么使用软件。

    第二,通过学习官方案例,学会一些常用的技巧。

    第三,触类旁通,举一反三。

    通过学习案例,寻找自己解决问题的思路。很多新手,眼高手低。觉得跟自己无关学科模型案例没用。那就是大错特错。模型之间的区别仅在于控制方程不同。也就说,模拟不同的问题,只是数学描述有差别。求解,设置,网格划分都是类似的。很多技巧在这个模型中可以很好用,在另一个问题中也是大有帮助。所有的技巧都潜藏在案例中。但是仅仅几个跟你相关模型的案例,你又能吃透多少呢?

    5、除了案例,还有那些资料可寻?

    案例库的案例是第一手教程。其次就是帮助文档,操作手册。很不幸,COMSOL暂时没有官方的中文手册可以看。仅仅只有一部分模块简介是中文的。但操作手册永远都是你最先相当的辅助材料。因为,没有谁能比它写的更详细了。还有一些资料,可以在网上搜索到,比如百纳学术论坛。这里有很多经验贴可供参考,多翻翻论坛中过往的问题。

    6、如何自我学习COMSOL?

    我说的“自我学习”不是指自己学习,而是通过自己摸索,探寻等方式学习COMSOL。既然它是电脑程序,那它必须具有可操作性。这就好比,我们在玩LOL,玩DOTA,打农药的时候是一样的。多数人不需要看教程就会操作了,那是为什么呢?因为很多技能随便按一按就明白咋回事儿了。COMSOL也是一样的。很多功能你在不清楚的时候,自己填几个数字,改几个参数,动手实践一下看看程序的反应,自然就知道对应的功能是做什么的。这就是自我学习的过程。

    7、学会提问

    很多新手问问题,仅仅截个图就问咋回事儿。这都是让人哭笑不得的。当然,新手这样问无可厚非。所以,要学会自己调错。关于如何调错,可以看我之前的帖子。

    建立完模型后,特别是多物理场的模型,很少有可以直接计算并得到结果的情况,即便我们再熟悉怎么建模,也可能会出现错误。那么如果快速高效的调节错误呢?

    第一:对于完全不能跑的程序,比如点击计算后还没有出现收敛图就报错了。这样情况的错误一般可能会有未定义变量,协调初值失败,网格报错等等。这类错误往往给出了明确的出错地点,比如某个域中出现未定义值。或者协调初始值失败。根据错误提示,快速定位出错的环节。特别是对于新手,不要一出现错误就沮丧、慌张,乱调一气。

    举例说明,对于未定义值,这个所谓的未定义值是模块中没有定义的变量,就比如用C编程时,调用了一个没有定义的变量,程序不知道它在哪里,一般这种问题可能出现在变量定义的环节,这里注意两点,一是全局定义和组件定义的变量范围是不同的,二是定义变量要用到基本变量和模块中的变量,要使用最基本的变量来定义新的变量。出现这种错误还有可能是自己疏忽造成的,比如选择两个模块,而定义的变量用到两个模块的变量,但是计算只计算了一个模块,显然是不对的。再说初始值问题,如果是协调初值失败,可以修改初始值,修改边界条件,最后修改求解器。

    初始值的估计对于程序收敛速度和能够收敛有很大的关系,而模型的非线性程度也会造成无法协调初始值,这时候如果肯定初始值没有什么大问题,就更换求解器,比如原本的定常牛顿,换成自动牛顿。再比如说,出现除零错的情况,那就要仔细定位出现除零错的变量位置,这种情况很有可能是你定义的参数和变量或函数有问题,比如出现在分母上的变量在计算中等0了。还有可能是初始值造成的,比如模块的基本变量在模型中是分母位置,而你把它的初始值都等于0了,肯定会报错。

    对于出现诸如,试图计算负数的开方等错误,都是同样类型的错误。如果调了很久也没发现错误所在位置,一个看似很笨的办法却能让你快速定位错误的位置。那就是把模型最简单化,比如一个模块你设定了一堆边界条件,那么就禁用所有“多余”的设置节点,只保留方程可以计算的节点即可,然后再计算,如果继续报同样的错误,说明错误不在这些子节点中。如果不报错了,那么依次开启每个子节点,重复此过程,最终定位错误所在节点。如果是变量的错误,同样把所有的变量都用常数代替计算,然后依次换成对应变量。同样,对于多物理场耦合出现的错误,也可以先关闭其他场只保留一个,然后耦合变量用常数代替,一个模块一个模块尝试,最终定位错误位置。

    第二:对于程序开始运行,最后不收敛的情况,或收敛曲线无限震荡。这种情况要么等待报错,要么直接暂停求解器,关于暂停方法请在论坛中搜索“暂停求解器”。然后再后处理中画出所有主要变量的图像,分析哪些变量哪些位置出现了数值错误,即数值“噪声”。比如某个点突然很大的值。这种情况多半是边界条件(载荷)不适当造成的。调节这类错误先排除网格的问题,然后依次调节每个参数或边界条件。用笔记下每个不同的条件下,程序出现的结果的变化,这样就知道某个变量或条件对程序计算的影响趋势。这个过程就是累积经验的过程。切记,

    一,不要直接关掉程序,这样没有结果可能看不出什么问题,调错就没有针对性;还有就是如果时间步长很短,那么尽量让程序存储数据的时间间隔也较短,比如时间步长是1e-5s,而存储数据是range(0,0.1,1),如果程序在计算时间不到0.1s的时候停了,那什么结果都看不到了,所以间隔至少是1e-5,推荐使用指数形式的时间间隔。

    二是调节参数和边界条件,每次的(调节-计算)过程只改变一个参数,这样你才能知道到底是哪个出错了,不要一次调很多参数,这样你即便计算成功了,但最终还是不知道到底是哪个参数的影响,这样以后遇到同样的错误,仍然会无头绪。

    很多程序出现的问题,只有在自己反复摸索的过程中,才能逐渐明白是怎么一回事儿。程序错误在报错的提示当中就那么几个,什么未定义值,什么协调初值失败,什么最后一个步长不收敛,达到最大迭代次数等等。但这些问题,不同的模型,不同的问题导致的原因是各种各样的。你不自己动手改,光靠别人的经验基本上无济于事。任何人调错必须亲自查看程序才行。所以调错提问最好的方式是提供物理模型描述和模型文件。否则白搭。

    8、要学会学习

    使用COMSOL的用户绝大多数是研究生以上,少数本科生人群。在研究生这个阶段,最应该学会的就是“自己学习”。多总结,多动手,多摸索,多尝试。自己没有亲自验证不对或对的事情,一定不要先去问别人。如果有学长学姐帮忙自然很好,但如果你周围只有自己使用,难道不毕业了吗?

    ————————————————
    版权声明:本文为CSDN博主「凯军啊」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/hdpckj/article/details/103470422

    展开全文
  • comsol仿真的过程中又出现求解会内存不足。 实验发现因为本身计算量就很大,而且之前已经求解过一次。直接求解会导致内存不足。 关闭文件后直接打开重新仿真可以解决这个问题

    在这里插入图片描述
    在comsol仿真的过程中又出现求解会内存不足。
    实验发现因为本身计算量就很大,而且之前已经求解过一次。直接求解会导致内存不足。
    有几种方法可以结局:

    • 关闭文件后直接打开重新仿真
    • 将网格粗细降低
    • 将原本研究删除,重新计算
    • 简化模型,将模型中一些细节删除,减少网格中细化部分(模型的结构出问题的概率很高导致计算量很大)
    展开全文
  • 初学COMSOL需要注意哪些?

    千次阅读 2019-12-10 10:56:20
    1、COMSOL只是一款“界面非常友善” “功能比较完善”的偏微分方程(PDE)求解器! 虽然COMSOL是多物理场耦合计算软件。但它相比其他软件的优点是:有中文版,功能齐全,界面友善。完全适用于习惯了windows操作系统...
  • 感悟 随时补充学习中的感悟,放在开头是为了后来者在学习过程中有所参考。...COMSOL学习 自学(孤家寡人),主要学习磁场与结构场耦合模型建模,所以思考方式和学习途径具有局限性,希望能为您带来一点参考。 使
  • 有限元分析(Finite Element Analysis,FEA)软件可以帮助企业减少在产品或者流程的设计、优化或控制环节中,原型测试的原型数量和测试次数。对于企业和研究机构来说,有限元仿真分析带来的不仅仅是成本的降低,更...

空空如也

空空如也

1
收藏数 8
精华内容 3
关键字:

comsol最大牛顿迭代次数

友情链接: c28-CODE.zip