24小时热门版块排行榜    

查看: 1006  |  回复: 2

akqinmian

金虫 (小有名气)

[求助] fluent单机多核并行版本变化物性参数UDF求助

求教各位大侠,小弟写的随温度变化的材料参数和发热源项的UDF ,由于远程使用别人的工作站(没有装VC),单机单核用解释的方式导入没有问题,单机多核情况下总是报错,要不就是迭代开始就卡死,没反应。

求教各位,如果如何改写为并行版本? 小弟计算机底子不行,用户说明关于这部分的内容反复读也不太理解,帮助里也没有这样的例子。

#include "udf.h"
DEFINE_PROPERTY(vis, cell, thread)
{
real temperature, nd;
temperature = C_T(cell, thread);
{
if (temperature >=553.15 && temperature<=618.15)
nd=-0.0000000000116472*pow(temperature,3)+0.0000000203453*pow(temperature,2)-0.0000122063*temperature+0.00259719;
else if (temperature >618.15 && temperature<=632.15)
nd=-0.000000000069519*pow(temperature,3)+0.000000127294*pow(temperature,2)-0.0000780956*temperature+0.0161298;
else if (temperature >632.15 && temperature<=648.15)
nd=-0.000000000454378*pow(temperature,3)+0.000000861208*pow(temperature,2)-0.00054462*temperature+0.114982;
else if (temperature>648.15 && temperature<=656.55)
nd=-0.0000000130651*pow(temperature,3)+0.0000254502*pow(temperature,2)-0.0165263*temperature+3.57745;
else if (temperature>656.55 && temperature<=662.55)
nd=-0.0000000110287*pow(temperature,3)+0.0000221444*pow(temperature,2)-0.01482*temperature+3.30587;
else if (temperature>662.55 && temperature<=667.95)
nd=-0.0000000039237*pow(temperature,3)+0.00000786908*pow(temperature,2)-0.00526079*temperature+1.17243;
else if (temperature>667.95 && temperature<=674.35)
nd=-0.000000000571417*pow(temperature,3)+0.00000116031*pow(temperature,2)-0.000785453*temperature+0.177281;
else if (temperature>674.35 && temperature<=683.15)
nd=-0.000000000132212*pow(temperature,3)+0.0000002727*pow(temperature,2)-0.000187513*temperature+0.0430127;
else if (temperature>683.15 && temperature<=693.15)
nd=-0.0000000000362821*pow(temperature,3)+0.0000000763507*pow(temperature,2)-0.0000535492*temperature+0.0125458;
else if (temperature>693.15 && temperature<=765.15)
nd=-0.00000000000256198*pow(temperature,3)+0.00000000579822*pow(temperature,2)-0.00000433921*temperature+0.00110355;
else if (temperature>765.15 && temperature<=823.15)
nd=-0.000000000000214632*pow(temperature,3)+0.000000000530378*pow(temperature,2)-0.000000398162*temperature+0.000120633;
else
nd=0.0;
}
return nd;
#include "udf.h"
DEFINE_SOURCE(cell_y_source1,c, t, dS, eqn)
{
real source;
real x[ND_ND];
real z;
C_CENTROID(x, c, t);
z=x[2];
if(z>=0 && z<0.08)
source = 1.96617E+08;
else if(z>=0.08 && z<0.24)
source = 1.94500E+08;
else if(z>=0.24 && z<0.40)
source = 1.89151E+08;
else if(z>=0.40 && z<0.56)
source = 2.10398E+08;
else if(z>=0.56 && z<0.72)
source = 2.43178E+08;
else if(z>=0.72 && z<0.88)
source = 3.19465E+08;
else if(z>=0.88 && z<1.04)
source = 3.93218E+08;
else if(z>=1.04 && z<1.20)
source = 4.65868E+08;
else if(z>=1.20 && z<1.36)
source = 5.30883E+08;
else if(z>=1.36 && z<1.52)
source = 5.63514E+08;
else if(z>=1.52 && z<1.68)
source = 5.75473E+08;
else if(z>=1.68 && z<1.84)
source = 5.54165E+08;
else if(z>=1.84 && z<2.00)
source = 5.08562E+08;
else if(z>=2.00 && z<2.16)
source = 4.70529E+08;
else if(z>=2.16 && z<2.32)
source = 4.20242E+08;
else if(z>=2.32 && z<2.48)
source = 3.56882E+08;
else if(z>=2.48 && z<2.64)
source = 3.11648E+08;
else if(z>=2.64 && z<2.80)
source = 2.77573E+08;
else if(z>=2.80 && z<2.96)
source = 2.51141E+08;
else if(z>=2.96 && z<3.12)
source = 2.29009E+08;
else if(z>=3.12 && z<3.28)
source = 2.16346E+08;
else if(z>=3.28 && z<3.44)
source = 2.07810E+08;
else if(z>=3.44 && z<3.60)
source = 2.13757E+08;
else if(z>=3.60 && z<3.68)
source = 2.23299E+08;
else source =0.0;
dS[eqn] = 0.0;
return source;
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kylafree

至尊木虫 (知名作家)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+2, 谢谢应助! 2012-05-23 22:57:05
}
return nd;
#include "udf.h"
这三行,第二行应该写在第二行前面吧。第三行不需要吧。
2楼2012-05-23 22:28:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kylafree

至尊木虫 (知名作家)

引用回帖:
2楼: Originally posted by kylafree at 2012-05-23 22:28:54:
}
return nd;
#include "udf.h"
这三行,第二行应该写在第二行前面吧。第三行不需要吧。

}
return nd;
#include "udf.h"
这三行,第二行应该写在第一行前面吧。第三行不需要吧。
3楼2012-05-23 22:29:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 akqinmian 的主题更新
信息提示
请填处理意见