|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
使用hp270388026开发的软件,前面的工作都已经完成,编译和读入UDF以后,在Fluent的Initialize时总是出现如下问题:
Microsoft Visual C++ Runtime Library
Runtime Error!
Program: C:\Fluent.Int\Fluent6.2.16\ntx86\3d\fl6216.exe
abnormal program termination.
各位高手知道以下到底出了什么问题呢?
具体程序如下:作为边界条件的UDF
#include "stdafx.h"
//write your include header here......
#include "iostream.h"
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "udf.h"
extern "C"{
DEFINE_PROFILE(boundary_mass_profile, thread, position)
{
face_t f;
begin_f_loop(f,thread)
{
double t=RP_Get_Real("flow-time");
const double thickness=0.02, time_step=1, delta_y=0.0001, D_wet=2.457e-05, D_dry=7.1e-11, C0=63.2e-6;
int dim1=thickness/delta_y+1, dim2=t/time_step, j, k=3289;
double r=time_step/(delta_y*delta_y);
double** C=new double* [dim1]; /* 开辟浓度数组C,纵向层数dim1,横向时间dim2 */
for(int i=0;i<dim1;i++)
C=new double[dim2];
for(i=0;i<dim1;i++)
for(j=1;j<dim2;j++)
C[j]=0.0;
for(i=0;i<dim1;i++) /* 设定初始值 */
C[0]=C0;
double *b=new double[dim1]; /* 开辟系数数组b,d,beta, Dm数组D, 追赶法中间解数组y*/
double *d=new double[dim1]; /* 注意:这里系数数组a,c都等于1 */
double *D=new double[dim1];
double *y=new double[dim1];
double *beta=new double[dim1];
for(i=0;i<dim1;i++)
{
b=0.0;
d=0.0;
D=0.0;
y=0.0;
beta=0.0;
}
b[1]=-1.000001;
d[1]=0.0;
b[dim1-1]=-1.000001;
d[dim1-1]=0.0;
// for(j=1;j<dim2;j++)
for(j=1;j<4;j++)
{
beta[1]=1/b[1];
y[1]=d[1]/b[1];
for(i=2;i<(dim1-1);i++)
{
D=D_wet*pow(C[i-1][j-1]/C0,2)+D_dry*(1-pow(C[i-1][j-1]/C0,2));
b=-1*(2+1.0/(D*r));
d=-1*C[j-1]/(D*r);
beta=1/(b-beta[i-1]);
y=(d-y[i-1])*beta;
}
beta[dim1-1]=1/(b[dim1-1]-beta[dim1-2]);
y[dim1-1]=(d[dim1-1]-y[dim1-2])*beta[dim1-1];
C[dim1-1][j]=y[dim1-1];
for(i=dim1-2;i>0;i--)
{
C[j]=y-beta*C[i+1][j];
}
}
for(j=0;j<4;j++)
{
C[dim1-1][j]/=k;
}
delete []beta;
delete []y;
delete []D;
delete []d;
delete []b;
delete []C;
F_PROFILE(f, thread, position)=2.17e-4*(C[dim1-1][j]-C[dim1-1][j-1]);
}
end_f_loop(f,thread)
}
}
|
|