24小时热门版块排行榜    

查看: 1552  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

hooloo

金虫 (小有名气)

[求助] 困惑了很久 udf和c程序的调试问题

各位好!
现在需要将在vc上运行正常的纯由c编写的程序    加在udf接口程序中
这个在vc上运行正常的程序其实就是为了计算一个量 将该量传递给udf的接口程序

现在问题是将该程序加在udf中后编译正常 但是初始化时一直出现等待画
不知道这是什么原因造成的?
另外重要的一点是  纯由c编写的程序加在udf接口程序中一般有哪些注意事项?

困惑了很久,希望各位不吝赐教啊!!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hooloo

金虫 (小有名气)

送鲜花一朵
引用回帖:
5楼: Originally posted by b07988 at 2013-03-13 23:21:44
将c++函数应用于udf,只要加入include就行,其他的也没有什么需要注意的。Lz最好想办法确认到底是那里卡了?多用些Message!Error!

是的,确如你所说,没有什么特殊的东西,注意好语句的结构就行,我之前出现错误的原因后来排查是因为c++部分迭代次数太多,计算非常非常慢 以至于fluent求解器报错
6楼2013-03-14 11:12:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

kylafree

至尊木虫 (知名作家)


xiegangmai: 金币+1, 谢谢参与! 2013-03-18 23:36:49
UDF 提供了一些宏,要在这些宏下实现你的C功能。不如贴上代码
2楼2013-03-01 14:00:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hooloo

金虫 (小有名气)

引用回帖:
2楼: Originally posted by kylafree at 2013-03-01 14:00:38
UDF 提供了一些宏,要在这些宏下实现你的C功能。不如贴上代码

谢谢 兄台
我现在的理解 udf本身的宏主要用来和模型数据进行交换
我的这部门c比较大 有几千行  其主要功能是差分法求解雷诺方程 而且求解该雷诺方程过程与计算模型可以说是无关的  所以我想 我的这部门c应该可以不应用UDF自带的宏  
当然  这部门c计算得到结果后 该结果也是通过UDF自带的宏传递给求解器的
我把程序的大致结构列出来 :
#include "math.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "udf.h"
#include "mem.h"

#define surface_thread_id 3
/变量定义 省略,以下为求解某一面平均温度,然后将该温度值传递给zhuhanshu(),由该函数计算得到某一参数的结果,结果返回/
#if !RP_HOST
Thread* thread;
face_t face;
double area[ND_ND];
#endif

DEFINE_ADJUST(face_av,domain)
{
double total_area=0.0;
double total_temperature=0.0;



#if !RP_HOST
thread=Lookup_Thread(domain,surface_thread_id);

begin_f_loop(face,thread)

if (PRINCIPAL_FACE_P(face,thread))
{
F_AREA(area,face,thread);
total_area +=NV_MAG(area);
total_temperature +=NV_MAG(area)*F_T(face,thread);
}
end_f_loop(face,thread)
#endif

#if RP_NODE
total_area=PRF_GRSUM1(total_area);
total_temperature=PRF_GRSUM1(total_temperature);
#endif

node_to_host_double_2(total_area,total_temperature);

T=total_temperature/total_area;
}



DEFINE_PROFILE(inlet_T,thread,i)
{
#if !RP_HOST
begin_f_loop(face,thread)   
if (PRINCIPAL_FACE_P(face,thread))   
{      
F_PROFILE(face,thread,i)=zhuhanshu();        
}        
end_f_loop(face,thread)
#endif
}


zhuhanshu()
{具体内容省略
}

以下全是被zhuhanshu()嵌套调用的函数,省略掉。
3楼2013-03-01 15:59:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

b07988

金虫 (正式写手)

星期六可以休息

★ ★
xiegangmai: 金币+2, 谢谢参与! 2013-03-18 23:36:40
将c++函数应用于udf,只要加入include就行,其他的也没有什么需要注意的。Lz最好想办法确认到底是那里卡了?多用些Message!Error!

» 本帖已获得的红花(最新10朵)

先做最重要的事情,再做次重要的事情
5楼2013-03-13 23:21:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见