找回密码
 注册
查看: 2121|回复: 8

請教一下UDF的問題

[复制链接]
发表于 2011-3-2 19:55:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
DEFINE_SOURCE(sourceN,c,t,dS,eqn)
{
   C_CENTROID(x,c,t)  
   a=3.5*C_UDSI(c,t,0);
   source1=a;
   dS[eqn]=3.5;
   return source1;
}

DEFINE_SOURCE(sourceV,c,t,dS,eqn)
{
   C_CENTROID(x,c,t)
   b=2*a;
   source2=b;
   dS[eqn]=0.;
   return source2;
}

請問一下在兩個不同的宏中的變數是會共用的嗎?
假設上述的兩個宏是uds-0 uds-1的源項
這樣寫會不會有什麼問題嗎?
最近已經把式子每一條的檢查了還是不知道問題在哪
我在想是不是我的觀念上有問題?
发表于 2011-3-2 22:04:10 | 显示全部楼层
我觉得应该是不会,从C语言语法来说。
 楼主| 发表于 2011-3-3 11:36:18 | 显示全部楼层
謝謝你的回覆
想請問一下是指"兩個宏的變數不會共用" 嗎?
我是在宏外面定義變數的如下
#include "udf.h"
define a, b;

DEFINE_SOURCE(sourceN,c,t,dS,eqn)
{
   C_CENTROID(x,c,t)  
   a=3.5*C_UDSI(c,t,0);
   source1=a;
   dS[eqn]=3.5;
   return source1;
}

DEFINE_SOURCE(sourceV,c,t,dS,eqn)
{
   C_CENTROID(x,c,t)
   b=2*a;
   source2=b;
   dS[eqn]=0.;
   return source2;
}
发表于 2011-3-3 11:56:24 | 显示全部楼层
#include "udf.h"
static real a, b;

DEFINE_SOURCE(sourceN,c,t,dS,eqn)
{
   C_CENTROID(x,c,t)  
   a=3.5*C_UDSI(c,t,0);
   dS[eqn]=3.5;
   return a;
}

DEFINE_SOURCE(sourceV,c,t,dS,eqn)
{
   C_CENTROID(x,c,t)
   b=2*a;
   dS[eqn]=0.;
   return b;
}
 楼主| 发表于 2011-3-3 12:01:04 | 显示全部楼层
謝謝你的回覆
請教一下如果是我原本的寫法 那sourceV裡面a的值會是什麼呢?
我的C沒學好...
发表于 2011-3-3 12:38:28 | 显示全部楼层
#define a, b;
这句话的意思是用a代表b,,且不知道ab的变量类型,

如果按原来的写法,可能会报错,这个不知道具体会怎样,
 楼主| 发表于 2011-3-3 12:50:28 | 显示全部楼层
阿 不好意思我原本的地方打錯了 應該是
real a,b;
发表于 2011-3-3 13:02:50 | 显示全部楼层
这样的话,在第一个宏中修改的a的值不会传出来,那么第二个宏中的a基本就是一个随机值
 楼主| 发表于 2011-3-3 13:23:41 | 显示全部楼层
感謝您解決我的問題

原來我一直都搞錯了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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