梯形水坝的有限元分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{0,24,25,29},{0,25,30,29},{0,25,26,30},{0,26,27,30}};
int NZC[NZ+1]={0,1,2,3,4,5,6,7,8,9,10};
double PJ[NPJ+1][2+1]={{0,0,0},{0,207637.5,1},{0,339937.5,11},{0,229687.5,21},
zx=0;
zy=0;
zz=0;
printf("输入该节点周围的单元数:\n");
printf("该节点周围的单元数t=");
scanf("%d",&t);
printf("输入该节点周围的单元的应力:\n");
void main()
{
int NJ1,k,IN,IM,jn,m,i,j,z,J0,ii,jj,h,dh,E,l,zl,dl;
double PE,c,SIG1,SIG2,SIG3,PYL,RYL,MAYL,MIYL,CETA;
double WY[6+1],YL[3+1];
//?÷??????DUGD?¨????ú??KZ???ó:
{
m=j+i-k;
KZ[i][j]=KZ[i][j]-c*KZ[k][m];
}பைடு நூலகம்
P[i]=P[i]-c*P[k];
}
}
P[NJ2]=P[NJ2]/KZ[NJ2][1];
for(i=NJ1;i>=1;i--)
{
if(DD>NJ2-i+1) J0=NJ2-i+1;
else J0=DD;
for(j=2;j<=J0;j++)
//单元节点码数组
int JM[NE+1][4]={{0,0,0,0},{0,1,7,6},{0,1,2,7},{0,2,8,7},{0,2,3,8},{0,3,9,8},\
{0,3,4,9},{0,4,10,9},{0,4,5,10},{0,6,12,11},{0,6,7,12},{0,7,13,12},{0,7,8,13},\
for(j=1;j<=3;j++)
{
for(jj=1;jj<=2;jj++)
{
l=2*(j-1)+jj;
zl=2*(JM[E][j]-1)+jj;
dl=zl-dh+1;
if(dl>0)
KZ[dh][dl]=KZ[dh][dl]+KE[h][l];
}
}
}
}
}
for(i=1;i<=NJ2;i++)
P[i]=0.0;
{0,141487.5,31},{0,75337.5,41},{0,31237.5,47},{0,4900,55}};
double AE,KZ[NJ2+1][DD+1],P[NJ2+1],S[3+1][6+1],KE[6+1][6+1];
int IE,JE,ME;
void DUGD(int,int);
YL[i]=YL[i]+S[i][j]*WY[j];
}
SIG1=YL[1];
SIG2=YL[2];
SIG3=YL[3];
PYL=(SIG1+SIG2)/2;
RYL=sqrt(pow((SIG1-SIG2)/2.0,2)+pow(SIG3,2));
MAYL=PYL+RYL;
MIYL=PYL-RYL;
if(SIG2==MIYL)
JE=JM[E][2];
ME=JM[E][3];
CM=AJZ[JE][1]-AJZ[IE][1];
BM=AJZ[IE][2]-AJZ[JE][2];
CJ=AJZ[IE][1]-AJZ[ME][1];
BJ=AJZ[ME][2]-AJZ[IE][2];
AE=(BJ*CM-BM*CJ)/2.0;
if(ASK>1)
节点码数组JM
JM(NE,3)=
JM(NE,3)中的元素按单元输入。单元号为行号,每个单元的整体码存一行,局部码为列号,局部码对应的整体码存放在相应的列。
支撑数组NZC.
NZC(NZ)=
NZC(NZ)中的元素按支撑对应的位移数从小到大排列。
节点载荷数组PJ
PJ(NPJ+1,2+1)=
PJ(NPJ,2)中的元素排列原则为:一个节点载荷存一行,同一行中第一列是节点载荷值,第二列是载荷对应的位移数。
for(i=0;i<=NJ2;i++)
{
for(j=0;j<=DD;j++)
KZ[i][j]=0.0;
}
for(E=1;E<=NE;E++)
{
DUGD(E,3);
for(i=1;i<=3;i++)
{
for(ii=1;ii<=2;ii++)
{
h=2*(i-1)+ii;
dh=2*(JM[E][i]-1)+ii;
{0,16,17,21},{0,17,22,21},{0,17,18,22},{0,18,23,22},{0,18,19,23},{0,20,25,24},\
{0,20,21,25},{0,21,26,25},{0,21,22,26},{0,22,27,26},{0,22,23,27},{0,24,29,28},\
{0,3,3},{0,4.5,3},{0,4.85,3},{0,0,4.5},{0,1.5,4.5},{0,3,4.5},{0,4.5,4.5},\
{0,0,6},{0,1.5,6},{0,3,6},{0,4.275,6},{0,0,7.5},{0,1.5,7.5},{0,3,7.5},\
{0,3.75,7.5},{0,0,9},{0,1.5,9},{0,3,9}};
D[1][3]=0;
D[2][1]=D[1][2];
D[2][2]=D[1][1];
D[2][3]=0;
D[3][1]=0;
D[3][2]=0;
D[3][3]=EO/(2*(1+MU));
for(i=1;i<=3;i++)
{
for(j=1;j<=6;j++)
{
S[i][j]=0.0;
for(k=1;k<=3;k++)
}
}
//DUGD????:
void DUGD(int E,int ASK)
{
if(LXM!=0)
{
EO=EO/(1.0-MU*MU);
MU=MU/(1.0-MU);
}
double B[3+1][6+1],D[3+1][3+1];
int i,j,k;
double CM,BM,CJ,BJ;
IE=JM[E][1];
S[i][j]=S[i][j]+D[i][k]*B[k][j];
}
}
if(ASK>2)
{
for(i=1;i<=6;i++)
{
for(j=1;j<=6;j++)
{
KE[i][j]=0.0;
for(k=1;k<=3;k++)
KE[i][j]=KE[i][j]+S[k][i]*B[k][j]*AE*TE;
{0,8,14,13},{0,8,9,14},{0,9,15,14},{0,9,10,15},{0,11,17,16},{0,11,12,17},\
{0,12,18,17},{0,12,13,18},{0,13,19,18},{0,13,14,19},{0,14,15,19},{0,16,21,20},\
{
h=j+i-1;
P[i]=P[i]-KZ[i][j]*P[h];
}
P[i]=P[i]/KZ[i][1];
}
printf("\n");
printf("JD U V\n");
for(i=1;i<=NJ;i++)
{
printf("%2d %-9.6f%9.6f\n",i,P[2*i-1],P[2*i]);
问题类型码LXM,LXM=
弹性常数E,弹性模量EO=79,泊松比μ, MU=0.3;
容重ρ,LOU=3200;
板厚t,TE=1;
节点坐标数组AJZ.
AJZ(NJ,2)=
AJZ(NJ,2)中的元素按节点整体码顺序输入,数组行号为节点整体码,每个节点的坐标值存一行,第一列存x的值.如 =AJZ(2,1) =AJZ(4,2).
四程序及结果
#include<stdio.h>
#include<math.h>
#define NE 40
#define NJ 30
#define NZ 10
#define NPJ 7
#define NJ2 60
#define DD 14
int LXM=1;
double EO=79000000000;
一题目
下图为一梯形水坝,载荷沿厚度均匀分布,其尺寸如图所示,厚度t=1m,弹性模量E=79G,泊松μ=0.3,容重ρ=3200.
二划分单元及载荷处理
三输入数据
1.基本参数
单元数NE=40;
节点数NJ=30;
支撑数NZ=14;
节点载荷数NPJ=7;
半宽带DD=14;
节点位移数NJ2=NJ*2=60;
2.其他参数
if(NPJ>0)
{
for(i=1;i<=NPJ;i++)
{
j=(int)PJ[i][2];
P[j]=PJ[i][1];
}
}
if(LOU>0)
{
for(E=1;E<=NE;E++)
{
DUGD(E,1);
PE=-LOU*(AE)*TE/3;
P[2*IE]=P[2*IE]+PE;
P[2*JE]=P[2*JE]+PE;
{
for(i=1;i<=3;i++)
for(j=1;j<=6;j++)
B[i][j]=0.0;
B[1][1]=(-BJ-BM)/(2.0*AE);
B[1][3]=BJ/(2*AE);
B[1][5]=BM/(2*AE);
B[2][2]=(-CJ-CM)/(2*AE);
B[2][4]=CJ/(2*AE);
}
}
}
}
}
五.结果分析:
1.输出变形图:
由运算结果中的u,v的即是各个节点在u,v方向的变形位移图,由CAD输出图形时,由于变形的位移很小,为了更清楚的显示出变形,应把u,v方向的位移相应的扩大一定的倍数,如图示:
2.输出等应力线图:
又运行结果中各个单元的s1,s2,tou计算出各个节点相应的s1,s2,tou,再次计算出给节点的主应力s1。
P[2*ME]=P[2*ME]+PE;
}
}
for(i=1;i<=NZ;i++)
{
z=NZC[i];
KZ[z][1]=1.0;
for(j=2;j<=DD;j++)
KZ[z][j]=0.0;
if(z!=1)
{
if(z>DD) J0=DD;
else J0=z;
for(j=2;j<=J0;j++)
KZ[z-j+1][j]=0.0;
double MU=0.3;
double LOU=3200;
double TE=1.0;
//节点坐标数组
double AJZ[NJ+1][3]={{0,0,0},{0,0,0},{0,1.5,0},{0,3,0},{0,4.5,0},{0,6,0},\
{0,0,1.5},{0,1.5,1.5},{0,3,1.5},{0,4.5,1.5},{0,5.25,1.5},{0,0,3},{0,1.5,3},\
CETA=0;
else
CETA=90-57.29578*atan2(SIG3,(SIG2-MIYL));
printf("\n");
printf("E= %2d\n",E);
printf("sx=%-18.6fsy=%-18.6ftou=%-18.6f\n",SIG1,SIG2,SIG3);
printf("s1=%-18.6fs2=%-18.6ftheta=%-18.6f\n",MAYL,MIYL,CETA);
}
for(E=1;E<=NE;E++)
{
DUGD(E,2);
for(i=1;i<=3;i++)
{
for(j=1;j<=2;j++)
{
h=2*(i-1)+j;
dh=2*(JM[E][i]-1)+j;
WY[h]=P[dh];
}
}
for(i=1;i<=3;i++)
{
YL[i]=0;
for(j=1;j<=6;j++)
B[2][6]=CM/(2*AE);
B[3][1]=B[2][2];
B[3][2]=B[1][1];
B[3][3]=B[2][4];
B[3][4]=B[1][3];
B[3][5]=B[2][6];
B[3][6]=B[1][5];
D[1][1]=EO/(1-MU*MU);
D[1][2]=EO*MU/(1-MU*MU);
由c语言编程以计算各个节点的主应力的程序:
#include<stdio.h>
#include<math.h>
#define MAX 10
void main()
{
int t;
int i;//循环变量
float a[MAX][3];
float zx,zy,zz;
float pjx,pjy,pjz;
float PYL,RYL,MAYL;
}
P[z]=0.0;
}
NJ1=NJ2-1;
for(k=1;k<=NJ1;k++)
{
if(NJ2>k+DD-1)
IM=k+DD-1;
else IM=NJ2;
IN=k+1;
for(i=IN;i<=IM;i++)
{
l=i-k+1;
c=KZ[k][l]/KZ[k][1];
jn=DD-l+1;
for(j=1;j<=jn;j++)
相关文档
最新文档