设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1508|回复: 4
打印 上一主题 下一主题

debug assertion failed

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 00:46:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
各位高手,借贵宝地问个问题啊,我编写一个很简单的计算程序,编译通过,但是在运行时却出现"debug assertion failed"的情况,不知道是什么原因引起的。另,该程序以前是可以运行的,我稍微修改了一下就出现这个问题了,我所修改的东西里面也就加入了一些幂函数,对数函数之类的库函数,并没有其它改动,不知原因何在,希望大家帮我解答,先谢了!
5#
发表于 2009-11-4 00:46:16 | 只看该作者
还是没人啊,我等的好着急啊
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 00:46:15 | 只看该作者
#include "StdAfx.h"
#include<math.h>
#include "Functions.h"
#define PI 3.14159265358979
//已知夹杂的泊松比及长径比求Eshelby张量各分量
void Eshelby(double v,double a,double (*E)[3][3][3])
{
ASSERT(E!=NULL);
ASSERT(v>0&&v<1);
int i,j,k,l;
float g=0,h=0,s=0;
memset(&E[0][0][0][0],0,3*3*3*3*sizeof(double));
s=pow(a,2);
h=log(a+sqrt(s-1));
g=(s*sqrt(s-1)-a*h)/pow(s-1,1.5);
E[0][0][0][0]=((1-2*v+(3*s-1)/(s-1))-(1-2*v+(3*s)/(s-1))*g)/(2*(1-v));
E[1][1][1][1]=E[2][2][2][2]=((3*s)/(8*(1-v)*(s-1))+(1-2*v-9/(4*(s-1)))*g)/(4*(1-v));
E[1][1][2][2]=E[2][2][1][1]=(s/(2*(s-1))-(1-2*v+9/(4*(s-1)))*g)/(4*(1-v));
E[1][1][0][0]=E[2][2][0][0]=((2*s)/(s-1)+((3*s)/(s-1)-(1-2*v))*g)/(4*(1-v));
E[1][2][1][2]=E[2][1][2][1]=(s/(2*(s-1))-((1-2*v+3/(4*(s-1)))*g))/(4*(1-v));
E[0][1][0][1]=E[0][2][0][2]=(1-2*v-((s+1)/(s-1))-0.5*(1-2*v+(3*(s+1)/(s-1)))*g)/(4*(1-v));


for (i=0;i<3;i++)
for (j=0;j<3;j++)
for (k=0;k<3;k++)
for (l=0;l<3;l++)
cout<<"The Eshelby tensor E["<<i<<"]["<<j<<"]["<<k<<"]["<<l<<"]="<<E[i][j][k][l]<<endl;
}
void Run()
{
double v0,v1,a,E0,E1,c,u0,u1,x0,x1;
double E11,E22,u12,u23,v12;
v0 =0;
u1 =0;
x0=0;
x1=0;
E11=0;
E22=0;
u12=0;
u23=0;
v12=0; v0=0.38;//基体泊松比
v1=0.2;//纤维泊松比
E0=1000000;//基体杨氏模量
E1=30000000;//纤维杨氏模量
a=100000;//纤维长径比
c=0.2;//体积百分含量

//将杨氏模量及泊松比转换成拉梅常数x与u
x0=v0*E0/((1+v0)*(1-2*v0));
cerr<<x0<<endl;
x1=v1*E1/((1+v1)*(1-2*v1));
cerr<<x1<<endl;
ASSERT(v0!=NULL);
u0=E0/(2*(1+v0));
cerr<<u0<<endl;
u1=E1/(2*(1+v1));
cerr<<u1<<endl;
double (*E)[3][3][3] = new double[3][3][3][3];
Eshelby(v0,a,E);
double D1=0,D2=0,D3=0,B1=0,B2=0,B3=0,B4=0,B5=0,A1=0,A2=0,A3=0,A4=0,A5=0,A=0;
D1=1+2*(u1-u0)/(x1-x0);
cerr<<D1<<endl;
D2=(x0+2*u0)/(x1-x0);
cerr<<D2<<endl;
D3=x0/(x1-x0);
cerr<<D3<<endl;
B1=c*D1+D2+(1-c)*(D1*E[0][0][0][0]+2*E[1][1][0][0]);
cerr<<B1<<endl;
B2=c+D3+(1-c)*(D1*E[0][0][1][1]+E[1][1][1][1]+E[1][1][2][2]);
cerr<<B2<<endl;
B3=c+D3+(1-c)*(E[0][0][0][0]+(1+D1)*E[1][1][0][0]);
cerr<<B3<<endl;
B4=c*D1+D2+(1-c)*(E[0][0][1][1]+D1*E[1][1][1][1]+E[1][1][2][2]);
cerr<<B4<<endl;
B5=c+D3+(1-c)*(E[0][0][1][1]+E[1][1][1][1]+D1*E[1][1][2][2]);

cerr<<B5<<endl;
A1=D1*(B4+B5)-2*B2;
cerr<<A1<<endl;
A2=(1+D1)*B2-(B4+B5);
cerr<<A2<<endl;
A3=B1-D1*B3;
cerr<<A3<<endl;
A4=(1+D1)*B1-2*B3;
cerr<<A4<<endl;
A5=(1-D1)/(B4-B5);
cerr<<A5<<endl;
A=2*B2*B3-B1*(B4+B5);
cerr<<A<<endl;
//计算复合材料等效弹性模量
E11=E0/(1+c*(A1+2*v0*A2)/A);//计算纵向杨氏模量
E22=E0/(1+c*((1-v0)*A4+(1+v0)*A5*A-2*v0*A3)/(2*A));//横向杨氏模量
u12=u0+(c*u0)/(u0/(u1-u0)+2*(1-c)*E[0][1][0][1]);//面内剪切模量
u23=u0+(c*u0)/(u0/(u1-u0)+2*(1-c)*E[1][2][1][2]);//面外剪切模量
v12=(v0*A-c*(A3-v0*A4))/(A+c*(A1+2*v0*A2));//主泊松比
cout<<"纵向杨氏模量 E11="<<E11<<endl;
cout<<"横向杨氏模量 E22="<<E22<<endl;
cout<<"面内剪切模量 u12="<<u12<<endl;
cout<<"面外剪切模量 u23="<<u23<<endl;
cout<<"主泊松比 v12="<<v12<<endl;

delete []E;

}
上面是我的程序,大家帮我看看
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 00:46:14 | 只看该作者
是呀,程序铁出来呀

还有就是你可以看看你的头文件有没有写全
回复 支持 反对

使用道具 举报

2#
发表于 2009-11-4 00:46:13 | 只看该作者
把你程序贴出来啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 21:36 , Processed in 0.120641 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

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