MMA优化器求解SIMP拓扑优化的MATLAB代码.docx_第1页
MMA优化器求解SIMP拓扑优化的MATLAB代码.docx_第2页
MMA优化器求解SIMP拓扑优化的MATLAB代码.docx_第3页
MMA优化器求解SIMP拓扑优化的MATLAB代码.docx_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

% MMA%function topMMA(nelx,nely,volfrac,penal,rmin)% MATERIAL PROPERTIESE0 = 1;Emin = 1e-9;nu = 0.3;% PREPARE FINITE ELEMENT ANALYSISA11 = 12 3 -6 -3; 3 12 3 0; -6 3 12 -3; -3 0 -3 12;A12 = -6 -3 0 3; -3 -6 -3 -6; 0 -3 -6 3; 3 -6 3 -6;B11 = -4 3 -2 9; 3 -4 -9 4; -2 -9 -4 -3; 9 4 -3 -4;B12 = 2 -3 4 -9; -3 2 9 -2; 4 9 2 3; -9 -2 3 2;KE = 1/(1-nu2)/24*(A11 A12;A12 A11+nu*B11 B12;B12 B11);nodenrs = reshape(1:(1+nelx)*(1+nely),1+nely,1+nelx);edofVec = reshape(2*nodenrs(1:end-1,1:end-1)+1,nelx*nely,1);edofMat = repmat(edofVec,1,8)+repmat(0 1 2*nely+2 3 0 1 -2 -1,nelx*nely,1);iK = reshape(kron(edofMat,ones(8,1),64*nelx*nely,1);jK = reshape(kron(edofMat,ones(1,8),64*nelx*nely,1);% DEFINE LOADS AND SUPPORTS (HALF MBB-BEAM) %F = sparse(2,1,-1,2*(nely+1)*(nelx+1),1);%fixeddofs = union(1:2:2*(nely+1),2*(nelx+1)*(nely+1); %F = sparse(2*(nelx*(nely+1)+fix(nely/2)+1),1,-1,2*(nely+1)*(nelx+1),1);%fixeddofs = 1:2*(nely+1); F = sparse(2*(fix(nely/2)+1)-1,1,1,2*(nely+1)*(nelx+1),1);fixeddofs = 1 2 2*nely+1 2*nely+2; U = zeros(2*(nely+1)*(nelx+1),1);alldofs = 1:2*(nely+1)*(nelx+1);freedofs = setdiff(alldofs,fixeddofs);% PREPARE FILTERiH = ones(nelx*nely*(2*(ceil(rmin)-1)+1)2,1);jH = ones(size(iH);sH = zeros(size(iH);k = 0;for i1 = 1:nelx for j1 = 1:nely e1 = (i1-1)*nely+j1; for i2 = max(i1-(ceil(rmin)-1),1):min(i1+(ceil(rmin)-1),nelx) for j2 = max(j1-(ceil(rmin)-1),1):min(j1+(ceil(rmin)-1),nely) e2 = (i2-1)*nely+j2; k = k+1; iH(k) = e1; jH(k) = e2; sH(k) = max(0,rmin-sqrt(i1-i2)2+(j1-j2)2); end end endendH = sparse(iH,jH,sH);Hs = sum(H,2);% INITIALIZE ITERATIONx = repmat(volfrac,nely,nelx);n = nelx*nely;xold1 = repmat(0,n,1);xold2 = xold1; low = repmat(0,n,1);upp = repmat(1,n,1);loop = 0;change = 1;% START ITERATIONwhile change 0.01 loop = loop + 1; % FE-ANALYSIS sK = reshape(KE(:)*(Emin+x(:).penal*(E0-Emin),64*nelx*nely,1); K = sparse(iK,jK,sK); K = (K+K)/2; U(freedofs) = K(freedofs,freedofs)F(freedofs); % OBJECTIVE FUNCTION AND SENSITIVITY ANALYSIS ce = reshape(sum(U(edofMat)*KE).*U(edofMat),2),nely,nelx); f = sum(sum(Emin+x.penal*(E0-Emin).*ce); dc = -penal*(E0-Emin)*x.(penal-1).*ce; % FILTERING/MODIFICATION OF SENSITIVITIES dc(:) = H*(x(:).*dc(:)./Hs./max(1e-3,x(:); % OPTIMALITY CRITERIA UPDATE OF DESIGN VARIABLES AND PHYSICAL DENSITIES xval = reshape(x,n,1); xmin = zeros(n,1); xmax = ones(n,1); f0val = f; df0dx = reshape(dc,n,1); fval = sum(xval)-volfrac*n; dfdx = ones(1,n); a0 =1; a = 0; c = 100000; d = 0; xmma,low1,upp1 = mmasub(1,n,loop,xval,xmin,xmax,xold1,xold2,f0val,df0dx,fval,dfdx,low,upp,a0,a,c,d); xold2 = xold1; xold1 = xmma; low = low1; upp = upp1; change = max(abs(xmma(:)-x(:); x = reshape(xmma,nely,nelx); % PRINT RESULTS fprintf( It.:%5i Obj.:%11.4f Vol.:%7.3f ch.:%7.3fn,loop,f, . mean(x(:),change); % PLOT DENSITIES colormap(gray); imagesc(1-x); caxis(0 1); axis equal; axis off; drawnow;end% CMLP %function top_CMPL(nelx,nely,volfrac,penal,rmin)% MATERIAL PROPERTIESE0 = 1000;Emin = 1e-9;nu = 0.3;% PREPARE FINITE ELEMENT ANALYSISA11 = 12 3 -6 -3; 3 12 3 0; -6 3 12 -3; -3 0 -3 12;A12 = -6 -3 0 3; -3 -6 -3 -6; 0 -3 -6 3; 3 -6 3 -6;B11 = -4 3 -2 9; 3 -4 -9 4; -2 -9 -4 -3; 9 4 -3 -4;B12 = 2 -3 4 -9; -3 2 9 -2; 4 9 2 3; -9 -2 3 2;KE = 1/(1-nu2)/24*(A11 A12;A12 A11+nu*B11 B12;B12 B11);nodenrs = reshape(1:(1+nelx)*(1+nely),1+nely,1+nelx);edofVec = reshape(2*nodenrs(1:end-1,1:end-1)+1,nelx*nely,1);edofMat = repmat(edofVec,1,8)+repmat(0 1 2*nely+2 3 0 1 -2 -1,nelx*nely,1);iK = reshape(kron(edofMat,ones(8,1),64*nelx*nely,1);jK = reshape(kron(edofMat,ones(1,8),64*nelx*nely,1);% DEFINE LOADS AND SUPPORTS F = sparse(2*(fix(nely/2)+1)-1,1,1,2*(nely+1)*(nelx+1),1);Fd = sparse(2*(nelx*(nely+1)+fix(nely/2)+1)-1,1,-1,2*(nely+1)*(nelx+1),1);U = zeros(2*(nely+1)*(nelx+1),1);Ud = U;fixeddofs = 1 2 2*nely+1 2*nely+2;alldofs = 1:2*(nely+1)*(nelx+1);freedofs = setdiff(alldofs,fixeddofs);% PREPARE FILTERiH = ones(nelx*nely*(2*(ceil(rmin)-1)+1)2,1);jH = ones(size(iH);sH = zeros(size(iH);k = 0;for i1 = 1:nelx for j1 = 1:nely e1 = (i1-1)*nely+j1; for i2 = max(i1-(ceil(rmin)-1),1):min(i1+(ceil(rmin)-1),nelx) for j2 = max(j1-(ceil(rmin)-1),1):min(j1+(ceil(rmin)-1),nely) e2 = (i2-1)*nely+j2; k = k+1; iH(k) = e1; jH(k) = e2; sH(k) = max(0,rmin-sqrt(i1-i2)2+(j1-j2)2); end end endendH = sparse(iH,jH,sH);Hs = sum(H,2);% INITIALIZE ITERATIONx = repmat(volfrac,nely,nelx);n = nelx*nely;xold1 = repmat(0,n,1);xold2 = xold1; low = repmat(0,n,1);upp = repmat(1,n,1);loop = 0;change = 1;% START ITERATIONwhile change 0.01 loop = loop + 1; % FE-ANALYSIS sK = reshape(KE(:)*(Emin+x(:).penal*(E0-Emin),64*nelx*nely,1); K = sparse(iK,jK,sK); K = (K+K)/2; U(freedofs) = K(freedofs,freedofs)F(freedofs); Ud(freedofs) = - K(freedofs,freedofs)Fd(freedofs); % OBJECTIVE FUNCTION AND SENSITIVITY dANALYSIS % Es_e = reshape(sum(U(edofMat)*KE).*U(edofMat),2),nely,nelx); Ems_e = reshape(sum(Ud(edofMat)*KE).*U(edofMat),2),nely,nelx); Es = sum(sum(Emin+x.penal*(E0-Emin).* Es_e); Ems = sum(sum(Emin+x.penal*(E0-Emin).* Ems_e); mu1 = 1; f = mu1 * Es - (1-mu1)*Ems; dEs = penal*(E0-Emin)*x.(penal-1).*Es_e; dEms = penal*(E0-Emin)*x.(penal-1).*Ems_e; df = mu1 * dEs - (1-mu1)*dEms; % ce = reshape(sum(U(edofMat)*KE).*U(edofMat),2),nely,nelx); f = sum(sum(Emin+x.penal*(E0-Emin).*ce); df = -penal*(E0-Emin)*x.(penal-1).*ce; % FILTERING/MODIFICATION OF SENSITIVITIES df(:) = H*(x(:).*df(:)./Hs./max(1e-3,x(:); % OPTIMALITY CRITERIA UPDATE OF DESIGN VARIABLES AND PHYSICAL DENSITIES xval = reshape(x,n,1); xmin = zeros(n,1); xmax = ones(n,1); f0val = f; df0dx = reshape(df,n,1); fval = sum(xval)-volfrac*n; dfdx = ones(1,n); a0 =1; a = 0; c = 100000; d = 0; xmma,low1,upp1 = mmasub(1,n,loop,xval,xmin,xmax,xold1,xold2,f0val,df0dx,fval,dfdx,low,upp,a0,a,c,d); xol

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论