0%

COMSOL学习笔记(多物理场基础)

网格

映射网格

要求相对规则的几何。可以通过边组参数设置对应的边组。

虚拟操作

不改变几何的情况下,忽略一些结构

求解器

直接求解vs迭代求解

直接求解

  • 相当于求逆矩阵
    • LU分解
  • 直接求解
    • MUMPS:稳定性高,占用内存大
    • PARDISO:稳定性一般,占用内存小
    • SPOOLES:稳定性高,占用内存小,计算慢

      迭代求解

  • 依靠良好的预处理器
    • 不完全LU
    • 稀疏近似逆
    • 多重格点
  • 高效,计算量小
  • 需要控制终止条件,对多物理场需要手动调整。

全耦合vs分离

全耦合

  • 单矩阵
    • 内存消耗大
    • 更多CPU装配时间
    • 更复杂的结构
  • 单线性求解器
  • 牛顿法

分离

  • 多个矩阵
  • 多个单个线性求解器
  • 需要迭代
    • 耦合越强,迭代越多
    • Anderson加速
  • 初始值猜测是阶段性的。

稳态日志

  • SolEst:基于误差估计的解
  • ResEst:基于误差估计的残差
  • #Res:残差装配数
  • #Jac:Jacobian装配
  • #Sol:线性代数系统解的数量
  • Linlt:线性迭代数
  • LinErr:线性代数系统误差估计
  • LinRes:线性代数系统残差

时间步的日志

步:n,时间$t_n$,步长:$k_n$,阶数:p

  • Tfail:自适应步长的失败次数
  • NLfail:代数方程组的失败次数

稳态和瞬态问题

  • 从单物理场开始;如果可能先考虑线性
  • 逐渐引入非线性
    • 使用负载逐步增加,非线性逐步增加,稳态逐步化等。
  • 避免不连续数据
    • 使用平滑近似
  • 当增加多物理场时:
    • 从(物理场)自动生成的求解配置开始
    • 从自动生成的网格开始
    • 逐步增强耦合

参数化扫描

在稳态/瞬态选项卡中添加的扫描可以调用上一步结果进行迭代计算。

在研究中添加的结果每次从头计算。

线性求解器:技巧

如果直接求解器报错或警告

  • 换一个主元预阈值
  • 换一种预排序方法
  • 换一个直接求解器

    如果迭代求解器不收敛或报错“未定义值”

  • 查看正在使用的物理场预置求解器。
  • 但别局限于迭代/预调节器设置,问题更可能发生在:
    • 太不稳定 -> 非标准矩阵
    • 网格质量较差 -> 非标准矩阵
    • 强材料非线性 -> 非标准矩阵
    • 非物理非线性迭代 -> 非标准矩阵

非线性求解器技巧

  • 使用更小的阻尼因子
    • 会导致更多的迭代
  • 减小“恢复阻尼因子”
  • 每次迭代更新Jacobian
    • 资源消耗更大
  • 允许更多迭代步
  • 改进初始猜测值(稳态)

时间步

研究中的时间步是输出的时间步长。

求解器中的时间步长是计算的时间步长。

瞬态研究:时间步进选择

时间步 描述
自由 基于局部误差估计的自适应时间步长。\n如果非线性回路不收敛就减小,如果误差估计不满秩就减小
严格 和自由相同,但求解输入时间点。
中级 和自由相同,至少在每个输入时间步上计算。
手动 基于全局表达式或基于值列表进行用户控制

Ctrl+F5查看变量位置

后处理

标注

标注某个点的变量信息,在绘图组中添加标注,在标注—>文本下输入eval(expr,unit)来计算表达式。

最大值

在组件—>定义中添加定义值,然后在研究中,更新解。显示时,在标注文本中eval(maxop1(spf.U),unit),位置设定为maxop1(spf.U,x)

数据集操作

  • 降维截取数据集
  • 升维生成数据集
  • 合并:对两个结果进行和差商积等操作

派生值

  • 可设置计算组
  • 点计算、全局计算
  • 平均值、最大、最小、积分、其他

派生值中的最大值等只能用于后处理

组件-》定义中的最大值可用于模型参数设定。

快捷键

F1:当前节点的帮助文档。

Ctrl+F1:整体帮助文档。