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

[14.错误警告信息] 调用外部MATLAB函数出错

[复制链接]
发表于 2009-6-5 14:50:55 | 显示全部楼层 |阅读模式 来自 四川成都
本帖最后由 TBE_Legend 于 2009-6-6 17:33 编辑

自己编写了一个MATLAB函数,comsol的扩散模型调用的时候出现错误,错误信息如下。哪位高人指点一下啊??拜托!!

错误: 6251
外部函数调用错误
- 函 数: deff
计算变量失败
- 变 量: Dxx_c_di
- 定 义 为: deff(c,1FFC2548)
计算表达式失败
- 表 达 式: diff(diff(((+(-Dxx_c_di*cx-Dxy_c_di*cy)*test(cx)+(-Dyx_c_di*cx-Dyy_c_di*cy)*test(cy)-+(+(Dts_c_di)*ct)*test(c))*dvol),{test@0}),cx)
Left- and right-hand sides are incompatible: Sizes are 1x1x1 and 1x288 respectively.
- Callstack:   deff   19   n1(i,j,f)=0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2));
- Callstack:   deff   19   n1(i,j,f)=0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2));
- Callstack:   deff   18   if C1(i,j,f)<5*10
- Callstack:   deff   17   for f=1:d
- Callstack:   deff   16   for j=1:c
- Callstack:   deff   15   for i=1:b
- Callstack:   deff   2   C1=c.*0.602;%将c的单位mol/m3转换为e+18/cm3%

Exception:
java.lang.IllegalStateException: Parameter pairs already set.
(rethrown as com.femlab.util.FlFatalException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
Messages:
Fatal error.
- Type: IllegalStateException
Left- and right-hand sides are incompatible: Sizes are 1x1x1 and 1x288 respectively.
- Callstack:   deff   19   n1(i,j,f)=0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2));
- Callstack:   deff   19   n1(i,j,f)=0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2));
- Callstack:   deff   18   if C1(i,j,f)<5*10
- Callstack:   deff   17   for f=1:d
- Callstack:   deff   16   for j=1:c
- Callstack:   deff   15   for i=1:b
- Callstack:   deff   2   C1=c.*0.602;%cmol/m3e+18/cm3%

附deff函数:
  1. function De=deff(c,T)
  2. C1=c.*0.602;%将c的单位mol/m3转换为e+18/cm3%
  3. a=size(C1);
  4. b=a(1,1);
  5. c=a(1,2);
  6. g=length(a);
  7. if g==2
  8. d=1;
  9. else if g==3
  10. d=a(1,3);
  11. end
  12. end
  13. T1=T+273.15;
  14. ni=1800.*exp(-0.66./(0.026.*T1./300));
  15. for i=1:b
  16. for j=1:c
  17. for f=1:d
  18. if C1(i,j,f)<5*10
  19. n1(i,j,f)=0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2));
  20. else
  21. p=[1.6*(10^(-5)) 1.6*(10^(-5)).*C1(i,j,f) 1 -C1(i,j,f)];
  22. n2=roots(p);
  23. n1(i,j,f)=n2(3);
  24. end
  25. end
  26. end
  27. end
复制代码
 楼主| 发表于 2009-6-5 15:12:37 | 显示全部楼层 来自 四川成都
Simdroid开发平台
MATLAB调用这个函数的时候没有出现问题
回复 不支持

使用道具 举报

发表于 2009-6-6 15:46:41 | 显示全部楼层 来自 上海普陀区
我刚刚测试过了,没问题呀。是不是你的维度不对?附件中:3D的扩散和对流,deff.m放在COMSOL安装目录的bin目录中,然后定义扩散系数D=deff(c,30)

本帖子中包含更多资源

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

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-8 08:31:11 | 显示全部楼层 来自 四川成都
本帖最后由 jiaping525 于 2009-6-8 10:43 编辑

我用的是2D的扩散,瞬态,和这个有关系吗??会不会是存放目录的问题???? 我的deff函数放在script下面的external文件夹里3# kinggun
回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-8 09:05:01 | 显示全部楼层 来自 四川成都
和版本有关系吗?我用的是3.3版 3# kinggun
回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-8 11:22:31 | 显示全部楼层 来自 四川成都
用3D的扩散也出现同样的问题:
错误: 6251
外部函数调用错误
- 函 数: deff
计算变量失败
- 变 量: Dxx_c_di
- 定 义 为: deff(c,1FDF3F98)
计算表达式失败
- 表 达 式: diff(diff(((+(-Dxx_c_di*cx-Dxy_c_di*cy-Dxz_c_di*cz)*test(cx)+(-Dyx_c_di*cx-Dyy_c_di*cy-Dyz_c_di*cz)*test(cy)+(-Dzx_c_di*cx-Dzy_c_di*cy-Dzz_c_di*cz)*test(cz)-+(+(Dts_c_di)*ct)*test(c))*dvol),{test@0}),cx)
Left- and right-hand sides are incompatible: Sizes are 1x1x1 and 1x911 respectively.
- Callstack:   deff   19   n1(i,j,f)=0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2));
- Callstack:   deff   19   n1(i,j,f)=0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2));
- Callstack:   deff   18   if C1(i,j,f)<5*10
- Callstack:   deff   17   for f=1:d
- Callstack:   deff   16   for j=1:c
- Callstack:   deff   15   for i=1:b
- Callstack:   deff   2   C1=c.*0.602;%将c的单位mol/m3转换为e+18/cm3%
Exception:
java.lang.IllegalStateException: Parameter pairs already set.
(rethrown as com.femlab.util.FlFatalException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
(rethrown as com.femlab.jni.FlNativeException)
Messages:
Fatal error.
- Type: IllegalStateException
Left- and right-hand sides are incompatible: Sizes are 1x1x1 and 1x911 respectively.
- Callstack:   deff   19   n1(i,j,f)=0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2));
- Callstack:   deff   19   n1(i,j,f)=0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2));
- Callstack:   deff   18   if C1(i,j,f)<5*10
- Callstack:   deff   17   for f=1:d
- Callstack:   deff   16   for j=1:c
- Callstack:   deff   15   for i=1:b
- Callstack:   deff   2   C1=c.*0.602;%cmol/m3e+18/cm3%

3# kinggun
回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-8 12:29:52 | 显示全部楼层 来自 四川成都
Left- and right-hand sides are incompatible: Sizes are 1x1x1 and 1x911 respectively.
- Callstack:   deff   19   n1(i,j,f)=0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2));
当i=1,j=1,f=1时,n1(i,j,f)大小是1x1x1 ,不明白0.5.*(C1(i,j,f)+sqrt(C1(i,j,f).^2+4.*ni.^2))的大小怎么会是1x911?
6# jiaping525

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-6-8 13:33:44 | 显示全部楼层 来自 四川成都
^_^,搞了半天,终于知道问题出在哪了。庆祝下!!!!感谢斑竹,感谢SIMWE!

我在constant对话框里定义了T=890,然后在求解域设置对话框里设置D=deff(c,T),问题就在这个常数T。求解器调用T的时候将它变成了1*288的数组,结果使用deff函数计算D的过程中,ni也是1*288的数组,最后就爆出了左右两边尺寸不一致的错误了。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-6-11 09:14:03 | 显示全部楼层 来自 浙江杭州
这个是comsol的脚本命令,3.5a已经取消了对脚本的支持,楼主给的无法在3.5a下运行,frame命令根本找不到
回复 不支持

使用道具 举报

发表于 2009-6-11 09:15:24 | 显示全部楼层 来自 浙江杭州
这个是comsol的脚本命令,3.5a已经取消了对脚本的支持,楼主给的无法在3.5a下运行,frame命令根本找不到
回复 不支持

使用道具 举报

发表于 2009-6-11 09:16:47 | 显示全部楼层 来自 浙江杭州
这个是comsol的脚本命令,3.5a已经取消了对脚本的支持,楼主给的无法在3.5a下运行,frame命令根本找不到
回复 不支持

使用道具 举报

发表于 2009-6-11 09:17:19 | 显示全部楼层 来自 浙江杭州
这个是comsol的脚本命令,3.5a已经取消了对脚本的支持,楼主给的无法在3.5a下运行,frame命令根本找不到
回复 不支持

使用道具 举报

发表于 2009-6-11 09:17:27 | 显示全部楼层 来自 浙江杭州
这个是comsol的脚本命令,3.5a已经取消了对脚本的支持,楼主给的无法在3.5a下运行,frame命令根本找不到
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 15:38 , Processed in 0.051324 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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