clc
% DEFINE THE PHSICAL DIMENTIONS AND MATERIAL PROPERTIES
clear;
length=48;height=12;ldiv=4;hdiv=4;
E=30e6;nu=0.3;area=1;P=1000;
quad=4;dmax=3.6;
stepx=length/ldiv;
stepy=height/hdiv;
% DEFINE THE PLANE STRESS MATRIX
C = E/(1-nu^2)*[1 nu 0;nu 1 0;0 0 (1-nu)/2];
% SET UP THE NODAL COORDINATES FOR A UNIFORM MESH
[x,y,nnodes,element,elemnode]=mesh(length,height,ldiv,hdiv);
[x,y]=random_func(x,y,nnodes,length,height,hdiv);
%plot(x,y,'p');grid
% hold on
% SET UP DOMAIN OF INFLUENCE
dmx=dmax*stepx*ones(1,nnodes);
dmy=dmax*stepy*ones(1,nnodes);
% SET UP QUADRATURE CELLS
[xq,yq,numquad,qcell,elemnode]=mesh(length,height,ldiv,hdiv);
% CALCULATE PQ
[PQ]=PQ_func(x,y,nnodes);
detPQ=det(PQ)
if detPQ==0 %| detPQ==Inf | detPQ==-Inf
[index,rank]=rank_func(PQ,nnodes);
[PQ]=omit_func(PQ,index);
detPQ=det(PQ);
nnodes=rank
end
[cofact_PQ]=inv_func(PQ,nnodes);
invPQ=cofact_PQ'/detPQ;
% LOOP OVER GUASS POINTS
gauss = gaussian(quad);
qnodes=qcell*quad^2;
[xquad,yquad,jcob,weight] = egauss(xq,yq,elemnode,gauss,qcell,nnodes);
% plot(xg,yg,'p')
k = zeros(2*nnodes);
for j=1:qnodes
xgq=xquad(j);ygq=yquad(j);
[pb,dpbx,dpby]=basis_func(xgq,ygq,nnodes);
[phi,dphix,dphiy]=shape_func(pb,dpbx,dpby,invPQ);
BI=zeros(3,2*nnodes);
for i=1:nnodes
BI(1,2*i-1)=dphix(i);
BI(2,2*i)=dphiy(i);
BI(3,2*i-1)=dphiy(i);
BI(3,2*i)=dphix(i);
end
k=k+BI'*C*BI*(jcob(j)*weight(j)*area);
end
% DETERMINE NODES ON BOUNDARY, SET UP BC'S
jdis=0;jtrac=0;
for i=1:nnodes
if x(i)==0
jdis=jdis+1;
dis_indice(jdis)=i;
elseif x(i)==length
jtrac=jtrac+1;
trac_indice(jtrac)=i;
end
end
%SET UP GAUSS POINTS ALONG TRACTION BOUNDARY
trac_indice
[xg,yg,jcob,weight] = BC_gauss(x,y,trac_indice,gauss);
f=zeros(2*nnodes,1);
Imo = (1/12)*height^3;
qnodes=(jtrac-1)*quad;
for j=1:qnodes
xgq=xg(j);ygq=yg(j);
[pb,dpbx,dpby]=basis_func(xgq,ygq,nnodes);
[phi,dphix,dphiy]=shape_func(pb,dpbx,dpby,invPQ);
if j<2
phi
sum(phi)
end
tx=0.0;
ty= -(P/(2*Imo))*((height^2)/4-ygq^2);
for i=1:nnodes
force(2*i-1)=phi(i)*tx;
force(2*i)=phi(i)*ty;
end
f=f+force'*(jcob(j)*weight(j));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=1:nnodes
if x(j)==0
node_temp_k=k(2*j-1,2*j-1);
k(2*j-1,:)=0;
k(:,2*j-1)=0;
f(2*j-1,1)=0;
k(2*j-1,2*j-1)=node_temp_k;
end
if y(j)==0
j
node_temp_k=k(2*j,2*j);
k(2*j,:)=0;
k(:,2*j)=0;
f(2*j,1)=0;
k(2*j,2*j)=node_temp_k;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
u=k\f;
for i=1:nnodes
ux(i)=u(2*i-1);
uy(i)=u(2*i);
end
ux
uy
%%%%%%%%%%%%%%%%% exact %%%%%%%%%%%%%%%%%%%%
l=length*ones(size(x));
h=height*ones(size(x));
uex=P/(6*E*Imo)*((6*l-3*x).*x+(2+nu)*(y.^2-h.^2/4))
uey=-P/(6*E*Imo)*(3*nu*(y.^2).*(l-x)+(4+5*nu)*(h.^2/4).*x+(3*l-x).*(x.^2))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
qnodes=qcell*quad^2;
[xg,yg,jcob,weight] = egauss(xq,yq,elemnode,gauss,qcell,nnodes);
enorm=0;
for j=1:qnodes
xgq=xg(j);ygq=yg(j);
[pb,dpbx,dpby]=basis_func(xgq,ygq,nnodes);
[phi,dphix,dphiy]=shape_func(pb,dpbx,dpby,invPQ);
BI=zeros(3,2*nnodes);
for i=1:nnodes
BI(1,2*i-1)=dphix(i);
BI(2,2*i)=dphiy(i);
BI(3,2*i-1)=dphiy(i);
BI(3,2*i)=dphix(i);
end
stress(1:3,j) = C*BI*u;
stressex(1,j) = (1/Imo)*P*(length-xgq)*ygq;
stressex(2,j) = 0;
stressex(3,j) = -0.5*(P/Imo)*(0.25*height^2 - ygq^2);
err = stress(1:3,j)-stressex(1:3,j);
err2 = weight(j)*jcob(j)*(0.5*(inv(C)*err)'*(err));
enorm = enorm + err2;
end
stress;
enorm = sqrt(enorm)
pim.rar_PIM_PIM MATLAB_meshless_meshless matlab_pim method
版权申诉
114 浏览量
2022-09-22
21:55:40
上传
评论
收藏 5KB RAR 举报
我虽横行却不霸道
- 粉丝: 75
- 资源: 1万+
最新资源
- Screenshot_20240528_103010.jpg
- 基于Python的新能源承载力计算及界面设计源码 - HAINING-DG
- 基于Java的本科探索学习项目设计源码 - 本科探索
- 基于Javascript和Python的微商城项目设计源码 - MicroMall
- 基于Java的网上订餐系统设计源码 - online ordering system
- 基于Javascript的超级美眉网络资源管理应用模块设计源码
- 基于Typescript和PHP的编程知识储备库设计源码 - study-php
- Screenshot_2024-05-28-11-40-58-177_com.tencent.mm.jpg
- 基于Dart的Flutter小提琴调音器APP设计源码 - violinhelper
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈