24小时热门版块排行榜    

查看: 2358  |  回复: 8

llongtan

木虫 (小有名气)

老木虫

[求助] UDF的编译通不过

我从UDF的英文帮助中复制粘贴下面的内容成c程序,通过fluent的udf导入编译,(Define->user-defined->functions->interpreted)弹出下面的错误

cpp -I"C:\Fluent.Inc\fluent6.3.26/src" -I"C:\Fluent.Inc\fluent6.3.26/cortex/src" -I"C:\Fluent.Inc\fluent6.3.26/client/src" -I"C:\Fluent.Inc\fluent6.3.26/multiport/src" -I. -DUDFCONFIG_H="" "E:\计算\冷凝-重试\condensation-2.c"
Error: E:\\274\306\313\343\\300\344\304\375-\326\330\312\324\condensation-2.c: line 9: structure reference not implemented

我看了fluent的“dpm.h”的头文件,在其中存在这个结构,请问大侠,这个是什么原因造成的,怎样才能解决这个问题。

c程序在附件中也有一份。

/***********************************************************************
UDF for defining the heat and mass transport for
multicomponent particle vaporization
***********************************************************************/
#include "udf.h"

DEFINE_DPM_HEAT_MASS(multivap,p,Cp,hgas,hvap,cvap_surf,dydt,dzdt){
        int ns;
        int nc=TP_N_COMPONENTS(p); /* number of particle components */
       
        //以离散相P确定P所在的单元及线,以及单元,从而找到该单元连续相的信息。
        cell_t c0=RP_CELL(&(p->cCell)); /* cell and thread */
        Thread *t0=RP_THREAD(&(p->cCell)); /* where the particle is in */
       
        //离散相和连续相的材料
        Material *gas_mix=THREAD_MATERIAL(t0); /* gas mixture material */
        Material *cond_mix=p->injection->material;/* particle mixture material */

        cphase_state_t *c=&(p->cphase); /* cell info of particle location */

        //连续相的分子量及平均分子量
        real molwt[MAX_SPE_EQNS]; /* molecular weight of gas species */
        real molwt_bulk=0.0; /* average molecular weight in bulk gas */

        //离散相的信息:温度、质量、粒径,表面积,普朗特数Pr,努赛尔德数Nu,表面对流系数,;
        real Tp=P_T(p); /* particle temperature */
        real mp=P_MASS(p); /* particle mass */
        real Dp=DPM_DIAM_FROM_VOL(mp/P_RHO(p)); /* particle diameter */
        real Ap=DPM_AREA(Dp); /* particle surface */
        real Pr=c->sHeat*c->mu/c->tCond; /* Prandtl number */
        real Nu=2.0+0.6*sqrt(p->Re)*pow(Pr,1.0/3.0); /* Nusselt number 可以从《传热传质基本原理》的P270的公式(7.56)*/
        real h=Nu*c->tCond/Dp; /* Heat transfer coefficient */
        real dh_dt=h*(c->temp-Tp)*Ap; /* heat source term */
        dydt[0]+=dh_dt/(mp*Cp);
        dzdt->energy-=dh_dt;
       
        //求1/平均分子量的值,在解释中为平均分子量,实际计算为其倒数,因此在引用时要注意
        {
                Material *sp;
                mixture_species_loop(gas_mix,sp,ns){
                        molwt[ns]=MATERIAL_PROP(sp,PROP_mwi); /* molecular weight of gas species */
                        molwt_bulk+=C_YI(c0,t0,ns)/molwt[ns]; /* average molecular weight */
                }
        }
        /* prevent division by zero */
        molwt_bulk=MAX(molwt_bulk,DPM_SMALL);

        for(ns=0;ns                 /* gas species index of vaporization */
                int gas_index=TP_COMPONENT_INDEX_I(p,ns);
                if(gas_index>=0){
                        /* condensed material */
                        Material *cond_c=MIXTURE_COMPONENT(cond_mix,ns);
                        /* vaporization temperature */
                        real vap_temp=MATERIAL_PROP(cond_c,PROP_vap_temp);
                        /* diffusion coefficient */
                        real D=MATERIAL_PROP_POLYNOMIAL(cond_c,PROP_binary_diffusivity,c->temp);
                        /* Schmidt number */
                        real Sc=c->mu/(c->rho*D);
                        /* mass transfer coefficient */
                        real k=(2.0+0.6*sqrt(p->Re)*pow(Sc,1.0/3.0))*D/Dp;
                        /* bulk gas concentration */
                        real cvap_bulk=c->pressure/UNIVERSAL_GAS_CONSTANT/c->temp*c->yi[gas_index]/molwt_bulk/solver_par.molWeight[gas_index];
                        /* vaporization rate */
                        real vap_rate=k*molwt[gas_index]*Ap*(cvap_surf[ns]-cvap_bulk);
                        /* only condensation below vaporization temperature */
                        if(0.0                                 vap_rate=0.0;
                        dydt[1+ns]-=vap_rate;
                        dzdt->species[gas_index]+=vap_rate;
                        /* dT/dt = dh/dt / (m Cp)*/
                        dydt[0]-=hvap[gas_index]*vap_rate/(mp*Cp);
                        /* gas enthalpy source term */
                        dzdt->energy+=hgas[gas_index]*vap_rate;
                }
        }
}
1.jpg[ Last edited by llongtan on 2012-11-19 at 15:13 ]
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:libolin3@tal.com
  • 附件 1 : condensation-2.c
  • 2012-11-19 15:09:25, 3.11 K
  • 附件 2 : 1.cas
  • 2012-11-19 15:13:59, 892.03 K
  • 附件 3 : 1.dat
  • 2012-11-19 15:14:03, 2.54 M

» 收录本帖的淘贴专辑推荐

fluent模拟及问题

» 猜你喜欢

» 本主题相关商家推荐: (我也要在这里推广)

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zjspring

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★
感谢参与,应助指数 +1
llongtan: 金币+2 2012-11-19 20:22:43
xiegangmai: 金币+2, 谢谢参与 2012-11-20 21:49:40
cell_t c=RP_CELL(&(p->cCell));
   Thread *t=RP_THREAD(&(p->cCell));
改为
cell_t c=RP_CELL(&p->cCell);
   Thread *t=RP_THREAD(&p->cCell);
p里本身就是存储一个指针,再将这个指针付给cCell
2楼2012-11-19 19:13:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

llongtan

木虫 (小有名气)

老木虫

引用回帖:
2楼: Originally posted by zjspring at 2012-11-19 19:13:37
cell_t c=RP_CELL(&(p->cCell));
   Thread *t=RP_THREAD(&(p->cCell));
改为
cell_t c=RP_CELL(&p->cCell);
   Thread *t=RP_THREAD(&p->cCell);
p里本身就是存储一个指针,

可能上面的也是一个错误。

但是我从fluent中找的是对这一句错误?
int nc=TP_N_COMPONENTS(p); /* number of particle components */
3楼2012-11-19 20:16:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

llongtan

木虫 (小有名气)

老木虫

引用回帖:
2楼: Originally posted by zjspring at 2012-11-19 19:13:37
cell_t c=RP_CELL(&(p->cCell));
   Thread *t=RP_THREAD(&(p->cCell));
改为
cell_t c=RP_CELL(&p->cCell);
   Thread *t=RP_THREAD(&p->cCell);
p里本身就是存储一个指针,

我将红字删除后,你写的这两句也说是:
structure reference not implemented

按照你的方法修改后错误没有消失。

我觉得应该是没有引入DEFINE_DPM_HEAT_MASS中“P”的结构进入UDF中,才导致的编译不通过。
4楼2012-11-19 20:22:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

achilFes1990

木虫 (著名写手)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+2, 谢谢参与 2012-11-20 21:49:49
楼主,udf编译还要注意两点:
1、udf所在文件位置不要有中文路径;
2、udf文件与fluent的case和data文件放在一起。
扫一扫关注我的微信公众号,共同学习船舶CFD
5楼2012-11-20 09:08:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

llongtan

木虫 (小有名气)

老木虫


xiegangmai: 金币+1, 鼓励分享解决经验 2012-11-21 11:06:26
这个已经解决了。
不能用interpreted编译,需要complie进行编译,

如果电脑里没有C语言的注册环境变量,可以按照如下的方式解决:


关于Fluent:"nmake"不是内部命令或外部命令,也不是可运行程序
编译UDF时出现如下错误:
Error: Floating point error: divide by zero

Error Object: ()

> "nmake"不是内部命令或外部命令,也不是可运行程序
Error Object: ()
Error: open_udf_library:系统找不到指定目录
Error: Floating point error: divide by zero

Error Object: ()


我原来装的时turbo c/c++编译器,可能时环境变量没有设好的缘故。换用vc++6.0以后就没有这个问题了,另外,我用的是fluent6.2.16,希望遇到同样问题的同学借鉴一下,呵呵。
udf编译的经验总结
1)安装vc时候,只要选择了“环境变量”这一项,就不需要在“我的电脑 > 属性 > 高级 > 环境变量”中 更改“include”“lib”“path”变量的值,保持默认状态即可;
2)如果是fluent6.1以上的版本,读入你的case文件,只要在define->user-defined->functions->complied中,
add你的udf源文件(*.c)和“udf.h”头文件,然后确定用户共享库(library name)的名称,按“build”,就相当于nmake用户共享库;在这一步中常出现的错误:
(a)(system "move user_nt.udf libudf\ntx86\2d"0
(system "copy C:\Fluent.Inc\fluent6.1.22\src\makefile_nt.udf libudf\ntx86\2d\makefile"已复制 1 个文件。
0
(chdir "libudf"()
(chdir "ntx86\2d"()
'nmake' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'nmake' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Done.
而点击load时则出现不可编译的错误:
Opening library "libudf"...
Error: open_udf_library: 系统找不到指定的文件。
Error Object: ()
原因:没有安装vc或者没有选择环境变量。
解决方法:安装vc,并选择环境变量;没有正确设置环境变量的,按以下方法:
    . 在我的电脑 > 属性 > 高级 > 环境变量中设置“include”“lib”“path”变量的值,
    . include:D:\Program Files\Microsoft Visual Studio .NET\Vc7\include\
    . lib:D:\Program Files\Microsoft Visual Studio .NET\Vc7\lib\
    .找到Microsoft Visual Studio .NET\Vc7\bin\cl.exe的动态链接库mspdb70.dll, 将mspdb70.dll的路径加入到path的值。
      cl.exe 是 the Microsoft Visual Studio的编辑执行文件,只要正确设置环境变量后,你才能看到以下信息:
      Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
      Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
      usage: cl [ option... ] filename... [ /link linkoption...
(b)(system "move user_nt.udf libudf\ntx86\3d"0
(system "copy C:\fluent.inc\fluent6.1\src\makefile_nt.udf libudf\ntx86\3d\makefile"已复制 1 个文件。
0
(chdir "libudf"()
(chdir "ntx86\3d"()
udf.c
# Generating udf_names.c because of makefile udf.obj
udf_names.c
udf_names.c(7) : error C2059: syntax error : '}'
udf_names.c(8) : warning C4034: sizeof returns 0
我在c里调试已经通过了,但是在fluent编译时出现问题,我该怎么调试呀?
Done.
解决方法:找到一个带udf的例题,如果udf能正确运行,将该例题的udf源文件example.c另存为一个新文件;
           然后,将上面的内容全部删除,将你编写的udf源文件的内容copy到新文件中去,存储这个新文件后,
           最后编译和创建用户共享库(build),就不会出现上述问题了。
   原因:可能是自己编写udf源文件的模板不对,具体原因我也不太清楚,请大家指教了。
  3)然后在define->user-defined->functions->complied中按“load”,即连接共享库到fluent可执行文件中。
请楼主参考一下吧,应该照着做就可以解决这个问题了.

或者你不要用compile编译,用interupt(如果udf比较简单的话)
6楼2012-11-21 08:28:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ajene

银虫 (小有名气)

★ ★
xiegangmai: 金币+2, 谢谢参与! 2013-05-26 13:58:38
# Generating udf_names.c because of makefile udf.obj
udf_names.c
udf_names.c(7) : error C2059: syntax error : '}'
udf_names.c(8) : warning C4034: sizeof returns 0
我在c里调试已经通过了,但是在fluent编译时出现问题,我该怎么调试呀?
Done.


是源代码中的编写出问题了,得将最开始的define 靠在最前!
7楼2013-05-25 14:52:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dying999

铁虫 (小有名气)

引用回帖:
6楼: Originally posted by llongtan at 2012-11-21 08:28:25
这个已经解决了。
不能用interpreted编译,需要complie进行编译,

如果电脑里没有C语言的注册环境变量,可以按照如下的方式解决:


关于Fluent:"nmake"不是内部命令或外部命令,也不是可运行程序
编译UDF ...

楼主好人,解释得这么详细。非常感谢,遇到类似问题,我照着试试
8楼2015-09-25 09:20:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fluentgambit

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by llongtan at 2012-11-21 08:28:25
这个已经解决了。
不能用interpreted编译,需要complie进行编译,

如果电脑里没有C语言的注册环境变量,可以按照如下的方式解决:


关于Fluent:"nmake"不是内部命令或外部命令,也不是可运行程序
编译UDF ...

你好,我也遇见了这个问题,现在是VC里面的mspdb60.dll出问题了,显示缺失。在网上下了个之后,cl.exe文件仍旧打不开,不知道该怎么办了。望告知,谢谢。

发自小木虫Android客户端
9楼2017-05-04 19:29:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 llongtan 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 返修送审后第3天,只有原来的一个审稿人接受了审稿,其他两个有没有可能跑路? 60+5 huanpo116 2024-06-08 9/450 2024-06-14 10:01 by bobvan
[论文投稿] 投了一篇4区的SCI,审稿人一个拒稿,一个小修,编辑给了大修。 +6 安稳22123 2024-06-13 7/350 2024-06-14 09:57 by xubo7
[找工作] 杭电、天津科技、青农和宁波工程学院如何选? +4 味道很好啊 2024-06-13 4/200 2024-06-14 09:05 by forever411
[论文投稿] 文章proof要求使用机构的邮箱 5+3 不可不信缘 2024-06-11 11/550 2024-06-14 07:00 by 3001160025
[考博] 还能读上博士吗 +14 小伙走起 2024-06-09 24/1200 2024-06-14 06:32 by 18787065176
[硕博家园] 硕博巨婴,也许才刚刚开始 +22 SNaiL1995 2024-06-12 52/2600 2024-06-14 04:36 by SNaiL1995
[基金申请] 什么时候会评呢? +8 qq632458 2024-06-07 10/500 2024-06-14 00:58 by wangting_nju
[有机交流] 旋蒸请教 +6 办公室摸鱼 2024-06-09 9/450 2024-06-13 21:31 by wuxiaominggo
[基金申请] 面上基金有一个(两个)C是不是就没戏了.... 5+3 zzzm116 2024-06-13 15/750 2024-06-13 20:38 by 匿名374
[考博] 申博找导师 +3 疏影横斜水清浅3 2024-06-13 5/250 2024-06-13 18:52 by crazy peng
[博后之家] 第75批博后面上大概什么时候能出结果。 +4 超级老快 2024-06-07 5/250 2024-06-13 15:53 by 三号背心
[硕博家园] 机械研究生如何拿到年薪40+w +13 阿巴阿巴哦哦 2024-06-11 15/750 2024-06-13 15:40 by 113745685
[论文投稿] with editor日期变更 +3 慎独的小花卷 2024-06-12 8/400 2024-06-13 11:00 by 慎独的小花卷
[论文投稿] 摩擦磨损论文投稿 +3 jmysan 2024-06-12 3/150 2024-06-13 08:36 by 莱茵润色
[考研] 物理化学一对一辅导 +3 林大diao 2024-06-12 4/200 2024-06-13 08:09 by 化院大男孩
[硕博家园] 迷茫的毕业季 +7 独孤老狗 2024-06-08 7/350 2024-06-12 19:13 by 投必得科研顾问
[硕博家园] 申博 +3 悦悦小小鱼 2024-06-12 3/150 2024-06-12 15:11 by chen5805
[教师之家] 难上的课安排给我,杂事安排给我。评优时我就没份儿了,即便我做得不比绝大多数人差 +15 河西夜郎 2024-06-08 15/750 2024-06-12 12:51 by oooooo?o
[论文投稿] 计算机类,请问eswa与kbs哪个相对来说容易一些啊? +3 chenrui2015 2024-06-08 4/200 2024-06-11 13:37 by p-cloud
[教师之家] 公办双非,学生论文升学就业都不行。一本大学的论文升学就业没问题吧? +5 河西夜郎 2024-06-09 5/250 2024-06-10 17:59 by yyallen2003
信息提示
请填处理意见