# An SQP Algorithm for Structural Topology Optimization Based on Majorization-Minimization Method
## 2 Quadratic Programming Subproblem  
### Optimization Model  
To produce an almost void-and-solid design, the density-based method uses the solid isotropic material with penalization (SIMP) [20] material interpolation model to penalize elements with intermediate densities. The relationship between Young's modulus and density is defined as  
\[E_{i}(x_{i})=E_{\min}+x_{i}^{p}(E_{0}-E_{\min})\quad x_{i}\in[0,1]\quad, \tag{1}\]  
where \(E_{0}\) is the stiffness of the material, \(x_{i}\) is the design variable, \(E_{\min}\) is a very small positive number to avoid singularity of the stiffness matrix, and \(p\) is a penalization factor introduced to ensure black-and-white solutions.  
The mathematical formulation of the minimum compliance problem can be expressed as  
\[\begin{cases}min&C=\mathbf{F}^{\mathbf{T}}\mathbf{U}(\mathbf{x})=\mathbf{U}( \mathbf{x})^{\mathbf{T}}\mathbf{K}(\mathbf{x})\mathbf{U}(\mathbf{x})=\sum\limits _{i=1}^{N}E_{i}(x_{i})\mathbf{u}_{i}^{\mathbf{T}}\mathbf{k}_{0}\mathbf{u}_{i}\\ st.&\dfrac{V(\mathbf{x})}{V_{0}}\leq f\quad,\\ &0<x_{\min}\leq x_{i}\leq x_{\max}=1\\ &\mathbf{F}\mathbf{=}\mathbf{K}(\mathbf{x})\mathbf{U}(\mathbf{x})\end{cases} \tag{2}\]  
where \(C\) is compliance, \(\mathbf{F}\) and \(\mathbf{U}\) are the force and global displacement vectors, respectively, \(N\) is the number of elements used to discretize the design domain, \(\mathbf{K}\) is the global stiffness matrix, \(\mathbf{u}_{i}\) is the element displacement vector, \(\mathbf{k}_{0}\) is the element stiffness matrix for an element with unit Young's modulus, \(V_{0}\) and \(V(\mathbf{x})\) are the design domain volume and material volume, respectively, and \(f\) is the prescribed volume fraction. The derivative of the objective function is found as  
\[\dfrac{\partial C}{\partial\mathbf{x}}=\mathbf{F}^{\mathbf{T}}\dfrac{\partial \mathbf{U}}{\partial\mathbf{x}}=\mathbf{U}^{\mathbf{T}}\mathbf{K}\dfrac{ \partial\mathbf{U}}{\partial\mathbf{x}}. \tag{3}\]  
Deriving the derivatives of the equilibrium equation with respect to the design variables and manipulating it mathematically, one can write  
\[\mathbf{K}\dfrac{\partial\mathbf{U}}{\partial\mathbf{x}}=-\dfrac{\partial \mathbf{K}}{\partial\mathbf{x}}\mathbf{U}. \tag{4}\]  
Substituting Equation (4) into Equation (3) and then generalizing the sensitivity of the compliance in relation to the \"\(N\)\" design variables yields  
\[\dfrac{\partial C}{\partial\mathbf{x}}=-[\mathbf{U}^{\mathbf{T}}\dfrac{ \partial\mathbf{K}}{\partial x_{1}}\mathbf{U},\dots,\mathbf{U}^{\mathbf{T}} \dfrac{\partial\mathbf{K}}{\partial x_{N}}\mathbf{U}]^{T}. \tag{5}\]  
In this way, the sensitivity of the objective function can be rewritten as  
\[\dfrac{\partial C}{\partial x_{i}}=-p(E_{0}-E_{min})x_{i}^{p-1}\mathbf{u}_{i} ^{\mathbf{T}}\mathbf{k}_{0}\mathbf{u}_{i}. \tag{6}\]  
The exact Hessian matrix of the objective function can be expressed as  
\[\begin{array}{l}\mathbf{H}=\dfrac{\partial^{2}C}{\partial\mathbf{x}^{2}}=- \mathbf{U}^{\mathbf{T}}\dfrac{\partial^{2}\mathbf{K}}{\partial\mathbf{x}^{2}} \mathbf{U}-2\dfrac{\partial\mathbf{U}^{\mathbf{T}}}{\partial\mathbf{x}} \dfrac{\partial\mathbf{K}}{\partial\mathbf{x}}\mathbf{U}\\ =-diag(\mathbf{U}^{\mathbf{T}}\dfrac{\partial^{2}\mathbf{K}}{\partial x_{i}^{2} }\mathbf{U})+2(\dfrac{\partial\mathbf{K}}{\partial x_{1}}\mathbf{U},\dots, \frac{\partial\mathbf{K}}{\partial x_{N}}\mathbf{U})^{\mathbf{T}}\mathbf{K}^ {-1}(\frac{\partial\mathbf{K}}{\partial x_{1}}\mathbf{U},\dots,\frac{\partial \mathbf{K}}{\partial x_{N}}\mathbf{U})\\ =-\mathbf{A}+\mathbf{B}\end{array} \tag{7}\]  
Here, the matrices \(\mathbf{A}\) and \(\mathbf{B}\) are both positive definite symmetric matrices; \(\mathbf{A}\) is a diagonal matrix whose each term on the diagonal can be expressed as  
\[\mathbf{U}^{\mathbf{T}}\dfrac{\partial^{2}\mathbf{K}}{\partial x_{i}2} \mathbf{U}=p(p-1)(E_{0}-E_{min})x_{i}^{p-2}\mathbf{u}_{i}^{\mathbf{T}}\mathbf{ k}_{0}\mathbf{u}_{i}=\dfrac{-(p-1)C^{\prime}(x_{i})}{x_{i}}>0. \tag{8}\]