24小时热门版块排行榜    

查看: 1882  |  回复: 23

sghudng

铜虫 (小有名气)

[交流] 【求助】UDF编译成功但导入边界条件时报错【已解决】已有3人参与

麻烦达人老兄们救急,这个程序是两相流里第二相入口速度等于某指定面第二相速度的程序,编译成功,但是在边界条件里选中此UDF即报错,ACCESS_VIOLATION。不知是何缘故,请各位不吝赐教,拜谢!
#include "udf.h"
#include "mem.h"

DEFINE_PROFILE(inlet_velocity,mix_thread,index)
{
   Domain *domain=Get_Domain(1);
   Thread *thread_s;
   real vel,area,area_tot,vel_ave;
   face_t f;
   real x[ND_ND];
   real A[ND_ND];
   mix_thread=Lookup_Thread(domain,4);
   thread_s=THREAD_SUB_THREAD(mix_thread,3);


   begin_f_loop(f,thread_s)
   
   {
     F_CENTROID(x,f,thread_s);
     vel=C_W(f,thread_s);
     F_AREA(A,f,thread_s);
     area=NV_MAG(A);
     area_tot+=area;
     vel_ave+=vel*area;
   }
   end_f_loop(f,thread_s)
   vel_ave/=area_tot;

}

[ Last edited by nono2009 on 2010-7-2 at 12:55 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

47425804

木虫 (正式写手)


★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
robert2020(金币+1):多谢提供建议,欢迎常来仿真模拟版交流。 2010-06-24 22:43:52
我刚初学UDF,很多东西还不甚明了,所以无法赐教了。
但是我还是有点关于写程序的小建议:希望在写程序的时候尽量在每个语句后面写上注释,比方说定义的是什么变量或常量、该步计算是什么作用等等,这样做的好处第一可以给自己编程理清思路、第二让他人更容易的读懂程序。这是我学习编程很多年来感觉很不错的一个好习惯。
虽然写注释有点费时,但说不定能省掉更多的调试查错的时间,得大于失的!
2楼2010-06-24 21:21:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

47425804

木虫 (正式写手)


★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
robert2020(金币+1):多谢应助! 2010-06-24 22:44:40
kuhailangyu(金币+3):欢迎参与! 2010-06-25 08:18:19
不好意思,又占一楼~~

begin_f_loop循环中的第一句,“ F_CENTROID(x,f,thread_s);”,获取面的重心坐标,也没什么用,因为后面完全没用上这个坐标值。
接下来一句是获取w方向的速度,应该没问题。
再下来两句是求取当前面的面积(我还没弄懂F_AREA的作用,不过猜的应该没错)。
再往下是对面积合速度积分,end_f_loop循环结束。
循环后面,即最后一句是求取平均速度。
如果没有速度分布的话,我想后面再加上这么一段应该就可以了:
begin_f_loop(f, thread_s)
{
  F_PROFILE(f, thread_s, index)=vel_ave; /*将平均速度赋值给入口边界*/
}
end_f_loop(f, thread_s)

程序开始的Get_Domian(1),你求的是第二相,那么这个参数“1”是不是有点问题了?因为1指的是混合相,3才指的是第二相。不过后面你还有Lookup_Thread和THREAD_SUB_THREAD,这两个是什么作用我还不清楚,所以前面的1也可能是对的。你自己确认一下有没有错吧~~
4楼2010-06-24 22:21:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

47425804

木虫 (正式写手)


★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
kuhailangyu(金币+2):辛苦了 2010-06-25 08:18:25
既然是设定两相流里第二相入口速度等于某指定面第二相速度,可程序中没有F_PROFILE宏,不知是哪一步做出了赋值。
另外,DEFINE_PROFILE宏是没有返回值的,所以最后一句“vel_ave/=area_tot”(这句应该是求个平均速度吧),好像并没有什么作用,因为都是函数内定义的局部变量,算完就没了。
3楼2010-06-24 22:01:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sghudng

铜虫 (小有名气)

引用回帖:
Originally posted by sghudng at 2010-06-24 17:19:13:
麻烦达人老兄们救急,这个程序是两相流里第二相入口速度等于某指定面第二相速度的程序,编译成功,但是在边界条件里选中此UDF即报错,ACCESS_VIOLATION。不知是何缘故,请各位不吝赐教,拜谢!
#include "u ...

指教的是,可能自己看得懂,但是求助的时候还是应该写清楚的
5楼2010-06-25 08:49:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sghudng

铜虫 (小有名气)

引用回帖:
Originally posted by 47425804 at 2010-06-24 22:01:05:
既然是设定两相流里第二相入口速度等于某指定面第二相速度,可程序中没有F_PROFILE宏,不知是哪一步做出了赋值。
另外,DEFINE_PROFILE宏是没有返回值的,所以最后一句“vel_ave/=area_tot”(这句应该是求个平均 ...

我写这个程序的时候最开始是有写这句的,但是我一直没纠结明白这个宏返回空值和我要从这个程序里得到一个速度值怎么去协调,开始写了F_PROFILE,编译的时候报错了,我以为是返回空值不能返回这个速度值,就删掉了,就不报错了……
6楼2010-06-25 08:51:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sghudng

铜虫 (小有名气)

引用回帖:
Originally posted by 47425804 at 2010-06-24 22:21:47:
不好意思,又占一楼~~

begin_f_loop循环中的第一句,“ F_CENTROID(x,f,thread_s);”,获取面的重心坐标,也没什么用,因为后面完全没用上这个坐标值。
接下来一句是获取w方向的速度,应该没问题。
再下来两 ...

面坐标好像的确是多余了……因为我一直以为它是和f一起指定一个小面的。
关于domain的问题,你不清楚的那两句,第一句是指向已知ID的面,第二句是指面上的第二相,因为里面所用的变量都是thread而不是domain,所以我就这么写了
7楼2010-06-25 08:58:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

47425804

木虫 (正式写手)


★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
adu886886(金币+1):鼓励应助!欢迎常来仿真模拟板块! 2010-06-25 09:25:55
引用回帖:
Originally posted by sghudng at 2010-06-25 08:51:45:

我写这个程序的时候最开始是有写这句的,但是我一直没纠结明白这个宏返回空值和我要从这个程序里得到一个速度值怎么去协调,开始写了F_PROFILE,编译的时候报错了,我以为是返回空值不能返回这个速度值,就删掉 ...

F_PROFILE就是用来给边界条件赋值的,通常都会和DEFINE_PROFILE配合使用。因为DEFINE_PROFILE也是个没有返回值的宏,所以F_PROFILE就起到了返回值的作用,你可以再看看帮助文档中的示例就清楚了。
8楼2010-06-25 09:00:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

47425804

木虫 (正式写手)


★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
adu886886(金币+2):鼓励应助!欢迎常来仿真模拟板块! 2010-06-25 11:11:17
引用回帖:
Originally posted by sghudng at 2010-06-25 08:58:51:

面坐标好像的确是多余了……因为我一直以为它是和f一起指定一个小面的。
关于domain的问题,你不清楚的那两句,第一句是指向已知ID的面,第二句是指面上的第二相,因为里面所用的变量都是thread而不是domain, ...

这样的话我还发现一个问题:
mix_thread是Fluent指定进来的变量,它指向的是你要定义的边界面。而你用Lookup_Thread函数把mix_thread重指向了。指向的应该是你要计算平均流速的某个其他面,而不是原来的边界面了。
如此一来,函数中没有了指向原来边界面的指针,那么即使加上我给你的那段循环也无法给边界条件赋值的!
你要另外用一个指针来指向你要求取平均速度的面!mix_thread不能动的!
9楼2010-06-25 09:39:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sghudng

铜虫 (小有名气)

引用回帖:
Originally posted by 47425804 at 2010-06-25 09:39:11:


这样的话我还发现一个问题:
mix_thread是Fluent指定进来的变量,它指向的是你要定义的边界面。而你用Lookup_Thread函数把mix_thread重指向了。指向的应该是你要计算平均流速的某个其他面,而不是原来的边界 ...

你说的对。现在我参考大家的意见把程序改了,可是结果还是一样,编译成功,但是在边界条件里一导入UDF,就报错……我都不知道问题出在哪了
10楼2010-06-25 10:11:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sghudng 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 博后基金,博管会会提前知道消息吗? +4 yuyiang 2024-06-13 4/200 2024-06-16 11:40 by yangyuzhong4
[博后之家] 山东大学(青岛)“天然药物生物智造”课题组 招聘“博士后”(年薪20.4-55.6万元) +5 第二种态度 2024-06-11 8/400 2024-06-16 10:14 by 午睡未进行
[有机交流] 车间生产,真空度很高,温度很高,但减压蒸馏速度很慢。 10+12 召唤鬼泣lL 2024-06-13 36/1800 2024-06-16 09:20 by ddc805
[找工作] 应届大龄土博教职选择,石河子大学和广西大学 10+4 茅山老道士 2024-06-10 33/1650 2024-06-16 08:36 by shl2112501
[硕博家园] 硕博巨婴,也许才刚刚开始 +30 SNaiL1995 2024-06-12 72/3600 2024-06-16 08:34 by 小龙虾biubiubiu
[找工作] 杭电、天津科技、青农和宁波工程学院如何选? +10 味道很好啊 2024-06-13 20/1000 2024-06-16 07:43 by 味道很好啊
[找工作] 江西双非一本和四川双一流高校如何选择? 5+7 寒山敲钟 2024-06-12 23/1150 2024-06-16 06:52 by puterde
[文学芳草园] 累并快乐着 +13 MYHLD521 2024-06-14 13/650 2024-06-15 22:59 by zeolitess
[基金申请] 博后面上今天有bug可以看到是否资助? +20 lyfbangong 2024-06-12 31/1550 2024-06-15 21:18 by since—2010
[考博] 上海交大招收材料化学方向科研助理/“申请考核”博士(请勿回复帖子或站内投条) +3 灵梦and紫 2024-06-12 4/200 2024-06-15 20:58 by 1822836277
[教师之家] 我们学院常年位居 各学院 倒数第二。专业撤销的话,在编者有什么补偿? +13 河西夜郎 2024-06-09 14/700 2024-06-15 19:44 by LittleBush
[基金申请] BO4的YQ答辩通知发布了吗? +6 博学笃行 2024-06-11 6/300 2024-06-15 16:04 by 悲催科研狗
[基金申请] 2024国社科通讯评审 +9 qsd10086 2024-06-13 14/700 2024-06-15 15:51 by thesuna
[食品] 食品博士导师 +6 小李醒yy 2024-06-11 9/450 2024-06-14 23:37 by 小李醒yy
[考博] 申博找导师 +4 疏影横斜水清浅3 2024-06-13 6/300 2024-06-14 14:31 by zxl_1105
[基金申请] 工材E10口函评结束了吗 10+3 我1的飞翔 2024-06-13 5/250 2024-06-14 06:35 by nono2009
[论文投稿] 投稿后发现其他作者的邮箱填错了该怎么办呀 10+4 在飞的猪 2024-06-13 6/300 2024-06-14 04:45 by 小虫子咔咔
[基金申请] 博士后面上项目状态还是专家评审吗 10+9 Thatcheremu 2024-06-13 55/2750 2024-06-13 21:23 by 乌合麒麟
[硕博家园] 机械研究生如何拿到年薪40+w +13 阿巴阿巴哦哦 2024-06-11 15/750 2024-06-13 15:40 by 113745685
[有机交流] 原料反应完了,怎么知道是产物还是中间体 +6 小胡在努力 2024-06-11 8/400 2024-06-13 13:33 by 091602
信息提示
请填处理意见