COMSOL算子withsol与setval和setind

近日学习模型时遇到了几个算子,把学习日记记录在此处。原表达式为:withsol(‘cpsol1’,solid.cp1.sigmatmp6,setval(loadcase,6))

withsol的使用

在网络上查找了一圈,没找到太多描述,官网的描述为“访问任意解的算子, withsol 是算子 with 和 at 的更通用形式,可以用来在模型中访问任意解,既可以在求解过程中使用,也可以用于后处理。

在researchgate上看到了一则帖子(https://www.researchgate.net/post/How_to_use_withsol_in_COMSOL)

提问者想要使用withsol算子来调用解1里的变量用于解2中的计算withsol(‘sol1’,solid.eXX),但是软件确报错。
回答者所提到的geometry是否相同,如果所用几何发生变化那么将无法使用。
提问
Answer

这里的应用比较简单,格式也简单,即withsol是用于调取某一个解的变量值的。使用方式为:withsol(‘解标签’, 变量名)

再看看help文档中给出的几个例子

(1)withsol(‘sol1’,expr) ,刚刚说过了的那种,跳过;

(2)**某一时间步值调用。**若使用瞬态求解器, withsol(‘sol1’,expr) 调用的是最后一个时间步的变量值。如果想要调用任意时间步,则可以写成 withsol(‘sol1’,expr,setval(t,0.5)) 或者 withsol(‘sol1’,expr,setind(t,3)) ,一个用的是setval,表示使用时间0.5是插值函数获得的,而setind调用的则是存储时间步3。

(3)特征值求解, withsol(‘sol1’,expr) 默认计算第一特征值。其它特征值调用可用withsol(‘sol1’,expr,setind(lambda,2)) 评估第二特征值。

(4)参数化扫描步调用。对参数p进行参数化扫描, withsol(‘sol1’, expr) 调用的是最后一个扫描步. 对特定扫描步调用则可以使用表达式。withsol(‘sol1’,expr,setval(p,4)) 或withsol(‘sol1’,expr,setind(p,2)) 。

(5)载荷组调用。withsol(‘sol2’,truss.Sn,setval(loadcase,1)).当当当,找到了最初我想要知道的那个表达式的解读

setind与setval

其实到这里也基本知道了这两个算子干啥的,不过还是要看看官方定义

官方解释为:setind和setval可被用于指定参数索引。对于多个参数(例如p和q)的参数扫描,setval和setind可以以任意组合方式用于两个参数-例如,withsol(‘sol1’, expr, setind(p, 2, q, 3)) 或withsol(‘sol1’, expr, setind(p, 2), setvar(q, 5))

setind中可以使用负索引,此时从尾算起。例如,在与时间有关的求解器中,withsol(‘sol1’, expr, setind(t, -2)) 表示提取倒数第二个时间步。

第一个索引和最后一个索引的替代表示法是setind(p, ‘first’) 和setind(p, ‘last’)。

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值