找回密码
 注册
查看: 1684|回复: 0

单机多核并行变化物性参数UDF求助

[复制链接]
发表于 2012-5-23 22:06:13 | 显示全部楼层 |阅读模式

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

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

x
求教各位大侠,小弟写的随温度变化的材料参数和发热源项的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;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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