基于MATLAB和Optistruct的C形夹拓扑优化(3)

2018-12-17 14:09

从该实验结果来看,在我们给定的体积保留率的情况下,每经过一次拓扑结构优化,该优化程序就将C形夹的拓扑结构中强度要求不高处材料的密度减小,直到所有无用的材料都将被去除为止。我们的拓扑结构优化模型是建立在结构变形能最小、体积去除率自己给定的基础上进行的,故我们可以根据实际情况,自行确定体积去除率。

在拓扑优化的过程中,我们可以观察到,我无论体积压缩率如何变化,C形夹模型最终都向桁架结构进化。这说明,在结构件中,在自身材料多少相同的条件下,桁架具有很高的刚度和强度,其实这也就是为什么拓扑结构优化首先在桁架结构领域提出。故工程上,我们常见工程人员采用桁架结构来作为一些工程的支撑结构,如塔吊等。

在验证不同的体积压缩率时,在不同的给定体积压缩率下,算法的有效性也不同,但在验证过程中,发现算法一直会收敛。体积压缩率小的时候,该算法能很快终止;体积压缩率较大的时候,该算法的收敛速度较慢,并且还会出现不同程度的震荡,并且体积压缩率越大,该算法的振动也震荡。

4.2 基于Optistruct的C形夹拓扑优化 4.2.1有限元模型的建立

在Optistruct中建立有限元模型并划分网格。相关参数为:

E=2?105;?=0.3;密度?=7800kg/m3

添加边界调节和载荷,得到有限元模型如下图5.1所示:

图5.1 有限元模型

4.2.2 基于Optistruct的拓扑优化结果及分析

当体积分数volfrac=0.35时,拓扑结果图如图5.2所示:

图5.2 C形夹拓扑优化结果图(volfrac=0.35)

当体积分数volfrac=0.5时,拓扑结果图如图5.3所示:

图5.3 C形夹拓扑优化结果图(volfrac=0.5)

拓扑优化结构分析:在以变形最小为目标函数,即结构刚度最大,一定的材料保留比率volfrac为约束调节,当volfrac取不同的值时,优化得到的拓扑结构基本保持不变,说明该拓扑结构存在一理想状态,通过不断尝试,得到如下发现:在本例中当volfrac=0.35时所得的拓扑结构最为规律,并且该拓扑结构趋向与桁架结构。(具体拓扑结构演变过程见附件视频动画)

第6章 结论及总结

本文中,从两条独立的途径来分别对该问题进行研究。

Hyperworks中,利用hypermesh自带的的模块对该问题进行了建模,网格划分,得到有限元模型,然后将有限元模型导入拓扑优化模块Optistruct,添加边界条件及约束,定义目标函数和约束条件,对C形夹进行拓扑结构优化。所得到的拓扑结构趋向于桁架,说明桁架结构有很高的刚度。

Matlab中,首先对该问题构建数学模型,采用SIMP(OC)算法对数学模型进行优化求解,由于本文所研究的问题的求解域并不是规则的矩形,而是由三部分矩形叠加,所以在使用SIMP法时,对总体刚度矩阵组装,添加边界和约束条件成为了本文的关键技术,涉及到较多的有限元理论。在matlab中将每次迭代所得到的处理结果进行了图像动态显示,以此来清晰的观察拓扑结构优化的动态过程,给人以直观的印象。

在用Optistruct进行拓扑结构优化的时候,我们发现,当材料去除率为60%时,其所得到的拓扑结构与我们用Matlab进行拓扑结构优化是所得到的结果的拓扑结构是一致的。这验证了我们的matlab数学模型是对的。

参考文献

[1]O.sigmund. A 99 line topology optimization code written in Matlab.Educational article, 2001

[2]罗震.基于变密度法的连续体结构拓扑优化设计技术研究.博士学位论文.2005 [3]孙靖民.机械优化设计第三版.机械工业出版社.2004 [4]白新理等.结构优化设计.黄河水利出版社.2008.4

[5]郭仁生.机械工程设计分析和MATLAB应用.机械工业出版社.2006

附件:C形夹拓扑优化matlab程序

function top(nelx,nely,volfrac,penal,rmin); %变量初始化 nelx=60; nely=50; volfrac=0.35; penal=3; rmin=2;

x(1:nely,1:nelx) = volfrac; loop = 0; change = 1.; % 开始迭代

while change > 0.01 loop = loop + 1; xold = x;

[U]=FE(nelx,nely,x,penal); %调用子函数得到整体位移向量 % 将求解域分成三块矩形进行目标函数定义和敏度分析 [KE] = lk; c = 0.;

for ely = 1:nely

for elx = 1:(nelx-20)

n1 = (nely+1)*(elx-1)+ely; n2 = (nely+1)* elx +ely;

Ue = U([2*n1-1;2*n1; 2*n2-1;2*n2; 2*n2+1;2*n2+2; 2*n1+1;2*n1+2],1); x(16:35,41:nelx)=0.001;

c = c + x(ely,elx)^penal*Ue'*KE*Ue;%目标函数

dc(ely,elx) = -penal*x(ely,elx)^(penal-1)*Ue'*KE*Ue;%%敏度 end end

for ely = 1:15

for elx = 41:nelx

n1 = (nely+1)*(elx-1)+ely; n2 = (nely+1)* elx +ely;

Ue = U([2*n1-1;2*n1; 2*n2-1;2*n2; 2*n2+1;2*n2+2; 2*n1+1;2*n1+2],1); x(16:35,41:nelx)=0.001;

c = c + x(ely,elx)^penal*Ue'*KE*Ue;%目标函数

dc(ely,elx) = -penal*x(ely,elx)^(penal-1)*Ue'*KE*Ue; end

end

for ely = 36:nely for elx = 41:nelx

n1 = (nely+1)*(elx-1)+ely; n2 = (nely+1)* elx +ely;

Ue = U([2*n1-1;2*n1; 2*n2-1;2*n2; 2*n2+1;2*n2+2; 2*n1+1;2*n1+2],1); x(16:35,41:nelx)=0.001;

c = c + x(ely,elx)^penal*Ue'*KE*Ue;%目标函数

dc(ely,elx) = -penal*x(ely,elx)^(penal-1)*Ue'*KE*Ue; end end

% 敏度过滤,避免拓扑结构边界锯齿化 [dc] = check(nelx,nely,rmin,x,dc); % 通过OC法更新单元密度

[x] = OC(nelx,nely,x,volfrac,dc);

for j =(nelx-19):(nelx-1) %指定非优化区域 x(15,j)=0.9; end

for j =(nelx-19):(nelx-1) x(36,j)=0.9; end

change = max(max(abs(x-xold)));

disp([' It.: ' sprintf('%4i',loop) ' Obj.: ' sprintf('.4f',c) ... ' Vol.: ' sprintf('%6.3f',sum(sum(x))/(nelx*nely)) ... ' ch.: ' sprintf('%6.3f',change )])%显示结果

colormap(gray); imagesc(-x); axis equal; axis tight; axis off;pause(1e-6);%绘制密度图 end

%%%%%%%%%% 最优性判据更新单元密度值 %%%%%%%%%%% function [xnew]=OC(nelx,nely,x,volfrac,dc) l1 = 0; l2 = 100000; move = 0.2; while (l2-l1 > 1e-4) lmid = 0.5*(l2+l1);

xnew = max(0.001,max(x-move,min(1.,min(x+move,x.*sqrt(-dc./lmid))))); if sum(sum(xnew)) - volfrac*nelx*nely > 0; l1 = lmid; else

l2 = lmid; end end

%%%%%%%%%% 单元密度过滤 %%%%%%%%%%%%%%% function [dcn]=check(nelx,nely,rmin,x,dc) dcn=zeros(nely,nelx); for i = 1:(nelx-20) for j = 1:nely sum=0.0;

for k = max(i-floor(rmin),1):min(i+floor(rmin),nelx) for l = max(j-floor(rmin),1):min(j+floor(rmin),nely) fac = rmin-sqrt((i-k)^2+(j-l)^2); sum = sum+max(0,fac);

dcn(j,i) = dcn(j,i) + max(0,fac)*x(l,k)*dc(l,k); end end

dcn(j,i) = dcn(j,i)/(x(j,i)*sum); end end

for i = (nelx-19):nelx for j = 1:15 sum=0.0;


基于MATLAB和Optistruct的C形夹拓扑优化(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:【教学设计】青岛版小学科学四年级上册《充气玩具里的科学》教学

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: