Keywords

1 Introduction

With quick development of 3D printing technologies, the price of desktop 3D printers has become more affordable to general customers. Nowadays, people can make 3D prints easily with these affordable printers. With more and more widely applications of 3D printing, saving material consumption of 3D printing can significantly reduce the costs which can be achieved by using thin shells. Since thin-shell objects have low strength, we use stiffeners to stiffen thin-shell objects and proposed a stress guide optimization framework to obtain stiffened thin-shell objects with minimum material consumption and required strength.

Our proposed stress guide optimization framework achieves minimum material consumption through optimizing stiffener distribution and minimizing the cross-section size of stiffeners. In order to generate optimal distribution of stiffeners, the stress field of the input thin-shell objects under given loads and boundary conditions is calculated with the Finite Element Analysis (FEA). According to the stress distribution, some points called seeds are placed randomly on the surface of 3D thin-shell objects. The 3D objects and seeds are mapped to a 2D space so that a Voronoi diagram can be generated from these mapped seeds. The generated Voronoi diagram is mapped back to the 3D space and the edges of the mapped Voronoi diagram represent the distribution of stiffeners. After that, cross-section size of stiffeners is optimized to minimize the volume of the stiffeners. Since the generation of seeds uses a uniform random process which may not lead to a global optimal solution of stiffener distribution, Monte-Carlo simulation is introduced and iterated a given number of times to avoid any local minimum.

2 Related Work

The work proposed in this paper is related to 3D printing, finite element analysis, and structural optimization. We briefly review the existing work in these areas.

3D Printing:

There are a lot of papers on 3D printing. The deformation problem was investigated in [1]. The articulation of 3D printed models was examined in [2]. Mechanical movements of 3D printed objects were studied in [3, 4]. And the appearance of 3D printed models was discussed in [5, 6].

Finite Element Analysis

Enormous publications can be found about finite element analysis. For example, the finite element method in solid and structures was introduced in [7]. The finite element analysis of stiffened plates was given in [8]. The finite element calculations of stiffened shell were presented in [9]. The vibration of stiffened plates was investigated with the finite element method in [10]. Stress analysis of stiffened composited plates was carried out in [11]. The plates and shells with geometrically linear and nonlinear problems were studied in [12]. And mesh distortions of plate and shell finite elements were examined in [13].

Structural Optimization

is also a well investigated filed. Here we only briefly review some representative literature on optimization of 3D printing objects. Three approaches: hollowing, thickening, and strut insertion were introduced in [14] to obtain structurally sound and lightweight 3D prints. Thickness parameters of shells were optimized in [15]. The number of struts in a skin-frame structure is minimized in [16]. The material consumption of honeycomb-like 3D models is reduced via a hollowing optimization algorithm in [17]. Stiffened objects were first investigated in [18]. A method to produce optimized structures for any input surface with any load configurations was researched in [22].

3 Overview

The algorithm overview is shown in Fig. 1. For an input thin-shell object, the finite element calculation is first carried out to obtain its stress distribution (Fig. 1(a)). The seeds used to determine the positions of stiffeners are dispersed randomly in high stress areas (Fig. 1(b)). By mapping the object and seeds in a 3D space to a 2D space, a Voronoi diagram is generated (Fig. 1(c)). After determining the intersections between the edges of the V oronoi diagram and the edges of each of the triangles used to represent the thin-shell object and mapping them back to a 3D space, the stiffener distribution is determined (Fig. 1(d)). Having determined the stiffener distribution, cross-section size optimization of stiffeners is performed to obtain the minimum volume of the stiffeners. In order to optimize the seed generation, Monte-Carlo simulation is introduced to refine the stiffener distribution further. The final stress field obtained from finite element calculations is shown in Fig. 1(e) which significantly improves the stress distribution.

Fig. 1.
figure 1

Algorithm overview.

The finite element formulation of thin-shell objects and stiffened thin-shell objects has been presented in [10, 19]. In what follows, we only investigate the distribution of stiffeners, size optimization of stiffeners, Monte-Carlo simulation, and present the results obtained from our proposed framework.

4 Distribution of Stiffeners

The distribution of stiffeners is obtained through four steps. They are: seed generation, quasi-conformal parameterization, creation of Voronoi diagram, and stiffener extraction.

4.1 Seed Generation

The stress field of an input thin-shell object is first calculated under given boundary conditions and forces. Based on the obtained stress distribution, a given number of seeds are distributed on the object. The seeds are placed through a probability that places more seeds in the areas with a higher stress. By doing so, the areas with higher stresses are stiffened by more stiffeners.

In what follows, \( n_{t} \) stands for the number of triangles of the object mesh, \( s_{i} \) the stress of a randomly selected triangle \( t_{i} \), \( \sigma_{s} \) the material strength, \( n_{s} \) the number of expected seeds, and \( p^{ *} \) for the probability threshold.

First, a triangle \( t_{i} \) is randomly selected from the \( n_{t} \) triangles, and a probability \( p \) is also randomly generated between 0 and 1. If a randomly generated probability \( p \) is bigger than the probability threshold \( p^{ *} \) but smaller than \( s_{i} \text{ / }\sigma_{s} \) which is the ratio of the stress \( s_{i} \) over the material strength \( \sigma_{s} \), the triangle is seeded and marked. If the randomly selected triangle \( t_{i} \) has been seeded and marked, a new triangle is randomly selected. The process is repeated until the number \( n_{s} \) of the expected seeds are reached. This algorithm is shown below.

figure a

4.2 Quasi-Conformal Parameterization

Generating a Voronoi diagram from the placed seeds in the 3D thin-shell object and tracing stiffeners from the 3D Voronoi diagram and the 3D mesh is more complicated than in 2D since it requires searching for geodesic lines between arbitrary two points. In order to tackle this problem, we use a quasi-conformal parameterization method called the least square conformal maps (LSCM) [20] to map the 3D mesh to 2D which transforms the problem of tracing stiffeners in 3D space into the one of finding intersections between a segment and mesh edges, which is easier to deal with.

Conformal Maps:

As shown in Fig. 2, an application \( {\mathcal{X}} \) mapping a \( \left( {u,v} \right) \) domain to a surface is said to be conformal if for each \( \left( {u,v} \right) \), the tangent vectors to the iso-u and iso-v curves passing through \( {\mathcal{X}}\left( {u,v} \right) \) are orthogonal and have the same norm, which can be written as:

Fig. 2.
figure 2

Conformal map [20]

$$ N\left( {u,v} \right) \times \frac{{\partial {\mathcal{X}}\left( {u,v} \right)}}{\partial u} = \frac{{\partial {\mathcal{X}}\left( {u,v} \right)}}{\partial v} $$
(1)

where \( N\left( {u,v} \right) \) denotes the unit normal to the surface. In other words, a conformal map is locally isotropic, i.e. maps an elementary circle of the \( \left( {u,v} \right) \) domain to an elementary circle of the surface.

Conformality in a Triangulation:

Consider a triangulation \( {\mathbf{\mathcal{G}}} \) = {[1 ··· n], \( {\mathbf{\mathcal{T}}} \), (\( \varvec{p} _{j} \)) \( 1 \le \varvec{j} \le \varvec{n} \)}, where [1 ··· n],n \( \varvec{ } \ge \) 3 corresponds to the vertices, \( {\mathbf{\mathcal{T}}} \) is a set of n’ triangles represented by triples of vertices, and \( \varvec{p}_{\varvec{j}} \in \) \( {\mathbb{R}}^{3} \) denotes the geometric location at the vertex j. Each triangle has a local orthonormal basis, where \( \left( {\varvec{x}_{1} ,\varvec{y}_{1} } \right),\left( {\varvec{x}_{2} ,\varvec{y}_{2} } \right),\varvec{ }\left( {\varvec{x}_{3} ,\varvec{y}_{3} } \right) \) are the coordinates of its vertices in this basis (i.e., the normal is along the z-axis). The local bases of two triangles sharing an edge are consistently oriented.

By considering the restriction of \( {\mathcal{X}} \) to a triangle T and applying the conformality criterion to the inverse map \( {\mathcal{U}} \): (x,y) \( \to \) (u,v), Eq. (1) becomes:

$$ \frac{{\partial {\mathcal{X}}}}{\partial u} - i\frac{{\partial {\mathcal{X}}}}{\partial v} = 0 $$
(2)

where \( {\mathcal{X}} \) has been written in a complex number, i.e. \( {\mathcal{X}} \) = x + iy. According to the theorem on the derivatives of inverse functions, this implies that

$$ \frac{{\partial {\mathcal{U}}}}{\partial x} + i\frac{{\partial {\mathcal{U}}}}{\partial y} = 0 $$
(3)

where \( {\mathcal{U}} \) = u + iv.

Since this equation cannot in general be strictly enforced, the violation of the conformality condition is minimized in the least squares sense, which defines the criterion:

$$ C\left( T \right) = \int_{T} {\left| {\frac{{\partial {\mathcal{U}}}}{\partial x} + i\frac{{\partial {\mathcal{U}}}}{\partial y}} \right|^{2} } \;dA = \left| {\frac{{\partial {\mathcal{U}}}}{\partial x} + i\frac{{\partial {\mathcal{U}}}}{\partial y}} \right|^{2} \;A_{T} $$
(4)

where \( A_{T} \) is the area of the triangle and the notation|z| stands for the modulus of the complex number z. Summing over the whole triangulation, the criterion to minimize is then

$$ C\left( {\mathcal{T}} \right) = \sum\nolimits_{{T\, \in \,{\mathcal{T}}}} {C\left( T \right)} $$
(5)

After the seeds are obtained on the 3D mesh, they are projected to the 2D space with the above LSCM parameterization for further processing.

4.3 Creation of Voronoi Diagram

A Voronoi diagram is a partition of a plane into regions close to each of a given set of seeds. With the algorithm described in 4.1, the seeds on the 3D mesh shown in Fig. 3(a) are generated. These seeds are mapped to a 2D space with the algorithm given in 4.2, and the following algorithm is used to generate a Voronoi diagram from the generated seeds as shown in Figs. 3(b) and 3(c).

Fig. 3.
figure 3

Generation of Voronoi diagram.

For the input boundary surface S and a given number n of seeds \( \left\{ {s_{i} } \right\}, i \in \left( {1,n} \right) \) defined in the interior domain of S, a Voronoi tessellation of S is defined to be the collection of Voronoi cells \( \Omega _{i} \), \( i \in \left( {1,n} \right) \) of these seeds with

$$ \Omega _{i} = \{ x \in S \left| { \parallel {\text{x}} - s_{i} \parallel } \right. \le \parallel {\text{x}} - s_{j} \parallel ,\forall j \ne i\} $$
(6)

In the above equation, \( \left\| \cdot \right\| \) denotes the Euclidean norm. A Voronoi tessellation is called a centroidal Voronoi tessellation (CVT) [21] if each seed coincides with the centroid of its Voronoi cell, where the centroid \( c_{i} \) of its Voronoi cell \( \Omega _{i} \) is defined as

$$ {\mathbf{c}}_{i} = \frac{{\smallint_{{x \in \omega_{i} }} \rho \left( {\mathbf{x}} \right){\mathbf{x}}d\sigma }}{{\smallint_{{x_{i} \in \omega_{i} }} \rho \left( {\mathbf{x}} \right)d\sigma }} $$
(7)

where \( d\sigma \) is the area differential, and \( \rho \left( {\mathbf{x}} \right) \) is the density function over the domain S.

4.4 Stiffener Extraction

Having created the Voronoi diagram in 2D, the next work is to extract stiffeners from the Voronoi diagram. Suppose two ends of an edge of the Voronoi diagram is represented as \( p_{a} \) and \( p_{b} \) respectively. And the edge intersects with the projected input mesh at mi (i = 1, ···, I) where I is the number of intersections as shown in Fig. 4.

Fig. 4.
figure 4

Stiffener extraction

The stiffener extraction step takes each edge from the Voronoi diagram. All local triangles t li are iterated to detect all intersections p1, p2 in all triangles where p1 stands for mi, and p2 stands for mi+1 (i = 1, 2, …, I − 1). In order to easily project 2D intersection points back to 3D, the obtained intersections p1 and p2 are converted to area coordinates L1 and L2 using the local triangle t li . After all edges of the Voronoi diagram have been processed, all intersections represented in local area coordinates are mapped back to 3D coordinates. The algorithm is summarized in Algorithm 2.

5 Size Optimization

With the obtained distribution of stiffeners from previous steps, we further minimize the material consumption by finding optimized cross-section sizes of stiffeners. The objective of the size optimization is to minimize the volume of stiffeners. The constraints of the size optimization consist of 1) user specified lower bound \( \underline{w} \) and upper bound \( \bar{w} \) for the width of stiffeners, 2) user specified lower bound \( \underline{h} \) and upper bound \( \bar{h} \) for the height of stiffeners, and 3) the material strength \( \sigma_{s} \) for both stiffeners and plates.

figure b

Considering the above optimization objective and constraints, the problem of the size optimization can be formulated as the following constrained minimum problem:

$$ \begin{aligned} & {\text{arg }}\mathop {\hbox{min} }\limits_{w,h} \sum vol\left( {{\Re }_{i} } \right) \\ & s.t. \\ \end{aligned} $$
$$ \begin{aligned} \underline{w} \le w \le \bar{w} \hfill \\ \underline{h} \le h \le \bar{h} \hfill \\ S_{{{\Re }_{i} }} < \sigma_{s} \hfill \\ S_{j} < \sigma_{s} \hfill \\ \end{aligned} $$
(9)

where \( w \) is the width of stiffener cross-section, h is the height of stiffener cross-section, \( S_{{{\Re }_{i} }} \) stands for the stress of stiffener \( {\Re_i }, \) and \( s_{j} \) means the stress of triangle \( t_{j} \).

6 Monte-Carlo Simulation

As indicated in Algorithm 1, the seeded triangle ti and probability \( \varvec{p} \) are both randomly generated from a uniform distribution. The stiffener distribution relies on the generated seeds from this algorithm which may be a local minimum, not a global optimal solution. In order to tackle this problem, a Monte-Carlo simulation algorithm based on Monte-Carlo stochastic sampling is introduced.

Monte-Carlo sampling is one of the most classic sampling methods used to solve the problems such as evaluation of integrals, physical simulation, optimization and so on. With this sampling algorithm, a number of nm Monte-Carlo simulation iterations is specified, and then the process of determining the distribution of stiffeners and size optimizations of stiffeners is repeated nm times with different randomly generated seeds rs to search for a global optimal solution.

In this research, the number nm of Monte-Carlo iterations is set to be 100. The experiment indicates 100 Monte-Carlo simulation iterations are large enough to obtain a global optimal solution.

7 Results and Discussions

In this section, we introduce the implementation and parameter setting of the proposed framework, effects of different probability thresholds and Monte-Carlo simulation, and 3D printed objects and the stress comparisons before and after they are stiffened with the method proposed in this paper.

7.1 Implementation and Parameter Setting

The proposed algorithm is implemented in MATLAB with FEM calculations compiled into MEX functions for speed reason. The results are tested on a PC with an Intel Xeon E5 CPU and 32 GB memory, running on Windows OS.

The minimal wall thickness allowed by the used printer is 1 mm. Therefore, both the w and h are set to be 1 mm. The material strength \( \sigma_{s} \) of the photosensitive resin used to print all the 3D objects is 42 N/m2. The upper bounds \( \bar{w} \) and \( \bar{h} \) are taken to be 4 mm.

7.2 Effect of Different Probability Thresholds

The probability threshold p* is introduced here to control the spread of the seeds over the geometry. When p* is set to a low value, the triangles with small probabilities will not be filtered out and marked as seeded ones, causing a wide spread of seeds over all triangles. On the contrary, if p* is set to a high value, triangles with the stress less than \( p^{ * } \sigma_{s} \) will never be selected which guarantees the concentration of seeds around critical areas.

Figure 5 shows the effect of different probability thresholds p* on the generated stiffeners. It can be seen a small p* such as p* = 0 in Fig. 5(a) leads to a more uniform distribution of seeds over the mesh, while a large p* such as p* = 0.5 in Fig. 5(c) drives seeds towards the areas with higher stress and brings in more stiffeners to enhance them.

Fig. 5.
figure 5

Effect of different thresholds p* on the distribution of seeds.

7.3 Effect of Monte-Carlo Simulations

Figure 6 shows the effect of random number generator seed rs. With the same stress map and same number of seeds (ns= 35), the distributions of seeds in Figs. 6(a), 6(b) and 6(c) are different, leading to different Voronoi diagrams shown in 6(d), 6(e) and 6(f) and different stiffener distributions shown in 6(g), 6(h), and 6(i), respectively.

Fig. 6.
figure 6

Effect of Monte-Carlo simulations of a Guscio. The random number generator seeds rs for each column are 10, 20 and 30 respectively.

7.4 3D Printed Objects and Stress Comparisons

With the optimization algorithm of stress-guided stiffened objects proposed in this paper, the minimum stiffener volumes of some stiffened objects are obtained, their 3D printed models are shown in Fig. 7, and the stress changes with and without the optimized stiffeners are shown in Fig. 8, 9, 10, 11, 12, 13, 14, 15 and 16, respectively.

Fig. 7.
figure 7

All printed 3D objects

Fig. 8.
figure 8

Stress-guided stiffened Plate

Fig. 9.
figure 9

Stress-guided stiffened Botanic

Fig. 10.
figure 10

Stress-guided stiffened Snail

Fig. 11.
figure 11

Stress-guided stiffened Dome

Fig. 12.
figure 12

Stress-guided stiffened Bridge

Fig. 13.
figure 13

Stress-guided stiffened Hemisphere

Fig. 14.
figure 14

Stress-guided stiffened Guscio

Fig. 15.
figure 15

Stress-guided stiffened Lilium

Fig. 16.
figure 16

Leaf: (a) Initial stress, (b) Stiffener, (c) Final stress (d) 3D printed leaf

Figure 8 shows the stress distributions, stiffeners, and 3D printed model of a stress-guided stiffened plate. In the figure (a) depicts the stress distribution in the flat plate without stiffeners with a maximum stress of 278.198 MPa, (b) shows the optimized stiffeners with a total volume of 418.5148 mm3, (c) gives the stress distribution in the flat plate stiffened by the optimized stiffeners with a maximum stress 24.6426 MPa, and (d) is a photo of the 3D printed model of the stiffened plate. By applying the optimized stiffeners, the maximum stress reduces from 278.198 MPa to 24.6426 MPa.

The example of a Botanic is given in Fig. 9 to show the stress distributions, stiffeners, and 3D printed model. Figure 9(a) shows the initial stress distribution of Botanic without stiffeners with a maximum stress of 90.927 MPa, (b) shows the optimized stiffeners with a total volume of 418.856 mm3, (c) gives the stress distribution in the Botanic stiffened by the optimized stiffeners with a maximum stress 33.8706 MPa, and (d) is a photo of the 3D printed model of the stiffened Botanic. By applying the optimized stiffeners, the maximum stress reduces from 90.927 MPa to 33.8706 MPa.

The stress fields, stiffeners and 3D printed model of a stiffened Snail are shown in Fig. 10. In the figure, the initial maximum stress within the Snail without any stiffeners is 33.273 MPa as shown in (a). After applying the stiffeners (b) with a total volume of 84.0108 mm3 to the Snail, the maximum stress shown in (c) drops from 33.273 MPa to 28.3634 MPa in the final printed 3D model (d).

Figure 11 shows the stress distributions, stiffeners, and 3D printed object of a Dome. The maximum stress 59.028 MPa in the initial stress distribution (a) without any stiffeners is reduced to the maximum stress 34.3583 MPa in (c) by applying the stiffened stiffeners (b) with a total volume of 754.704 mm3. (d) is a photo of the 3D printed model of the stiffened Dome.

The stress fields, stiffeners and 3D printed model of a stiffened bridge are shown in Fig. 12. In the figure, the initial maximum stress within the bridge without any stiffeners is 94.4982 MPa as shown in (a). After applying the stiffeners (b) with a total volume of 535.109 mm3 to the bridge, the final maximum stress (c) drops from 94.4982 MPa to 16.8744 MPa in the final printed 3D model (d).

Figure 13 shows the stress distributions, stiffeners, and 3D printed object of a hemisphere. The initial stress distribution without stiffeners has a maximum stress of 42.0198 MPa shown in (a), (b) shows the optimized stiffeners with a total volume of 1961.93 mm3, (c) gives the stress distribution in the hemisphere stiffened by the optimized stiffeners with a maximum stress 31.2246 MPa, and (d) is a photo of the 3D printed model of the stiffened hemisphere. The applied optimized stiffeners help to reduce to the maximum stress from 42.0198 MPa to 31.2246 MPa.

Figure 14 shows the stress distributions, stiffeners, and 3D printed object of a Guscio. The maximum stress 43.8379 MPa in the initial stress distribution (a) without any stiffeners is reduced to the maximum stress 29.5158 MPa in (c) by introducing the stiffened stiffeners (b) with a total volume of 711.483 mm3. A photo of the 3D printed model of the stiffened Guscio is shown in Fig. 14(d).

Figure 15 shows the stress distributions, stiffeners, and 3D printed object of a Lilium. The initial stress distribution without stiffeners has a maximum stress of 52.0412 MPa shown in (a), (b) shows the optimized stiffeners with a total volume of 227.294 mm3, (c) gives the stress distribution in the Lilium stiffened by the optimized stiffeners with a maximum stress 35.3578 MPa, and (d) is a photo of the 3D printed model of the stiffened Lilium. The applied optimized stiffeners help to reduce the maximum stress from 52.0412 MPa to 35.3578 MPa.

The stress fields, stiffeners and 3D printed object of a leaf are shown in Fig. 16. In this example, the initial maximum stress in the leaf without any stiffeners is 54.9437 MPa as shown in (a). After attaching the stiffeners (b) with a total volume of 112.512 mm3 to the leaf, the final maximum stress drops from 54.9437 MPa to 20.2208 MPa as depicted in (c), and the final printed 3D model is given in (d).

8 Conclusion and Future Work

In this paper, we have developed a stress guided optimization framework to minimize the material consumption of 3D printing. The framework consists of the finite element analysis to obtain the stress distribution in thin-shell objects, random generation of seeds guided by the obtained stress field, mapping the 3D objects and generated seeds to a 2D space to create a Voronoi diagram for optimizing the distribution of stiffeners. Apart from optimizing the stiffener distribution, the cross-section size of stiffeners is minimized to save materials for 3D printing. The Monte-Carlo simulation is introduced to optimize the seed generation and achieve a global optimal solution.

A lot of experiments were carried out to demonstrate the effectiveness and advantages of the proposed method. The stress comparisons between the thin-shell objects with and without stiffeners demonstrate that thin-shell objects stiffened with the optimized distribution and cross-section size of stiffeners significantly reduce the material consumption of 3D printed objects.

This paper assumes the cross-sectional profiles of the stiffeners are the same for each model. To achieve a more efficient structure, it is more reasonable to use various cross-sectional shapes. In the future, one of the aims is to apply various cross-sections and obtain stiffened structures with even less materials.