|
|
发表于 2007-10-20 10:35:05
|
显示全部楼层
[求助]WENO编程问题!!!
我回复这个贴子吧,我把自己写的一段程序给粘上去,大家看看!
double weno(double data[5])//插(1/2)处的通量
{
double s1,s2,s3;
double err=1.0e-6;
double w1,w2,w3,w;
double value;
s1=(13.0/12.0)*pow((data[0]-2.0*data[1]+data[2]),2)+(1.0/4.0)*pow((data[0]-4.0*data[1]+3.0*data[2]),2);
s2=(13.0/12.0)*pow((data[1]-2.0*data[2]+data[3]),2)+(1.0/4.0)*pow((data[3]-data[1]),2);
s3=(13.0/12.0)*pow((data[2]-2.0*data[3]+data[4]),2)+(1.0/4.0)*pow((3.0*data[2]-4.0*data[3]+data[4]),2);
w1=1.0*pow((err+s2),2)*pow((err+s3),2);
w2=6.0*pow((err+s1),2)*pow((err+s3),2);
w3=3.0*pow((err+s1),2)*pow((err+s2),2);
/*w1=0.7;
w2=0;
w3=0.3;*/
/*
w1=1.0/(pow((err+s1),2));//没有除10,因为10*w1/(10*w1+10*w2+10*w3)=w1/(w1+w2+w3)
w2=6.0/(pow((err+s2),2));
w3=3.0/(pow((err+s3),2));*/
w=w1+w2+w3;
value=(w1*(2.0*data[0]-7.0*data[1]+11.0*data[2])+w2*((-1.0)*data[1]+5.0*data[2]+2.0*data[3])+w3*(2.0*data[2]+5.0*data[3]-data[4]))/(6.0*w);//数值通量f[i+1/2]
return value;
}[br][br][以下内容由 yeclerk 在 2007年10月20日 10:49am 时添加] [br]
望对大家有所帮助[br][br][以下内容由 yeclerk 在 2007年10月20日 10:49am 时添加] [br]
望对大家有所帮助 |
|