# Layout Optimisation of Frame Structures with Multiple Constraints and Geometric Complexity Control
## 3 Mechanical Constraints
### Displacement  
The equilibrium equation for the structure under the external load is  
\[\mathbf{KU}=\mathbf{F} \tag{4}\]  
where \(\mathbf{F}\) is the global force vector, \(\mathbf{K}\) is the global stiffness matrix, and \(\mathbf{U}\) is the global displacement vector.  
The expression for the differential of the global displacement vector can be derived by differentiating Equation (4) with respect to the design variable \(d_{e}\), assuming that the global force vector is design independent. This expression can be written as  
\[\frac{\partial\mathbf{U}}{\partial d_{e}}=-\mathbf{K}^{-1}\frac{\partial\mathbf{K}}{ \partial d_{e}}\mathbf{U} \tag{5}\]  
The displacement constraints ensure that the nodal displacement of the structure under external load remains within specified limits. These constraints can be imposed on displacement in the \(x\) and \(y\) axes in a 2D context. An example constraint for \(x\)-displacement can be expressed as  
\[G_{i}^{\mathbf{U}x}=\frac{|U_{i}^{x}|}{\overline{U}^{x}}\leq 1,\quad i\in[1,n] \tag{6}\]where \(|\cdot|\) represents the absolute value symbol, \(U_{i}^{x}\) denotes the \(x\) displacement of node \(i\), and \(\overline{U}^{x}\) is an upper bound for the \(x\) displacement. \(n\) is the number of nodes in the structure. \(U_{i}^{x}\) can be extracted from the global displacement vector:  
\[U_{i}^{x}=\mathbf{I}_{U_{i}^{x}}\mathbf{U} \tag{7}\]  
where \(\mathbf{I}_{U_{i}^{x}}\) is a zero vector with an exceptional entry of \(1\) at the index corresponding to the \(x\) displacement of node \(i\).  
The number of \(x\)-displacement constraints presented in Equation (6) equals the number of nodes in the structure. To resolve the numerical difficulties caused by the large number of displacement constraints and the associated sensitivity analysis, the node-wise displacement constraints are aggregated into a global measure. Following the idea of [PERSON] and [PERSON] [23] and [PERSON] et al. [26], where element-wise stress constraints are aggregated using the \(p\)-norm function, the global measure of \(x\)-displacement constraints can be expressed as  
\[P_{U^{x}}=\left[\sum_{i=1}^{n}\left(G_{i}^{U^{x}}\right)^{p}\right]^{1/p}\leq 1 \tag{8}\]  
where \(p\) is the aggregation factor controlling the accuracy of the approximation compared to the actual maximum of \(G_{i}^{U^{x}}\), and \(p\) is usually chosen larger than \(1\). A large value of \(p\) can improve the accuracy of the approximation but also increases non-linearity and may cause numerical instability. Therefore, \(p=4\) is adopted in this work. To allow a more accurate constraint value to be included in optimisation problems, the global measure of \(x\)-displacement constraints can be adjusted by making use of the information from the previous optimisation iteration [26]. The normalised global measure of \(x\)-displacement constraints can be expressed as  
\[P_{U^{x}}^{r}=c\;P_{U^{x}}\leq 1 \tag{9}\]  
where \(c\) is a normalisation factor calculated at optimisation iteration number \(I\) as  
\[c^{I}=\gamma\frac{\max\{|U^{x}|\}}{P_{U^{x}}}+\left(1-\gamma\right)c^{I-1} \tag{10}\]  
where \(c^{I}\) and \(c^{I-1}\)  
The \(y\)-displacement constraints can be calculated and formulated in the same manner as the \(x\)-displacement constraints; however, for the sake of brevity, they are not presented here.