找回密码
 注册
Simdroid-非首页
查看: 136|回复: 2

[13.脚本命令] 周期性变换初始值问题

[复制链接]
发表于 2010-8-31 17:15:14 | 显示全部楼层 |阅读模式 来自 江苏南京
本帖最后由 yuwentuocheng 于 2010-8-31 20:30 编辑

模型是1D的,求解域分为5条单位长度直线,分别为1、2、3、4、5,每条上的方程和边界条件都不一样,而且经过周期T,所有求解域和边界条件都将向右瞬移一个单位长度,即原本直线1上的条件变为直线2上的条件。我想了下,有三种方法:
1。将所有求解域和边界条件,都用有关时间T的逻辑表达式来描述,但缺点是很烦,尤其线段如果不止5条,有很多条的时候。
2。每经过周期T,停止。所有条件都不变,而是将各个线段上的变量值统统向左移一个单位长度后作为新的初始值(Init),然后重新计算。
3。每经过周期T,暂停,将得到的sol.u中的变量值统统向左移一个单位,然后restart。

    上述第一种方法,我已经在图形化界面下实现了,当时模型是21条线段,4个变量,中间各线段交点使用 identity pairs 连接,整体首末设置周期性条件循环。因为模拟的是分离用的模拟移动床,进出料口会按周期移动,所以边界条件和求解域也需要按周期变化,当时就每个都按周期写,21个周期啊,烦死了写得,但最后却是实现了,不推荐。

    上述第二中方法,我刚才试了下,只要将fem.sol.u保存下来,移动一定数量的解,存入变量temp,然后再下次求解时加入'init'参数即可,如 femtime(fem,'init',temp).这样的话,只需要每过一个周期T解向反方向移动就好,所有求解域和边界条件都不需要变,方便。

    上述第三个方法,暂时还没有试过,理论上应该没问题实现,只是因为小弟对于 comsol script 中如何使用restart命令没操作过,所以没有试,哪位高手可以指点下吗?直接贴出操作方法。 (图形化界面下的操作可见http://bbs.simwe.com/thread-853152-1-1.html

PS:另外小弟还发现一个问题,那就是在输出结果的时候,尽量用一些函数,比如posteval、postinterp等,不要直接用fem.sol.u,如果在模型中使用了 identity pairs 或者周期性边界条件的话,会使得fem.sol.u中的值出现少量的存储次序颠倒情况,比如说原本 x = 1 处的变量值,可能会存到 x= 0.9处。效果图如下:

实际图,平滑

fem.sol.u画出的图,出现错位,导致锯齿

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2010-8-31 19:59:17 | 显示全部楼层 来自 安徽芜湖
Simdroid开发平台
写一个循环吧。对第一次的m文件进行修改,总过5种可能,对于重复的进行循环实现。看看能实现不?
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-31 20:18:01 | 显示全部楼层 来自 江苏南京
2# kyolee
使用循环的话,和我上面说的第一种方法本质上是一致的,如果线段多的话,就很麻烦了,就像我上面提到的那个模型,21条线段,就得21种情况,实在不方便的。我觉得还是2、3方法方便。现在就希望哪个做过类似脚本的,写个大概的语句出来,回头我就去验证下。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-19 07:48 , Processed in 0.035411 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表