Skip to main content
Log in

A new topology optimization approach based on Moving Morphable Components (MMC) and the ersatz material model

  • RESEARCH PAPER
  • Published:
Structural and Multidisciplinary Optimization Aims and scope Submit manuscript

Abstract

This paper presents a new topology optimization approach based on the so-called Moving Morphable Components (MMC) solution framework. The proposed method improves several weaknesses of the previous approach (e.g., Guo et al. in J Appl Mech 81:081009, 2014a) in the sense that it can not only allow for components with variable thicknesses but also enhance the numerical solution efficiency substantially. This is achieved by constructing the topological description functions of the components appropriately, and utilizing the ersatz material model through projecting the topological description functions of the components. Numerical examples demonstrate the effectiveness of the proposed approach. In order to help readers understand the essential features of this approach, a 188 line Matlab implementation of this approach is also provided.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15

Similar content being viewed by others

References

  • Allaire G, Olivier P (2006) Structural optimization with FreeFEM++. Struct Multidiscip Optim 32:173–181

    Article  MathSciNet  MATH  Google Scholar 

  • Allaire G, Jouve F, Toader AM (2004) Structural optimization using sensitivity analysis and a level-set method. J Comput Phys 194:363–393

    Article  MathSciNet  MATH  Google Scholar 

  • Andreassen E, Clausen A, Schevenels M, Lazarov B, Sigmund O (2011) Efficient topology optimization in matlab using 88 lines of code. Struct Multidiscip Optim 43:1–16

    Article  MATH  Google Scholar 

  • Bendsoe MP (1989) Optimal shape design as a material distribution problem. Struct Optim 1:193–202

    Article  Google Scholar 

  • Bendsoe MP, Kikuchi N (1988) Generating optimal topologies in structural design using a homogenization method. Comput Methods Appl Mech Engrg 71:197–224

    Article  MathSciNet  MATH  Google Scholar 

  • Challis V (2010) A discrete level-set topology optimization code written in Matlab. Struct Multidiscip Optim 41:453–464

    Article  MathSciNet  MATH  Google Scholar 

  • Chen SK, Wang MY, Liu AQ (2008) Shape feature control in structural topology optimization. Comput Aided Design 40:951–962

    Article  MathSciNet  Google Scholar 

  • Eschenauer HA, Olhoff N (2001) Topology optimization of continuum structures: A review. Appl Mech Rev 54:331–390

    Article  Google Scholar 

  • Guest J (2009a) Imposing maximum length scale in topology optimization. Struct Multidiscip Optim 37:463–473

    Article  MathSciNet  MATH  Google Scholar 

  • Guest J (2009b) Topology optimization with multiple phase projection. Comput Method Appl Mech Eng 199:123–135

    Article  MathSciNet  MATH  Google Scholar 

  • Guest J (2015) Optimizing the layout of discrete objects in structures and materials: a projection-based topology optimization approach. Comput Methods Appl Mech Eng 283:330–351

    Article  Google Scholar 

  • Guest J, Prevost J, Belytschko T (2004) Achieving minimum length scale in topology optimization using nodal design variables and projection functions. Int J Numer Methods Eng 61:238–254

    Article  MathSciNet  MATH  Google Scholar 

  • Guest J, Asadpoure A, Ha SH (2011) Eliminating beta-continuation from heaviside projection and density filter algorithms. Struct Multidiscip Optim 44:443–453

    Article  MathSciNet  MATH  Google Scholar 

  • Guo X, Cheng GD (2010) Recent development in structural design and optimization. Acta Mech Sinica 26:807–823

    Article  MathSciNet  MATH  Google Scholar 

  • Guo X, Zhao K, Wang MY (2005) A new approach for simultaneous shape and topology optimization based on dynamic implicit surface function. Control Cybern 34:255–282

    MathSciNet  MATH  Google Scholar 

  • Guo X, Zhang WS, Zhong WL (2014a) Doing topology optimization explicitly and geometrically—a new moving morphable components based framework. J Appl Mech 81:081009

    Article  Google Scholar 

  • Guo X, Zhang WS, Zhong WL (2014b) Explicit feature control in structural topology optimization via level set method. Comput Method Appl Mech Eng 272:354–378

    Article  MathSciNet  MATH  Google Scholar 

  • Guo X, Zhang WS, Zhang J (2015) Explicit structural topology optimization based on morphable components with complex shapes. In submission

  • Ha SH, Guest JK (2014) Optimizing inclusion shapes and patterns in periodic materials using discrete object projection. Struct Multidiscip Optim 50:65–80

    Article  Google Scholar 

  • Liu K, Tovar A (2014) An efficient 3D topology optimization code written in Matlab. Struct Multidiscip Optim 50:1175–1196

    Article  MathSciNet  Google Scholar 

  • Luo JZ, Luo Z, Chen SK, Tong LY, Wang MY (2008) A new level set method for systematic design of hinge-free compliant mechanisms. Comput Method Appl Mech Eng 198:318–331

    Article  MATH  Google Scholar 

  • Michailidis G (2014) Manufacturing Constraints and multi-phase shape and topology optimization via a level-set method. Doctoral thesis Ecole Polytechnique http://www.cmapx.polytechnique.fr/~michailidis/publis/thesis.pdf

  • Norato JA, Bellb BK, Tortorellic DA (2015) A geometry projection method for continuum-based topology optimization with discrete elements. Comput Methods Appl Mech Eng 293:306–327

    Article  MathSciNet  Google Scholar 

  • Otomori M, Yamada T, Izui K, Nishiwaki S (2015) Matlab code for a level set-based topology optimization method using a reaction diffusion equation. Struct Multidiscip Optim 51:1159–1172

    Article  MathSciNet  Google Scholar 

  • Petersson J, Sigmund O (1998) Slope constrained topology optimization. Int J Numer Methods Eng 41:1417–1434

    Article  MathSciNet  MATH  Google Scholar 

  • Poulsen TA (2003) A new scheme for imposing minimum length scale in topology optimization. Int J Numer Methods Eng 57:741–760

    Article  MathSciNet  MATH  Google Scholar 

  • Sigmund O (2001) A 99 line topology optimization code written in MATLAB. Struct Multidiscip Optim 21:120–127

    Article  Google Scholar 

  • Sigmund O (2009) Manufacturing tolerant topology optimization. Acta Mech Sinica 25:227–239

    Article  MATH  Google Scholar 

  • Sigmund O, Maute K (2013) Topology optimization approaches. Struct Multidiscip Optim 48:1031–1055

    Article  MathSciNet  Google Scholar 

  • Suresh K (2010) A 199-line Matlab code for Pareto-optimal tracing in topology optimization 42: 665–679

  • Svanberg K (1987) The method of moving asymptotes-a new method for structural optimization. Int J Numer Methods Eng 24:359–373

    Article  MathSciNet  MATH  Google Scholar 

  • Wang MY, Wang XM, Guo DM (2003) A level set method for structural topology optimization. Comput Methods Appl Mech Eng 192:227–246

    Article  MathSciNet  MATH  Google Scholar 

  • Wang FW, Lazarov B, Sigmund O (2011) On projection methods, convergence and robust formulations in topology optimization. Struct Multidiscip Optim 43:767–784

    Article  MATH  Google Scholar 

  • Xia Q, Shi TL (2015) Constraints of distance from boundary to skeleton: For the control of length scale in level set based structural topology optimization. Comput Methods Appl Mech Eng. doi:10.1016/j.cma.2015.07.015

    MathSciNet  Google Scholar 

  • Xie YM, Steven GP (1993) A simple evolutionary procedure for structural optimization. Comput Struct 49:885–896

    Article  Google Scholar 

  • Zhang WS, Zhong WL, Guo X (2014) An explicit length scale control approach in SIMP-based topology optimization. Comput Methods Appl Mech Eng 282:71–86

    Article  MathSciNet  Google Scholar 

  • Zhang WS, Zhang J, Guo X (2015a) Explicit structural topology optimization via moving morphable components- A revival of shape optimization. In submission

  • Zhang WS, Zhong WL, Guo X (2015b) Explicit layout control in optimal design of structural systems with multiple embedding components. Comput Methods Appl Mech Eng 290:290–313

    Article  MathSciNet  Google Scholar 

  • Zhou M, Rozvany GIN (1991) The COC algorithm, part II: topological, geometry and generalized shape optimization. Comput Methods Appl Mech Eng 89:309–336

    Article  Google Scholar 

  • Zhou MD, Lazarov BS, Wang FW, Sigmund O (2015) Minimum length scale in topology optimization by geometric constraint. Comput Methods Appl Mech Eng 293:266–28

    Article  MathSciNet  Google Scholar 

Download references

Acknowledgments

The financial supports from the National Natural Science Foundation (10925209, 91216201, 11402048), the Fundamental Research Funds for the Central Universities, Program for Changjiang Scholars, Innovative Research Team in University (PCSIRT) and 111 Project (B14013) are gratefully acknowledged.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Xu Guo.

Appendix: Matlab code (corresponding to the short beam problem)

Appendix: Matlab code (corresponding to the short beam problem)

function MMC188(DW,DH,nelx,nely,x_int,y_int,ini_val,volfrac)

% FEM data initialization

M = [nely + 1, nelx + 1];

EW = DW / nelx; % length of element

EH = DH / nely; % width of element

[x,y] = meshgrid(EW * [0 : nelx], EH * [0 : nely]);

LSgrid.x = x(:);

LSgrid.y = y(:); % coordinate of nodes

% Material properties

h = 1; %thickness

E = 1;

nu = 0.3;

% Component geometry initialization

x0 = x_int/2:x_int:DW; % x-coordinates of the centers of components

y0 = y_int/2:y_int:DH; % y-coordinates of the centers of components

xn = length(x0); % number of component groups in x direction

yn = length(y0); % number of component groups in y direction

x0 = kron(x0,ones(1,2*yn));

y0 = repmat(kron(y0,ones(1,2)),1,xn);

N = length(x0); % total number of components in the design domain

L = repmat(ini_val(1),1,N); % vector of the half length of each component

t1 = repmat(ini_val(2),1,N); % vector of the half width of component at point A

t2 = repmat(ini_val(3),1,N); % vector of the half width of component at point B

t3 = repmat(ini_val(4),1,N); % vector of the half width of component at point C

st = repmat([ini_val(5) -ini_val(5)],1,N/2); % vector of the sine value of the inclined angle of each component

variable = [x0;y0;L;t1;t2;t3;st];

%Parameter of MMA

xy00 = variable(:);

xval = xy00;

xold1 = xy00;

xold2 = xy00;

%Limits of variable:[x0; y0; L; t1; t2; t3; st];

xmin = [0; 0; 0.01; 0.01; 0.01; 0.03; −1.0];

xmin = repmat(xmin,N,1);

xmax = [DW; DH; 2.0; 0.2; 0.2; 0.2; 1.0];

xmax = repmat(xmax,N,1);

low = xmin;

upp = xmax;

m = 1; %number of constraint

Var_num = 7; % number of design variables for each component

nn = Var_num*N;

c = 1000*ones(m,1);

d = zeros(m,1);

a0 = 1;

a = zeros(m,1);

%Define loads and supports(Short beam)

fixeddofs = 1:2*(nely + 1);

alldofs = 1:2*(nely + 1)*(nelx + 1);

freedofs = setdiff(alldofs,fixeddofs);

loaddof = 2*(nely + 1)*nelx + nely + 2;

F = sparse(loaddof,1,-1,2*(nely + 1)*(nelx + 1),1);

%Preparation FE analysis

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 4 5] 2 3],nelx*nely,1);

iK = kron(edofMat,ones(8,1))';

jK = kron(edofMat,ones(1,8))';

EleNodesID = edofMat(:,2:2:8)./2;

iEner = EleNodesID';

[KE] = BasicKe(E,nu, EW, EH,h); % stiffness matrix k^s is formed

%Initialize iteration

p = 6;

alpha = 1e-3; % parameter alpha in the Heaviside function

epsilon = 4*min(EW,EH); % regularization parameter epsilon in the Heaviside function

Phi = cell(N,1);

Loop = 1;

change = 1;

maxiter = 1000; % the maximum number of iterations

while change > 0.001 && Loop < maxiter

%Forming Phi^s

for i = 1:N

Phi{i} = tPhi(xy00(Var_num*i-Var_num + 1:Var_num*i),LSgrid.x,LSgrid.y,p);

end

%Union of components

tempPhi_max = Phi{1};

for i = 2:N

tempPhi_max = max(tempPhi_max,Phi{i});

end

Phi_max = reshape(tempPhi_max,nely + 1,nelx + 1);

%Plot components

contourf(reshape(x, M), reshape(y, M),Phi_max,[0,0]);

axis equal;axis([0 DW 0 DH]);pause(1e-6);

% Calculating the finite difference quotient of H

H = Heaviside(Phi_max,alpha,nelx,nely,epsilon);

diffH = cell(N,1);

for j = 1:N

for ii = 1:Var_num

xy001 = xy00;

xy001(ii + (j-1)*Var_num) = xy00(ii + (j-1)*Var_num) + max(2*min(EW,EH),0.005);

tmpPhiD1 = tPhi(xy001(Var_num*j-Var_num + 1:Var_num*j),LSgrid.x,LSgrid.y,p);

tempPhi_max1 = tmpPhiD1;

for ik = 1:j-1

tempPhi_max1 = max(tempPhi_max1,Phi{ik});

end

for ik = j + 1:N

tempPhi_max1 = max(tempPhi_max1,Phi{ik});

end

xy002 = xy00;

xy002(ii + (j-1)*Var_num) = xy00(ii + (j-1)*Var_num)-max(2*min(EW,EH),0.005);

tmpPhiD2 = tPhi(xy002(Var_num*j-Var_num + 1:Var_num*j),LSgrid.x,LSgrid.y,p);

tempPhi_max2 = tmpPhiD2;

for ik = 1:j-1

tempPhi_max2 = max(tempPhi_max2,Phi{ik});

end

for ik = j + 1:N

tempPhi_max2 = max(tempPhi_max2,Phi{ik});

end

HD1 = Heaviside(tempPhi_max1,alpha,nelx,nely,epsilon);

HD2 = Heaviside(tempPhi_max2,alpha,nelx,nely,epsilon);

diffH{j}(:,ii) = (HD1-HD2)/(2*(max(2*min(EW,EH),0.005)));

end

end

%FEA

denk = sum(H(EleNodesID).^2, 2) / 4;

den = sum(H(EleNodesID), 2) / 4;

A1 = sum(den)*EW*EH;

U = zeros(2*(nely + 1)*(nelx + 1),1);

sK = KE(:)*denk(:)';

K = sparse(iK(:),jK(:),sK(:)); K = (K + K')/2;

U(freedofs,:) = K(freedofs,freedofs)\F(freedofs,:);

%Energy of element

energy = sum((U(edofMat)*KE).*U(edofMat),2);

sEner = ones(4,1)*energy'/4;

energy_nod = sparse(iEner(:),1,sEner(:));

Comp = F'*U;

% Sensitivities

df0dx = zeros(Var_num*N,1);

dfdx = zeros(Var_num*N,1);

for k = 1:N

df0dx(Var_num*k-Var_num + 1:Var_num*k,1) = 2*energy_nod'.*H*diffH{k};

dfdx(Var_num*k-Var_num + 1:Var_num*k,1) = sum(diffH{k})/4;

end

%MMA optimization

f0val = Comp;

df0dx = −df0dx/max(abs(df0dx));

fval = A1/(DW*DH)-volfrac;

dfdx = dfdx/max(abs(dfdx));

[xmma,ymma,zmma,lam,xsi,eta,mu,zet,ss,low,upp] = …

mmasub(m,nn,Loop,xval,xmin,xmax,xold1,xold2, …

f0val,df0dx,fval,dfdx,low,upp,a0,a,c,d);

xold2 = xold1;

xold1 = xval;

change = max(abs(xval-xmma));

xval = xmma;

xy00 = round(xval*1e4)/1e4;

disp([' It.: ' sprintf('%4i\t',Loop) ' Obj.: ' sprintf('%6.3f\t',f0val) ' Vol.: ' …

sprintf('%6.4f\t',fval) 'ch.:' sprintf('%6.4f\t',change)]);

Loop = Loop + 1;

end

end

%Forming Phi_i for each component

function [tmpPhi] = tPhi(xy,LSgridx,LSgridy,p)

st = xy(7);

ct = sqrt(abs(1-st*st));

x1 = ct*(LSgridx - xy(1)) + st*(LSgridy - xy(2));

y1 = −st*(LSgridx - xy(1)) + ct*(LSgridy - xy(2));

bb = (xy(5) + xy(4)-2*xy(6))/2/xy(3)^2*x1.^2 + (xy(5)-xy(4))/2*x1/xy(3) + xy(6);

tmpPhi = −((x1).^p/xy(3)^p + (y1).^p./bb.^p-1);

end

%Heaviside function

function H = Heaviside(phi,alpha,nelx,nely,epsilon)

num_all = [1:(nelx + 1)*(nely + 1)]';

num1 = find(phi > epsilon);

H(num1) = 1;

num2 = find(phi < −epsilon);

H(num2) = alpha;

num3 = setdiff(num_all,[num1;num2]);

H(num3) = 3*(1-alpha)/4*(phi(num3)/epsilon-phi(num3).^3/(3*(epsilon)^3)) + (1 + alpha)/2;

end

%Element stiffness matrix

function [KE] = BasicKe(E,nu, a, b,h)

k = [−1/6/a/b*(nu*a^2-2*b^2-a^2), 1/8*nu + 1/8, −1/12/a/b*(nu*a^2 + 4*b^2-a^2), 3/8*nu-1/8, …

1/12/a/b*(nu*a^2-2*b^2-a^2),-1/8*nu-1/8, 1/6/a/b*(nu*a^2 + b^2-a^2), −3/8*nu + 1/8];

KE = E*h/(1-nu^2)*…

[k(1) k(2) k(3) k(4) k(5) k(6) k(7) k(8)

k(2) k(1) k(8) k(7) k(6) k(5) k(4) k(3)

k(3) k(8) k(1) k(6) k(7) k(4) k(5) k(2)

k(4) k(7) k(6) k(1) k(8) k(3) k(2) k(5)

k(5) k(6) k(7) k(8) k(1) k(2) k(3) k(4)

k(6) k(5) k(4) k(3) k(2) k(1) k(8) k(7)

k(7) k(4) k(5) k(2) k(3) k(8) k(1) k(6)

k(8) k(3) k(2) k(5) k(4) k(7) k(6) k(1)];

end

% ~ ~ ~ ~ A Moving Morphable Components (MMC) based topology optimization code

% ~ ~ ~ ~ by Xu Guo Weisheng Zhang and Jie Yuan

% ~ ~ ~ ~ Department of Engineering Mechanics, State Key Laboratory of Structural Analysis

% ~ ~ ~ ~ for Industrial Equipment, Dalian University of Technology

% ~ ~ ~ ~ Please send your suggestions and comments to guoxu@dlut.edu.cn

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Zhang, W., Yuan, J., Zhang, J. et al. A new topology optimization approach based on Moving Morphable Components (MMC) and the ersatz material model. Struct Multidisc Optim 53, 1243–1260 (2016). https://doi.org/10.1007/s00158-015-1372-3

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00158-015-1372-3

Keywords

Navigation