Advertisement

Truss layout optimization within a continuum

Research Paper

Abstract

The present work extends truss layout optimization by considering the case when it is embedded in a continuum. Structural models often combine discrete and continuum members and current requirements for efficiency and extreme structures push research in the field of optimization. Examples of varied complexity and dimensional space are analyzed and compared, highlighting the advantages of the proposed method. The goal of this work is to provide a simple formulation for the discrete component of the structure, more specifically the truss, to be optimized in presence of a continuum.

Keywords

Truss layout optimization Topology optimization Michell truss Truss geometry optimization Discrete-continuum optimization Embedded formulation 

1 Introduction

Structural optimization research is rapidly moving forward with a constant push for more efficient, lighter, cheaper and extreme structures (Hemp 1973). Structural optimization is commonly carried out by optimizing the material distribution (Bendsoe and Sigmund 2004), optimizing a truss (Felix and Vanderplaats 1987; Hansen and Vanderplaats 1988; Lipson and Gwin 1977; Ohsaki 2010), and optimizing the continuum shape (Haslinger and Mäkinen 2003) to name a few. Optimal truss layout has greatly evolved with the ground structure method (Dorn et al. 1964; Sokół 2010) and proves to be a reliable and stable method for truss structures. Optimizing material distribution with an overlaying discrete element structure connected has been previously studied (Allahdadian et al. 2012; Liang et al. 2000; Liang 2007; Mijar et al. 1998), and recent refinements make it suitable for real applications (Stromberg et al. 2012). Previously, a formulation for embedding reinforcement (discrete elements) in the context of reinforced concrete was developed (Elwi and Hrudey 1989), and later extended to three-dimensions (Barzegar and Maddipudi 1994). Optimization of reinforced concrete using this embedded formulation was also explored (Kato and Ramm 2010). The ground-structure method for optimization combined with discrete elements embedded in a continuum has also proven to be feasible (Amir and Sigmund 2012). The present work attempts to solve the problem where discrete structures, linked to a continuum (or embedded), are optimized with the discrete nodes not directly matching over continuum nodes using a convolution-based coupling to embed the discrete onto the continuum. Some examples of structures typically modeled in a discrete-continuum fashion are: reinforced concrete, cable supported bridges, column supporting a slab and beam-wall connections to name a few.

This works aims to develop a simple technique that allows for truss layout optimization (nodal locations and cross-sectional area) to be optimized, in presence of a continuum, with linkage between both. If the continuum is modeled using traditional \(C^{0}\) elements, the first derivatives are discontinuous, thus making the embedded formulation difficult to optimize using traditional gradient based optimizers. The discontinuity problem could potentially be solved using \(C^{1}\) elements, however, the formulations for these are complex, especially for higher dimensions. An alternative procedure is presented here which is easy to implement and shows agreement with analytical results or demonstrates stability of the optimized solution, regardless of numerical variations in the model.

This formulation is based on small deformation theory, and because nodes are treated as a cloud, any type or order of finite elements can be used (i.e. the element connectivity is not used). The examples in the present work deal with compliance optimization. Nevertheless, the technique can be applied to any objective function based on stiffness for which an expression for the gradient can be obtained.

The article is organized as follows: The formulation is derived and described in detail in Section 2. In Section 3, the method is verified and the stability tested against a problem for which the solution is known. Several demonstrative examples are optimized in Section 4. Finally, conclusions and remarks of the method are discussed in Section 5. The nomenclature and symbols used are listed in the Appendix.

2 Formulation

Truss layout optimization has been explored previously with good results (Felix and Vanderplaats 1987; Hansen and Vanderplaats 1988; Lipson and Gwin 1977; Ohsaki 2010). The formulation for truss layout optimization presented here is analogous to the one presented in (Hansen and Vanderplaats 1988), but better suited for any-dimensional (1D, 2D, 3D) problems and extended by combining it with a continuum.

The stiffness matrix for a truss element in local coordinates is
$$ \mathbf{K}^{\star}= \frac{AE}{L} \left[ \begin{array}{rr} 1 & -1 \\ -1 & 1 \end{array} \right]$$
(1)
with A, E and L being the element’s cross-sectional area, Young modulus, and length respectively. The stiffness matrix in global coordinates \(\mathbf {K}_{e}\) for truss element e is defined in terms of the stiffness matrix in the element’s local coordinates \(\mathbf {K}^{\star }_{e}\) and the transformation matrix \(\mathbf {T}_{e}\)
$$\mathbf{K}_{e} = \mathbf{T}^T_{e} \mathbf{K}^{\star}_{e} \mathbf{T}_{e}$$
(2)
The directional cosines vector \(\mathbf {d}\) is defined as
$$\mathbf{d} = \frac{1}{L}\left[ x_{2}-x_{1}, y_{2}-y_{1}, z_{2}-z_{1} \right] $$
(3)
and thus the transformation matrix is
$$\mathbf{T}=\left[ \begin{array}{rr} \mathbf{d} & \mathbf{0} \\ \mathbf{0} & \mathbf{d} \\ \end{array} \right] $$
(4)
The derivative of the global stiffness matrix with respect to the coordinate n of node j of the truss member is
$$\frac{\partial \mathbf{K}_{e}}{\partial n_{j}} = \frac{\partial \mathbf{T}^T_{e}}{\partial n_{j}}\mathbf{K}^{\star}_{e} \mathbf{T}_{e} + \mathbf{T}^T_{e} \frac{\partial \mathbf{K}^{\star}_{e}}{\partial L}\frac{\partial L}{\partial n_{j}}\mathbf{T}_{e} + \mathbf{T}^T_{e} \mathbf{K}^{\star}_{e} \frac{\partial \mathbf{T}_{e}}{\partial n_{j}}$$
(5)
with L representing the truss element’s length, \(n=\left \{x,y,z\right \}\) and \(j=\left \{1,2\right \}\). The derivatives of the element’s length L, with respect to the coordinate n, are
$$\begin{array}{rll} \frac{\partial L}{\partial n_{1}} &=& -\mathbf{d}_{n} \\ \frac{\partial L}{\partial n_{2}} &=& \phantom{-}\mathbf{d}_{n} \end{array} $$
(6)
and the derivative of the stiffness matrix with respect to the element length is
$$\frac{\partial \mathbf{K}^{\star}}{\partial L} = -\frac{AE}{L^{2}} \left[ \begin{array}{rr} 1 & -1 \\ -1 & 1 \end{array} \right]$$
(7)
The Jacobian matrix of the directional cosine vector with respect to the coordinates of the first truss element node (\(j=1\)) is
$$\mathbf{J}_{\left(1\right)} \left(\mathbf{d}\right) = \frac{1}{L} \left(\mathbf{d}^T \mathbf{d} - \mathbf{I}\right) $$
(8)
and \(\mathbf {J}_{\left (2\right )} \left (\mathbf {d}\right ) = -\mathbf {J}_{\left (1\right )} \left (\mathbf {d}\right )\). Inspecting a couple of terms, we obtain, for example:
$$\begin{array}{rll} \left[\mathbf{J}_{\left(1\right)}\left(\mathbf{d}\right)\right]_{21} &=& \frac{\partial \mathbf{d}_{2}}{\partial x_{1}} = \phantom{-}\frac{\mathbf{d}_{1}\mathbf{d}_{2}}{L} \\ \left[\mathbf{J}_{\left(2\right)}\left(\mathbf{d}\right)\right]_{22} &=& \frac{\partial \mathbf{d}_{2}}{\partial y_{2}} = -\frac{\mathbf{d}_{2} \mathbf{d}_{2} -1}{L} \end{array} $$
(9)
and with this the derivatives of the transformation matrix \(\mathbf {T}\) are completely defined.

2.1 Mapping discrete to continuum representation

Consider the stiffness matrix of a continuum \(\mathbf {K}_{c}\) obtained by means of a finite element method (FEM), and the stiffness matrix from a single truss element \(\mathbf {K}_{e}\). The challenge is to add the contribution of \(\mathbf {K}_{e}\) onto \(\mathbf {K}_{c}\) in a coherent fashion (energy conservation), and with a smooth derivative field. An approach based on energy conservation and FEM shape functions meets the first requirement, but because the FEM shape functions are discontinuous across elements, it does not have a smooth derivative field.

The stiffness matrix of a single truss node \(\mathbf {K}_{e}\) will be mapped to another matrix \(\mathbf {K}^+_{e}\) in terms of the continuum nodes, so that its contribution can be added to \(\mathbf {K}_{c}\). The mapping approach is based on energy conservation, i.e. \(\mathbf {u}^T \mathbf {K}_{e} \mathbf {u} = \mathbf {u}^T_{c} \mathbf {K}^+_{e} \mathbf {u}_{c}\), interpolating the degrees of freedom (DOF) of the truss \(\mathbf {u}\) in terms of the DOFs in the continuum \(\mathbf {u}_{c}\) using the values of some shape function \(\mathbf {N}\). In other words \(\mathbf {u}=\mathbf {Nu}_{c}\), and thus we have:
$$\begin{array}{rll} \mathbf{u}^T \mathbf{K}_{e} \mathbf{u} &=& \mathbf{u}^T_{c} \mathbf{K}^+_{e} \mathbf{u}_{c} \\ \left( \mathbf{N} \mathbf{u}_{c} \right)^T \mathbf{K}_{e} \left( \mathbf{N} \mathbf{u}_{c} \right) &=& \mathbf{u}^T_{c} \mathbf{K}^+_{e} \mathbf{u}_{c} \\ \mathbf{u}^T_{c} \left( \mathbf{N}^T \mathbf{K}_{e} \mathbf{N} \right) \mathbf{u}_{c} &=& \mathbf{u}^T_{c} \mathbf{K}^+_{e} \mathbf{u}_{c} \\ \mathbf{N}^T \mathbf{K}_{e} \mathbf{N} &=& \mathbf{K}^+_{e} \end{array}$$
(10)
The mapping described in (10) is done for every truss node being mapped to the continuum. If traditional FEM shape functions are used in \(\mathbf {N}\), the derivative of the mapped stiffness with respect to the truss nodal position becomes problematic due to discontinuities in the shape function derivatives across elements. In detail:
$$\frac{\partial \mathbf{K}^+_{e}}{\partial n_{j}} = \frac{\partial \mathbf{N}^T}{\partial n_{j}}\mathbf{K}_{e} \mathbf{N} + \mathbf{N}^T \frac{\partial \mathbf{K}_{e}}{\partial n_{j}}\mathbf{N} + \mathbf{N}^T \textbf{K}_{e} \frac{\partial \mathbf{N}}{\partial n_{j}},$$
(11)
while the second term in (11) is smooth throughout the whole continuum, the first and third terms are not. In practical applications, the discontinuities increase with the number of elements, and close to the optimum there will be a high number of local minima (proportional to the mesh detail). These problems are enough to prevent the optimizers from converging to a good solution.

The choice of the shape functions \(\mathbf {N}\) used in the mapping to \(\mathbf {K}^+_{e}\) is of critical importance to obtain an embedded formulation with a smooth gradient field. Besides the inter-element discontinuity of the derivative field in traditional FEM shape functions, the truss node position needs to be mapped into the parent element coordinates if an isoparametric formulation is used, as in previous embedded formulations (Elwi and Hrudey 1989; Barzegar and Maddipudi 1994). The alternative proposed in the present work is to use shape functions based on a convolution operator. These can be arbitrary smooth up to any derivative depending on the convolution function (although we are only interested in the first derivative), and do not need to be mapped to parent coordinates since they operate in the actual node coordinates.

2.2 Convolution operator

Sacrificing some coherence in the coupling (different shape functions used to analyze the continuum and for the embedding), an approach based on a convolution operator is proposed. This approach consists of representing the truss DOFs as a convolution of the nearby continuum nodes. That is, we use a shape function \(\tilde {\mathbf {N}} \neq \mathbf {N}\), with \(\tilde {\mathbf {N}}\) built from a convolution operator \(h\left (\cdot \right )\), that ensures smoothness of the gradient field by complying with
$$\begin{array}{rll} h\left(0\right) &=&1 \\ h\left(r \geq R\right) &=&0 \\ \left. \frac{dh}{dr}\right|_{r=R} &=&0 \end{array}$$
(12)
with R defined as the convolution operator radius, and r the distance between the truss member and continuum node. In addition, the shape functions \(\tilde {\mathbf {N}}\) must preserve partition of unity
$$ \sum\limits_{k} \tilde{\mathbf{N}}_{k} = 1$$
(13)
Two possible functions for \(h\left (\cdot \right )\) are presented in (14), but any other function that complies with (12) can be used
$$\begin{array}{ll} h_{1}\left(r\right) = \left\{ \begin{array}{l} 1-\sin\left(\frac{r\pi}{2R}\right) \\ 0 \end{array} \right. & \begin{array}{l} r\leq R \\[2pt] r>R \end{array} \\ h_{2}\left(r\right) = \left\{ \begin{array}{l} \left(\frac{r}{R}\right)^{2}-2\left(\frac{r}{R}\right)+1 \\ 0 \end{array} \right. & \begin{array}{l} r\leq R \\[2pt] r>R \end{array}\end{array}$$
(14)
The functions presented in (14) are plotted in Fig. 1. The shape function for a truss node, associated with the continuum node a is
$$\tilde{N}_{a}= \frac{h\left(r_{a}\right)}{\sum_{k} h\left(r_{k}\right)} $$
(15)
The shape function derivative for a specific truss node corresponding to a continuum node a with respect to coordinate n is
$$\frac{\partial \tilde{N}_{a}}{\partial n} = \frac{\frac{\partial h}{\partial n}\left(r_{a}\right) \sum_{k} h\left(r_{k}\right) - h\left(r_{a}\right)\sum_{k} \frac{\partial h}{\partial n}\left(r_{k}\right)}{\left[\sum_{k} h\left(r_{k}\right)\right]^{2}} $$
(16)
with the derivatives of the convolution functions as follows:
$$\begin{array}{ll} \dfrac{\partial h_{1}}{\partial n}\left(r\right) = \left\{ \begin{array}{l} \dfrac{\pi}{2R}\cos\left(\frac{r\pi}{2R}\right)\tilde{d}_{n} \\ 0 \end{array} \right. & \begin{array}{l} r\leq R \\ r>R \end{array} \\ \dfrac{\partial h_{2}}{\partial n}\left(r\right) = \left\{ \begin{array}{l} -2\frac{r-R}{R^{2}}\tilde{d}_{n} \\ 0 \end{array} \right. & \begin{array}{l} r\leq R \\[2pt] r>R \end{array} \end{array}$$
(17)
where \(\tilde {\mathbf {d}}\) in this case is the directional cosine from the truss node to the continuum node (associated with the distance r). The sum in the denominator is through all the nodes in the continuum, but because the convolution function is zero for \(r>R\), the sum only encompasses a few of the total nodes. The continuum nodes that fall within the convolution operator are found using a tree data structure (quadtree and octtree in two and three dimensions respectively), making the search for different truss nodes linking to continuum efficient.
Fig. 1

Plots of the convolution functions presented in (14)

The convolution shape functions lack desirable properties like the Kronecker delta property (\(\delta _{ii}=1\) and \(\delta _{ij}=0\) for nodes \(i\neq j\)), because these shape functions are not associated to a specific node as with FEM shape functions, but to a cloud of nodes instead. However, it does comply with partition of unity (13) and has no negative values. These convolution shape functions possess continuous first derivative field, a desirable property and required for the present work.

The mapping of \(\mathbf {K}_{e}\) onto the continuum follows the energy conservation mapping described in (10), but using \(\tilde {\mathbf {N}}\) instead of the FEM shape functions. This is also analogous for (11) resulting in the following expressions:
$$\mathbf{K}^+_{e} = \tilde{\mathbf{N}}^T \mathbf{K}_{e} \tilde{\mathbf{N}}$$
(18)
$$\frac{\partial \mathbf{K}^+_{e}}{\partial n_{j}} = \frac{\partial \tilde{\mathbf{N}}^T}{\partial n_{j}}\mathbf{K}_{e} \tilde{\mathbf{N}} + \tilde{\mathbf{N}}^T \frac{\partial \mathbf{K}_{e}}{\partial n_{j}}\tilde{\mathbf{N}} + \tilde{\mathbf{N}}^T \textbf{K}_{e} \frac{\partial \tilde{\mathbf{N}}}{\partial n_{j}}$$
(19)
Note that the dimensionality of \(\tilde {\mathbf {N}}\) is variable and does not necessarily match with \(\mathbf {N}\).

2.3 Optimization issues

This coupling to the continuum works by smearing the displacement field around the truss member node. Provided that the convolution radius is not too big, the error introduced by this method is controllable and more importantly, it provides a smooth derivative field throughout the continuum. The smearing error will have a higher impact when closer to a rapid variation of the field (i.e. sharp edges, single node loads and boundary conditions).

The algorithm becomes unstable for a large number of variables if the variables are allowed to freely vary at each iteration. A move limit m enforces small variations from one iteration to the next. This results in a more cautious progression towards the optimum, and with the step size controlled by the move limit m, as follows:
$$\left|a_{n}^{\mathrm{new}}-a_{n}^{\mathrm{old}}\right|\leq m \quad \forall \ n=x,y,z \text{ and } a=1\dots N_{\mathrm{nodes}}$$
(20)
The move limit or variable bounds are common features in optimizers, making the implementation of (20) simple.
The optimizer could decide to overlap two nodes together, typically resulting in a super-member (two members overlapping). Nevertheless, this might also result in a member of length \(L=0\), causing problems in (1), (3), (7) and (8). To prevent this situation, a minimum length constraint \(L_{\min }>0\) for every member is included:
$$L_{\min}-L_{e}\leq0$$
(21)
Maximum truss volume \(V_{\max }\) can be also specified as
$$\sum\limits_{e} L_{e}A_{e}-V_{\max}\leq0$$
(22)
with the derivatives for the constraints in (21) and (22) completely defined using (7) and (6). If the element cross-sectional areas are also design variables, the derivative is trivial since
$$\frac{\partial \mathbf{K}^+_{e}}{\partial A_{e}}= \frac{1}{A_{e}} \mathbf{K}^+_{e}$$
(23)
provided that \(A_{e}>0\). Thus, setting a lower limit on the cross-sectional area to prevent (23) from becoming indeterminate is recommended. In addition a move limit on the cross-sectional areas stabilizes the problem (analogous to (20)). These requirements translate into the following equations
$$\begin{array}{rll} A_{e}&>&A_{\min} \\ \left|A_{e}^{\mathrm{new}}-A_{e}^{\mathrm{old}}\right|&\leq& m_{a} \quad \forall e=1\dots N_{\mathrm{elems}} \end{array} $$
(24)

3 Verification

This problem seeks to find the optimal anchor position of a cable within a bar modeled as a continuum subjected to body force, as exemplified by Figs. 2, 3, 4, 5, 6, 7, 8 and 9. The objective function for minimization is the compliance of the total structure (continuum and discrete). In accordance with Fig. 2: \(\alpha L\) is defined as the anchor point distance and \(\beta L\) is the anchor point measured within the continuum bar. The ratio between the bar (continuum) and cable stiffness is defined as \(\gamma =EA/E_{c}A_{c}\), where \(E_{c}\) and \(A_{c}\) are the bar’s Young modulus and cross-sectional area of the continuum, and E and A are the same but for the anchor cable. The design variable is the anchoring distance \(\beta L\). This problem is of particular interest because an analytical solution can be obtained. The compliance of a single bar problem of length L, subjected to body force b and an end force P as in Fig. 3 is:
$$C=\frac{1}{EA}\left(\frac{b^{2}L^{3}}{3}+PbL^{2}+P^{2}L\right)$$
(25)
The displacement at the anchor point \(u_{\mathrm {anchor}}\) can be obtained by structural analysis
$$u_{\mathrm{anchor}}=\frac{bL^{2}}{2AE}\frac{\beta\left(\alpha+\beta\right)\left(2-\beta\right)}{\alpha+\beta+\gamma\beta}$$
(26)
The problem can be partitioned at the anchor point, and the expression in (25) can be used for both segments of the continuum and the cable. The end force P taken by the bar segment of length \(\beta L\) is
$$P=\frac{bL}{2}\frac{2\alpha+2\beta-2\alpha\beta-2\beta^{2}-\gamma\beta^{2}}{\alpha+\beta+\gamma\beta} $$
(27)
Fig. 2

Bar with a distributed force and a cable anchor

Fig. 3

Bar with distributed and end force

Fig. 4

a Compliance with convolution coupling for different mesh refinements. b Detail close to the optimum

Fig. 5

a Gradient with convolution coupling for different mesh refinements. b Detail close to the optimum

Fig. 6

a Compliance with convolution coupling for different convolution radiuses. b Detail close to the optimum

Fig. 7

a Gradient with convolution coupling for different convolution radius. b Detail close to the optimum

Fig. 8

a Energy compliant and convolution coupling compliance compared. b Detail close to the optimum

Fig. 9

Optimization evolution for 50 iterations with different convolution radiuses. a Anchor point \(\beta L\). b Compliance

Finally, the compliance for the complete problem is
$$C=\frac{b^{2}L^{3}}{12EA} \frac{4\alpha+4\beta+4\gamma\beta-12\gamma\beta^{2}+12\gamma\beta^{3}-3\gamma\beta^{4}}{\alpha+\beta+\gamma\beta}$$
(28)
The optimal anchor point (minimizes compliance) is located at \(\beta _{c} L\), with
$$\beta_{c}=\frac{1+\gamma-2\alpha+\sqrt{1+8\alpha+2\gamma+4\alpha^{2}+8\alpha\gamma+\gamma^{2}}}{3+3\gamma},$$
(29)
for \(\beta _{c} \leq 1\), and at \(\beta _{c} = 1\) otherwise.
Given the following problem data: \(L=7\), \(\alpha =2/7\), \(E_{c}A_{c}=210\), \(EA=150\), \(\gamma =5/7\) and \(b=2\), the embedding technique is performed for three different discretizations keeping the convolution radius fixed at \(R=0.2L\), and then compared to the analytical solution in Fig. 4. The convolution function used is \(h_{2}\left (\cdot \right )\) from (14). The gradient is also compared in Fig. 5. The optimal location is at \(\beta _{c} =\left (2+\sqrt {22}\right )/9\) and \(C\left (\beta _{c}\right )=1.5252\). To ensure the algorithm is robust, the finite element size \(\Delta x\) is distributed randomly between \(0.7L/N_E\leq \Delta x \leq 1.3L/N_E\), with \(N_E\) representing the number of elements of the partition. The minima for all meshes are presented in Table 1. The same analysis is repeated keeping the mesh refinement fixed at \(N_E=20\) and changing the size of the convolution radius. The results are compared in Fig. 6. The gradient is also compared in Fig. 7 and the minima for each case are presented in Table 2. Using a mesh with elements evenly spaced, the analytical gradient is compared with the energy compliant coupling using FEM shape functions, and the convolution coupling from (16) as shown in Fig. 8. The energy coupling using FEM shape functions suffers discontinuities at the element boundary and \(\partial C/\partial x=0\) at several points, thus is prone to converge at the many local minima, far from the global optimum. Convolution coupling is continuous, and inspection of the gradient indicate that it is likely to converge close to the actual (analytical) optimum.
Table 1

Optimal anchor location with varied mesh refinement

 

\(\beta _{c}\)

\(C\left (\beta _{c} L\right )\)

Exact

0.7434

1.5252

\(N_E=10\)

0.7492

1.5144

\(N_E=20\)

0.7346

1.5169

\(N_E=40\)

0.7431

1.5203

Table 2

Optimal anchor location with varied convolution radius

 

\(\beta _{c}\)

\(C\left (\beta _{c} L\right )\)

Exact

0.7434

1.5252

\(R=0.1L\)

0.7333

1.5187

\(R=0.2L\)

0.7396

1.5177

\(R=0.4L\)

0.7393

1.5258

The optimization problem for 50 iterations, with a starting point \(\beta _{0}=0.5\) is performed for \(N_E=20\) (element mesh), with randomly spaced elements of size \(0.7L/N_E\leq \Delta x \leq 1.3L/N_E\). The only constraint or technique used is the move limit as detailed in (20) with \(m=0.1\). The optimizer is the Method of Moving Asymptotes (MMA) (Svanberg 1987). The convergence towards the optimal point \(\beta _{c} L\) is shown in Fig. 9a and the compliance plot in Fig. 9b. There is an oscillatory behavior between iterations 17 and 30 due to the adventurous behavior of the optimizer close to the optimum. The oscillations can be eliminated by taking a smaller move limit, or decreasing it with each iteration.

4 Examples

The examples explored here aim to verify the method, and portray some applications that can be tackled with the method. The optimizer is the Method of Moving Asymptotes (MMA) (Svanberg 1987), and the convolution function used is \(h_{2}\left (\cdot \right )\) from (14). Similarly to the previous 1D example, 2D and 3D problems are optimized for compliance (\(J=\mathbf {u}^T \mathbf {K}_{e} \mathbf {u}\)) of the coupled structure. For the specific case of two-dimensional problems, unit thickness and plane stress is assumed.

4.1 Beam with cable supports

This problem looks for the optimal anchor position for two cable supports within a beam, as exemplified by Figs. 10 to Fig. 14. Taking advantage of the symmetry, the problem in Fig. 10a is reduced to finding the optimal position of a single cable (constant area) on a half domain as in Fig. 10b. The half domain has size \(L_{x} \times L_{y}\) and is loaded by self-weight b, the domain is regularly partitioned in \(N_{x} \times N_{y}\) four node quadrilateral elements (Q4). The design variables of the problem are the anchor location coordinates \(x_{1}\) and \(x_{2}\), with the only constraint or technique being the move limit as in (20) with \(m=0.05\).
Fig. 10

Beam with cable supports subjected to self-weight. a Full problem. b Half-domain problem using symmetry

Fig. 11

Beam anchor points fields for a \(20\times 8\) Q4 mesh. a Compliance. b Derivative with respect to x. c Derivative with respect to y. d Zero-derivative levels

Fig. 12

Beam compliance evolution for 30 iterations with varied mesh size

Fig. 13

Optimization for beam with cable anchor using Q9 elements. a Compliance with mesh size. b Compliance with convolution radius

Fig. 14

Cable anchor optimization with beam meshed with \(20\times 8\) Q9 elements showing anchor path throughout iterations

The problem data is \(L_{x}=2\) (\(2L_{x}=4\)), \(L_{y}=0.8\), \(b=-2\), \(E_{c}=100\), \(\nu =0.3\), \(EA=300\) and \(R=0.3\). The objective function (compliance) for a \(N_{x}=20\) and \(N_{y}=8\) mesh is plotted in Fig. 11a, and the gradient fields in Fig. 11b and c. The gradient fields are smooth enough that a gradient-based optimizer should converge to the optimum (it could be a local optimum). Analysis of Fig. 11d for \(\nabla {}C=\mathbf {0}\) gives \(x_{1}=0.8165\) and \(x_{2}=0.3699\) as the global optimum, but also hints of a few potholes that could trap the optimizer. The global optimum location does change with the mesh refinement, and together with other numerical optimization artifacts cause the solution to the problem to experience small changes if the problem parameters change.

The problem is optimized for 30 iterations with a starting point \(\left [x_{1},x_{2}\right ]=\left [L_{x},L_{y}/2\right ]\) measured from the bottom left corner of the half-domain. Mesh convergence results are available in Table 3 and Fig. 12.
Table 3

Optimal anchor location and compliance with varied mesh size

 

\(x_{1}\)

\(x_{2}\)

\(C\left (x_{1},x_{2}\right )\)

\(10\times 04\)

0.9999

0.5100

0.1956

\(20\times 08\)

0.8541

0.4016

0.1910

\(40\times 16\)

0.8094

0.3712

0.1971

\(80\times 32\)

0.8635

0.3711

0.2025

The problem is re-meshed with 9 node quadrilateral elements (Q9) and the results in Tables 4 and 5 reinforce the fact that the method is relatively stable: the global optimum changes with mesh refinement, and together the tendency of the optimizer to oscillate near the optimum, can be accounted for the scattering of the solutions. Figure 13a and b plot the decrease of compliance with the various cases, and in all of them a smooth decrease is observed.
Table 4

Optimal anchor location and compliance for a Q9 mesh with varied mesh size

 

\(x_{1}\)

\(x_{2}\)

\(C\left (x_{1},x_{2}\right )\)

\(10\times 04\)

0.8497

0.4030

0.1952

\(20\times 08\)

0.8688

0.3736

0.2006

\(40\times 16\)

0.9004

0.3833

0.2056

\(80\times 32\)

0.9272

0.3721

0.2101

Table 5

Optimal anchor location and compliance for a Q9 mesh with varied convolution radius

 

\(x_{1}\)

\(x_{2}\)

\(C\left (x_{1},x_{2}\right )\)

\(R=0.2L\)

0.8763

0.4025

0.2154

\(R=0.3L\)

0.8688

0.3736

0.2006

\(R=0.4L\)

0.8747

0.3752

0.1900

\(R=0.5L\)

0.8769

0.3748

0.1816

The anchor path throughout the iterations for this problem is shown in Fig. 14. This path exhibits a steady and consistent approach towards the optimal solution, where the cable efficiently supports the continuum.

4.2 Tapered building with truss superstructure

This problem explores extending the method to a larger number of elements (and design variables), all within the continuum and the use of an unstructured mesh within the continuum, and relates to Fig. 15 to Fig. 16. A sketch of the continuum domain, with a truss superstructure is shown in Fig. 15a, where the truss superstructure links to the continuum at the node locations. The problem is optimized with 4 spans, and a starting position as shown in Fig. 15b, considering nodes numbered as in the Figure.
Fig. 15

Building with truss superstructure. a Domain and truss specifications. b Starting configuration with node and element numbering with 4 spans, \(L_{x1}=1.0\), \(L_{x2}=0.6\) and \(L_{y}=2\). c Final configuration with symmetry along the mid vertical axis imposed. d Final configuration with symmetry not imposed

Fig. 16

Optimization for building with truss superstructure (design variables are nodal coordinates). a Compliance. b Volume

The continuum is meshed with \(N_E=1520\) Q8 elements, with dimensions and material properties: \(L_{x1}=1.0\), \(L_{x2}=0.6\), \(L_{y}=2\), \(E_{c}=10\), \(\nu =0.3\). The truss consists of 4 spans with equal properties for all bars \(EA=300\) and convolution radius \(R=0.075\). The structure is loaded by self-weight of the continuum \(b=-10\). The design variables are the nodal positions of the truss (cross-sectional areas are not being optimized). The problem is optimized for 50 iterations with a move limit as in (20) with \(m=0.015\), and a truss volume constraint as in (22) with \(V_{\max }=32\) (note that initially the truss has a volume \(V_{0}=34.76\)).

The optimization is performed for the cases where symmetry is and is not imposed. The final configurations for both cases can be seen in Fig. 15c and d, and the final nodal locations are in Table 6. The unsymmetrical mesh in the continuum causes the truss to loose symmetry, and it is unable to recover.
Table 6

Final nodal locations for the symmetry constrained and free problems with node numbering in accordance with Fig. 15b

 

Symm

Free

 

Symm

Free

\(x_{1}\)

\(-0.3958\)

\(-0.3959\)

\(y_{1}\)

0.0000

0.0000

\(x_{2}\)

\(-0.3522\)

\(-0.3433\)

\(y_{2}\)

0.5376

0.5406

\(x_{3}\)

\(-0.2770\)

\(-0.2733\)

\(y_{3}\)

0.9426

0.9546

\(x_{4}\)

\(-0.2379\)

\(-0.2491\)

\(y_{4}\)

1.3449

1.4098

\(x_{5}\)

\(-0.2188\)

\(-0.2385\)

\(y_{5}\)

1.7725

1.8019

\(x_{6}\)

\(\phantom {-}0.3958\)

\(\phantom {-}0.4167\)

\(y_{6}\)

0.0000

0.0000

\(x_{7}\)

\(\phantom {-}0.3522\)

\(\phantom {-}0.3547\)

\(y_{7}\)

0.5376

0.5027

\(x_{8}\)

\(\phantom {-}0.2770\)

\(\phantom {-}0.3063\)

\(y_{8}\)

0.9426

0.9485

\(x_{9}\)

\(\phantom {-}0.2379\)

\(\phantom {-}0.2275\)

\(y_{9}\)

1.3449

1.3711

\(x_{10}\)

\(\phantom {-}0.2188\)

\(\phantom {-}0.2086\)

\(y_{10}\)

1.7725

1.8003

\(x_{11}\)

\(\phantom {-}0.0000\)

\(-0.0285\)

\(y_{11}\)

0.5544

0.5494

\(x_{12}\)

\(\phantom {-}0.0000\)

\(\phantom {-}0.0535\)

\(y_{12}\)

0.9420

0.9122

\(x_{13}\)

\(\phantom {-}0.0000\)

\(-0.0201\)

\(y_{13}\)

1.3124

1.3115

\(x_{14}\)

\(\phantom {-}0.0000\)

\(-0.0318\)

\(y_{14}\)

1.7901

1.7828

The compliance plot in Fig. 16a has an initial increase while the optimizer is fulfilling the truss volume constraint, as shown in Fig. 16b. Once the constraint is satisfied, the optimizer is free to search for the optimal truss geometry (using the node locations only). The final compliance for the symmetry imposed and free cases are \(C_{\mathrm {symm}}=1.1215\) and \(C_{\mathrm {free}}=1.1296\). The optimized compliance for the symmetric case is surprisingly lower. However, if iterations continue, the less-constrained unsymmetric case will have a lower final value. The unsymmetric case has more than twice the number of design variables compared to the symmetric case, resulting in a (slightly) lower rate of convergence.

4.3 Full truss layout optimization for tapered building

This is an extension of the previous problem, adding the truss member’s cross-sectional areas as design variables for the optimization of the symmetric case. The simultaneous optimization of both sizing and geometry of the truss translated into a full layout optimization of the building’s truss superstructure. Previously, the final volume of the truss does not match \(V_{\max }\) because the design variables are the node locations only (Fig. 16b). The gradient of the cross-sectional areas follow (23). The constraints in (24) are also used with \(A_{\min }=0.015\) and \(m_{a}=0.015\).

The optimized element areas following the element numbering scheme from Fig. 15b are detailed in Table 7 and the node locations exhibit minimal variation with respect to the previous symmetric case (Fig. 17a). As expected, the optimizer allocated the unused volume in the truss to further improve the solution resulting in the volume constraint being active (Fig. 17b). The final compliance after 50 iterations is equal to \(C_{\mathrm {full}}=1.0977\), that is lower than in the previous cases.
Table 7

Final cross-sectional areas for truss members in accordance with Fig. 15b

\(A_{1}\)

3.6269

\(A_{9}\)

3.1658

\(A_{17}\)

3.0460

\(A_{2}\)

3.6165

\(A_{10}\)

3.1296

\(A_{18}\)

2.7400

\(A_{3}\)

3.5832

\(A_{11}\)

3.0016

\(A_{19}\)

2.7346

\(A_{4}\)

3.3270

\(A_{12}\)

2.8983

\(A_{20}\)

2.6999

\(A_{5}\)

3.6269

\(A_{13}\)

3.1658

\(A_{21}\)

3.0460

\(A_{6}\)

3.6165

\(A_{14}\)

3.1296

\(A_{22}\)

2.7400

\(A_{7}\)

3.5832

\(A_{15}\)

3.0016

\(A_{23}\)

2.7346

\(A_{8}\)

3.3270

\(A_{16}\)

2.8983

\(A_{24}\)

2.6999

Fig. 17

Full layout optimization of the building’s truss superstructure (design variables are nodal coordinates and cross-sectional areas). a Final geometry. b Volume throughout the iterations

4.4 Three-dimensional beam with truss reinforcements

This problem explores the optimal position of a reinforcing truss within a three-dimensional beam and relates to Figs. 18 and 19. Because the truss only links with the continuum at the nodes, this can be thought as if the bars have no friction with the continuum along its length, as if they could slide inside a casing embedded in the continuum. The domain definition and initial bar location is given in Fig. 18a. The only design variables are the node locations that initially are positioned as specified in Table 8, in accordance with the node numbering from Fig. 18a. The domain is meshed with Tet10 elements dividing the domain in \(N_{x}\times N_{y}\times N_{z}=36\times 11\times 8\) blocks, with each block consisting of 6 Tet10 elements for a total of \(N_E=19008\) elements (Fig. 18b is a deformed plot of the mesh). In addition, \(L_{x}=10\), \(L_{y}=3\), \(L_{z}=2\), \(E_{c}=100\), \(\nu =1/3\), the bars all have equal properties \(EA=500\). The only constraint or restriction included is a move limit \(m=0.1\) in accordance with (20). The beam is loaded by a distributed load on the top face \(b=-2\) and the problem is optimized for compliance for 30 iterations with a convolution radius \(R=0.5\)
Fig. 18

Optimization for a three-dimensional beam with an embedded truss. a Domain definition and node numbering. b Continuum Tet10 mesh in the final deformed state. c Front, side and top views of the converged configuration

Fig. 19

Three-dimensional beam compliance evolution for 30 iterations

Table 8

Initial truss nodal locations within the three-dimensional beam

Node

x

y

z

1

0.5000

1.2000

1.6000

2

3.0000

1.2000

0.4000

3

7.0000

1.2000

0.4000

4

9.5000

1.2000

1.6000

5

0.5000

1.8000

1.6000

6

3.0000

1.8000

0.4000

7

7.0000

1.8000

0.4000

8

9.5000

1.8000

1.6000

The problem does not have symmetry imposed, and the final nodal coordinates after 30 iterations are in Table 9. Nevertheless, within some numerical precision symmetry is preserved. The final compliance for the problem is \(C=79.5418\), and the evolution throughout the iterations is presented in Fig. 19, again with a smooth decrease towards the optimum.
Table 9

Final truss nodal locations within the three-dimensional beam

Node

x

y

z

1

0.4972

0.6366

1.2482

2

2.2785

0.7085

0.0000

3

7.7148

0.7021

0.0000

4

9.5002

0.6281

1.2542

5

0.5005

2.3713

1.2562

6

2.2828

2.2935

0.0000

7

7.7181

2.2898

0.0000

8

9.5012

2.3635

1.2485

4.5 Reinforced double corbel

This example deals with the steel layout of a double corbel based on Example 3.2 in the ACI SP-208 (ACI Committee 2002). The corbel transfers beam reaction forces \(V_{u}=61.8\:kips\) and \(N_{uc}=14.3\:kips\) to a square \(14\:in\) column through a \(6\:in\) plate as depicted in Fig. 20a. In addition, the upper column carries a compressive axial load \(P_{u}=275\:kips\). The problem deals with the layout of the steel in traction, initially placed \(2\:in\) below the corbel supports.
Fig. 20

Double corbel problem definition. a Problem definition. b Model domain, loads and boundary conditions

The loads coming from the upper column and the beam are distributed over the column cross-sectional area and plate respectively. Analysis will be carried out on a \(t=1\:in\) thick model, with plane stress. Given the depth dimension of the corbel, a three-dimensional analysis would be more appropriate but the simplicity of a plane stress analysis is more appropriate to showcase the method in an application setting. The steel in compression has cross-sectional area \(A_{sc}=0.1\:in^{2}\) (not to be designed), and the steel in traction has initially \(A_{st}=0.1\:in^{2}\). The elastic modulus of steel is \(E_{s}=29000\:kips\), and for the concrete \(E_{c}=3600\:kips\) and \(\nu =0.2\). The model with the loads, boundary conditions and initial steel placement (for a \(1\:in\) thick model) is presented in Fig. 20b.

The concrete is modeled using 23312 \(T6\) elements, and 47065 nodes. The steel rebars are modeled as several pin-jointed bars \(1\:in\) apart to allow for linkage with the continuum throughout the length of the bar. The convolution radius is \(R=0.25\:in\). The optimization is done for compliance subject to constant volume, and the design variables are steel cross-sectional areas of the bars and the vertical (y direction) node positions of the bar in traction (layout optimization). The node movement is limited to \(1\:in\) away from the concrete edges to allow for steel cover. The constraints or restrictions included are a move limit \(m=0.1\) as in (20) for the node locations, and in the cross-sectional areas \(m_{a}=\:0.005in^{2}\) and \(A_{\min }=0.001\:in^{2}\) as in (24). The optimization is run for 200 iterations for a symmetric mesh, with symmetry not enforced.

Experimental results (Imran and Pantazopoulou 1996) suggest the following Drucker-Prager model for concrete
$$0.3\left(\frac{I_{1}}{f'_{c}}+1\right)=\sqrt{\frac{1}{3}}-\frac{\sqrt{J_{2}}}{f'_{c}}$$
(30)
where \(I_{1}\) and \(J_{2}\) are the first and second principal stress invariant. Reorganizing the terms
$$\frac{0.27+0.3\sqrt{3}}{0.73}I_{1} + \frac{1+0.3\sqrt{3}}{0.73}\sqrt{3J_{2}} = f'_{c}$$
(31)
we can define the Drucker-Prager stress as
$$\sigma_{dp} = 1.0817 I_{1} + 2.0817 \sqrt{3J_{2}}$$
(32)
and failure occurs when \(\sigma _{dp}=f'_{c}\), analogous to Von Mises stress. The concrete used in the example in (ACI Committee 2002) is assumed to have \(f'_{c}=4\:ksi\).
The compliance plot (Fig. 21a) exhibits a smooth decrease throughout the iterations, but with little improvement after the optimization. Despite not being enforced, symmetry was indeed preserved as expected. The final position of the steel and the cross-sectional areas are in Fig. 21b (blue and red color indicate steel in compression and tension respectively), as well as a Drucker-Prager stress.
Fig. 21

Double corbel optimization results after 200 iterations. a Compliance. b Final steel layout and concrete Drucker-Praguer stress

The gain is clear if the steel is looked in detail: the bar orients itself towards the principal directions taking a moustache shape. The optimized cross-sectional areas vary as in Fig. 22a, but most importantly the bar assumes a constant stress behavior as in Fig. 22b in accordance with Michell’s fully stressed requirements (Hemp 1973; Michell 1904; Rozvany 1996, 1997). In the final configuration there is no shear in the bar, that along with the constant stress (smaller than the previous maximum stress), makes a more efficient use of the steel available and thus a better design. The final position and cross-sectional areas for the (half) bar are in Tables 10 and 11 respectively.
Fig. 22

Details for the corbel’s steel in traction. a Cross-sectional area. b Axial stress.

Table 10

Final node locations for steel in traction (in)

Node

x

y

Node

x

y

1

0

16.2521

11

10

16.9086

2

1

16.2555

12

11

16.7158

3

2

16.2695

13

12

16.5538

4

3

16.2921

14

13

16.4070

5

4

16.3344

15

14

16.2939

6

5

16.3995

16

15

16.2710

7

6

16.5203

17

16

16.3699

8

7

16.7265

18

17

16.4352

9

8

16.9813

19

18

16.4119

10

9

17.0000

   
Table 11

Final cross-sectional areas for steel in traction for bars between nodes i and j (\(in^{2}\))

\(node_{i}\)

\(node_{j}\)

\(A_{s}\)

\(node_{i}\)

\(node_{j}\)

\(A_{s}\)

1

2

2.5389

10

11

1.3553

2

3

2.5596

11

12

1.0042

3

4

2.5937

12

13

0.3947

4

5

2.6694

13

14

0.0148

5

6

2.6540

14

15

0.0144

6

7

2.7265

15

16

0.0143

7

8

2.6469

16

17

0.0143

8

9

2.1364

17

18

0.0142

9

10

1.6514

18

19

0.0142

The steel for the whole \(14\:in\) thick corbel is laid in one layer and 3 different lengths following the results from the optimization as in Table 12. The corbel with the design obtained for the steel in traction is presented in Fig. 23. The problem only considers and designs the primary reinforcement. Additional shear reinforcement and hooks will be required for the design to be treated seriously.
Table 12

Corbel reinforcement steel in traction

Rebar

Horizontal Positiona

\(3\#5\)

\(-12.5\:in \text { to } 12.5\:in\)

\(2\#5\)

\(-9.0\:in \text { to } 9.0\:in\)

\(2\#5\)

\(-7.5\:in \text { to } 7.5\:in\)

aLengths measured horizontally

Fig. 23

Final layout of the optimized steel in traction within the double corbel

5 Conclusions

The method presented here extends truss layout optimization to combine a continuum with the discrete elements, allowing for mixed-element type optimization problems to be solved. This is possible because the derivative field remains continuous and sufficiently smooth even if the convolution radius is small.

Convolution coupling to the continuum does violate the energy principle of the problem, but when used with a reasonable sized convolution radius, the results are shown to agree up to some level with an exact solution when available. In cases where an analytical solution cannot be easily found, the method exhibits stable results (i.e. converging to an almost equivalent state regardless of changing some parameters). The optimum location has a small variation that can be attributed to the difference in the FEM solutions with refinement, and numerical inaccuracies.

There is no restriction over the objective function provided that the derivation procedure for the stiffness follows (18). Restrictions to the optimization are easily implemented and examples with volume constraint, minimum cross-sectional areas and member lengths are given. The method requires however a small step size (move limit) between iterations due to the highly nonlinear behavior of the problem. The situation worsens with an increasing number of truss nodes or the inclusion of member sizing, and thus the optimization can easily diverge.

The method is shown to effectively reach optimal configurations, however, an acceptable initial guess must be given because of the large number of local minima in these problems. Note that a truss can have an infinite number of spatial configurations, thus relying on the engineer’s common sense to provide a starting point for the optimization.

References

  1. ACI Committee (2002) SP-208: Examples for the Design of Structural Concrete with Strut-and-Tie ModelsGoogle Scholar
  2. Allahdadian S, Boroomand B, Barekatein A (2012) Towards optimal design of bracing system of multi-story structures under harmonic base excitation through a topology optimization scheme. Finite Elem Anal Des 61:60–74MathSciNetCrossRefGoogle Scholar
  3. Amir O, Sigmund O (2013) Reinforcement layout design for concrete structures based on continuum damage and truss topology optimization. Struct Multidiscipl Optim 47(2):157–174Google Scholar
  4. Barzegar F, Maddipudi S (1994) Generating reinforcement in FE modeling of concrete structures. J Struct Eng 120(5):1656–1662CrossRefGoogle Scholar
  5. Bendsoe MP, Sigmund O (2003) Topology optimization: theory, methods and applications, 2nd edn. In: Engineering online library. Springer, Berlin, GermanyGoogle Scholar
  6. Dorn W, Gomory R, Greenberg H (1964) Atomatic design of optimal structures. J Mech 3:25–52Google Scholar
  7. Elwi A, Hrudey T (1989) Finite element model for curved embedded reinforcement. J Eng Mech 115(4):740–754CrossRefGoogle Scholar
  8. Felix J, Vanderplaats GN (1987) Configuration optimization of trusses subject to strength, displacement and frequency constraints. J Mech Des 109:233–241Google Scholar
  9. Hansen SR, Vanderplaats GN (1988) An approximation method for configuration optimization of trusses. AAIA J 28(1):161–168CrossRefGoogle Scholar
  10. Haslinger J, Mäkinen RAE (2003) Introduction to shape optimization: theory, approximation, and computation. In: Advances in design and control. Society for Industrial and Applied Mathematics, Philadelphia, PA, USAGoogle Scholar
  11. Hemp WS (1973) Optimum structures. In: Oxford engineering science series. Clarendon Press, Oxford, UKGoogle Scholar
  12. Imran I, Pantazopoulou SJ (1996) Experimental study of plain concrete under triaxial stress. ACI Mater J 93(6):589–601Google Scholar
  13. Kato J, Ramm E (2010) Optimization of fiber geometry for fiber reinforced composites considering damage. Finite Elem Anal Des 46(5):401–415CrossRefGoogle Scholar
  14. Liang Q (2007) Performance-based optimization of structures: theory and Applications. Wiley, Ltd, Chichester, UKGoogle Scholar
  15. Liang Q, Xie Y, Steven G (2000) Optimal topology design of bracing systems for multistory steel frames. J Struct Eng 127(7):823–829CrossRefGoogle Scholar
  16. Lipson S, Gwin L (1977) The complex method applied to optimal truss configuration. Comput Struct 7(6):461–468CrossRefGoogle Scholar
  17. Michell AGM (1904) The limits of economy of material in frame-structures. Phil Mag Ser 6 8(47):589–597MATHCrossRefGoogle Scholar
  18. Mijar AR, Swan CC, Arora JS, Kosaka I (1998) Continuum topology optimization for concept design of frame bracing systems. J Struct Eng 124(5):541–550CrossRefGoogle Scholar
  19. Ohsaki M (2010) Optimization of finite dimensional structures. Taylor & Francis, Boca Raton, FL, USA CrossRefGoogle Scholar
  20. Rozvany G (1996) Some shortcomings in Michell’s truss theory. Struct Multidisc Optim 12(4):244–250CrossRefGoogle Scholar
  21. Rozvany G (1997) Some shortcomings in Michell’s truss theory. Struct Multidisc Optim 13(2–3):203–204Google Scholar
  22. Sokół T (2010) A 99 line code for discretized Michell truss optimization written in Mathematica. Struct Multidisc Optim 43(2):181–190Google Scholar
  23. Stromberg L, Beghini A, Baker W, Paulino G (2012) Topology optimization for braced frames: combining continuum and beam/column elements. Eng Struct 37:106–124CrossRefGoogle Scholar
  24. Svanberg K (1987) The method of moving asymptotes - a new method for structural optimization. Int J Numer Methods Eng 24(2):359–373MathSciNetMATHCrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  1. 1.Department of Civil and Environmental Engineering, Newmark LaboratoryUniversity of Illinois at Urbana-ChampaignUrbanaUSA

Personalised recommendations