Let’s suppose that we are tasked with designing a coil such that the magnetic field along part of the centerline is as close to a target value as possible. As we saw in an earlier blog post, we can achieve this by adjusting the current through each turn of the coil to be different. However, this requires that we include a separate current control for each turn in our physical design. Instead, we can use a single current control for the entire coil and adjust the physical spacing of the coils along the axial direction.

*A ten-turn axisymmetric coil. The objective is to alter the magnetic field at the centerline (green).*

The case that we will consider here is shown in the image above. A ten-turn axisymmetric coil is driven by a single current source; that is, the same current flows through each turn. The initial coil design spaces the 1-cm-diameter coil turns a distance of *S _{0}* = 4 cm apart. Since the coil is axisymmetric (and we are only interested in solutions that are symmetric about the

*The computational model. We want to change the five coil positions and the coil current.*

Our optimization objective is to get the *B _{z}* field as close as possible to a desired value,

More formally, these statements can be written as:

\begin{aligned}

& \underset{I, \Delta Z_1, \ldots ,\Delta Z_5}{\text{minimize:}}

& & \frac{1}{L_0} \int_0^{L_0} \left( \frac{B_z}{B_0} -1 \right) ^2 d l \\

& \text{subject to:}

& & -(S_0-G_0)/2 \le \Delta Z_1 \leq \Delta Z_{max}\\

& & & -\Delta Z_{max} \leq \Delta Z_2, \ldots ,\Delta Z_5 \leq \Delta Z_{max}\\

& & & G_0 \le (Z_5-Z_4) \\

& & & G_0 \le (Z_4-Z_3) \\

& & & G_0 \le (Z_3-Z_2) \\

& & & G_0 \le (Z_2-Z_1) \\

& & & 0 \leq I \leq I_{max}\\

\end{aligned}

& \underset{I, \Delta Z_1, \ldots ,\Delta Z_5}{\text{minimize:}}

& & \frac{1}{L_0} \int_0^{L_0} \left( \frac{B_z}{B_0} -1 \right) ^2 d l \\

& \text{subject to:}

& & -(S_0-G_0)/2 \le \Delta Z_1 \leq \Delta Z_{max}\\

& & & -\Delta Z_{max} \leq \Delta Z_2, \ldots ,\Delta Z_5 \leq \Delta Z_{max}\\

& & & G_0 \le (Z_5-Z_4) \\

& & & G_0 \le (Z_4-Z_3) \\

& & & G_0 \le (Z_3-Z_2) \\

& & & G_0 \le (Z_2-Z_1) \\

& & & 0 \leq I \leq I_{max}\\

\end{aligned}

We solve this problem with a combination of parameter and shape optimization by using the *Optimization* and *Deformed Geometry* interfaces in COMSOL Multiphysics.

We can begin our implementation by reviewing the model developed here, which optimizes for a particular field value. We start with the same *Optimization* interface and *Integral Objective* feature introduced in the previous blog post. Two *Global Control Variable* features are then used. The first sets up the displacements of the five coils, using *Control Variables Scaling* to scale the optimization variables close to unity. The second *Global Control Variables* feature similarly defines and constrains the current.

*The definitions of the variables that control the five coils’ positions.*

The five *Control Variables* shown in the screenshot above define the displacements of the coils, as well as a small square region of space around each coil, which is shown as the green domains in the illustration below. As these green domains move up and down, the surrounding yellow domains must stretch and shrink to accommodate, while the surrounding blue domain is fixed. Since we know the displacements of the green domains, we can specify a linear variation of displacement along all of the red edges. This linear displacement variation is computed using a *Coefficient Form Boundary PDE* interface, as described in an earlier blog post on modeling translational motion.

*The definitions of the deformations for the various domains in the model.*

This information about the specified displacements of the various domains is set up using the *Deformed Geometry* interface, as shown in the screenshot below. The *Prescribed Deformation* domain features move the green domains and the yellow domains are allowed to deform due to the *Free Deformation* domains. The *Prescribed Mesh Displacement* boundary features apply to the black and red edges and completely define the deformations of the yellow domains.

*The control over the coil turn displacement via the Prescribed Deformation feature in the* Deformed Geometry *interface.*

As a consequence of setting up the *Deformed Geometry* interface in this way, the five control variables for the positions of the coils now represent a shape optimization problem. Previously, we have discussed shape optimization in a more general case from structural mechanics. Shape optimization takes advantage of the ability of COMSOL Multiphysics to compute design sensitivities with respect to changes in the shape of the geometry.

We also need to define a set of *Global Inequality Constraints* to prevent the green domains surrounding the coils from getting too close to each other and intersecting. The screenshot below shows this implementation. Note that the constraint is scaled with respect to the gap size *G _{0}* so that the constraint equation is also close to one in magnitude.

*One of the four constraints that keep the coils from getting too close to each other.*

Due to the large deformations that can occur in the domains around the coils that stretch and contract, it is also helpful to use a mapped mesh.

*A mapped mesh is used in the deforming domains around the coils. The infinite element domain also has a mapped mesh.*

We can then solve this problem using a gradient-based optimization solver (SNOPT), taking advantage of the analytically computed gradients. The current through the coil and the coil positions are adjusted to minimize the above objective function. The results of the optimization are shown in the figure below.

*The magnetic flux density’s* z*-component along the centerline for the optimized coil.*

*The optimized coil positions.*

We have introduced a model that uses a combination of shape and parameter optimization to adjust the coil current and spacing between the coils in a 2D axisymmetric coil. By taking advantage of the *Optimization* and *Deformed Geometry* interfaces, we are able to analytically compute the derivatives for this problem and converge to an optimum very quickly.

- Read a blog post on modeling a linear electromagnetic plunger
- Browse the Optimization category on the COMSOL Blog

The problem we will look at today is the optimization of a ten-turn axisymmetric coil structure, as shown in the image below. Each of the five turns on either side of the *xy*-plane is symmetrically but independently driven.

*A ten-turn coil with five independently driven coil pairs. The objective is to alter the magnetic field at the centerline (green highlight).*

The coil is both rotationally symmetric and symmetric about the *z* = 0 plane, so we can reduce the computational model to a 2D axisymmetric model, as shown in the schematic below. Our modeling domain is truncated with an *infinite element* domain. We use the Perfect Magnetic Conductor boundary condition to exploit symmetry about the *z* = 0 plane. Thus, our model reduces to a quarter-circle domain with five independent coils that are modeled using the *Coil Domain* feature.

*A schematic of the computational model.*

If all of the coils are driven with the same current of 10 A, we can plot the *z*-component of the magnetic flux density along the centerline, as shown in the image below. It is this field distribution along a part of the centerline that we want to change via optimization.

*The magnetic field distribution along the coil centerline. We want to adjust the magnetic field within the optimization zone.*

From the image above, we see the magnetic field along a portion of the centerline due to a current of 10 A through each coil. It is this field distribution that we want to change by adjusting the current flowing through the coils. Our design variables are the five unique coil currents: . These design variables have bounds: . That is, the current cannot be too great in magnitude, otherwise the coils will overheat.

We will look at three different optimization problem statements:

- To have the magnetic field at the centerline be as close to a desired target value as possible
- To minimize the power needed to drive the coil, along with a constraint on the field minimum at several points
- To minimize the gradient of the magnetic field along the centerline, along with a constraint on the field at one point

Let’s state these optimization problems a bit more formally. The first optimization problem can be written as:

\begin{aligned}

& \underset{I_1, \ldots ,I_5}{\text{minimize:}}

& & \frac{1}{L_0} \int_0^{L_0} \left( \frac{B_z}{B_0} -1 \right) ^2 d l \\

& \text{subject to:}

& & -I_{max} \leq I_1, \ldots ,I_5 \leq I_{max}\\

\end{aligned}

& \underset{I_1, \ldots ,I_5}{\text{minimize:}}

& & \frac{1}{L_0} \int_0^{L_0} \left( \frac{B_z}{B_0} -1 \right) ^2 d l \\

& \text{subject to:}

& & -I_{max} \leq I_1, \ldots ,I_5 \leq I_{max}\\

\end{aligned}

The objective here is to minimize the difference between the computed *B _{z}*-field and the desired field,

Now, let’s look at the implementation of this problem within COMSOL Multiphysics. We begin by adding an *Optimization* interface to our model, which contains two features. The first feature is the *Global Control Variables*, as shown in the screenshot below. We can see that five control variables are set up: `I1,...,I5`

. These variables are used to specify the current flowing through the five *Coil* features in the *Magnetic Fields* interface.

The *Initial Value*, *Upper Bound*, and *Lower Bound* to these variables are also specified by two *Global Parameters*, `I_init`

and ` I_max`

. Also note that the *Scale factor* is set such that the optimization variables also have a magnitude close to one. We will use this same setup for the control variables in all three examples.

*Setting up the Global Control Variables feature, which specifies the coil currents.*

Next, the objective function is defined via the *Integral Objective* feature over a boundary, as shown in the screenshot below. Note that the *Multiply by 2πr* option is toggled off.

*The implementation of the objective function to achieve a desired field along one boundary.*

We include an *Optimization* step in the Study, as shown in the screenshot below. Since our objective function can be analytically differentiated with respect to the design variables, we can use the SNOPT solver. This solver takes advantage of the analytically computed gradient and solves the optimization problem in a few seconds. All of the other solver settings can be left at their defaults.

*The Optimization study step.*

After solving, we can plot the fields and results. The figure below shows that the *B _{z}*-field matches the target value very well.

*Results of optimizing for a target value of magnetic flux along the centerline.*

Our second optimization problem is to minimize the total power needed to drive the coil and to include a constraint on the field minimum at several points along the centerline. This can be expressed as:

\begin{aligned}

& \underset{I_1, \ldots ,I_5}{\text{minimize:}}

& & \frac{1}{P_o}\sum_{k=1}^{5} P_{coil}^k \\

& \text{subject to:}

& & -I_{max} \leq I_1, \ldots ,I_5 \leq I_{max}\\

& & & 1 \le B_z^i/B_{0}, i=1, \ldots, M

\end{aligned}

& \underset{I_1, \ldots ,I_5}{\text{minimize:}}

& & \frac{1}{P_o}\sum_{k=1}^{5} P_{coil}^k \\

& \text{subject to:}

& & -I_{max} \leq I_1, \ldots ,I_5 \leq I_{max}\\

& & & 1 \le B_z^i/B_{0}, i=1, \ldots, M

\end{aligned}

where *P _{o}* is the initial total power dissipated in all coils and is the power dissipated in the k

We further want to constrain the fields at *M* number of points on the centerline to be above a value of *B*_{0}.

The implementation of this problem uses the same Global Control Variables feature as before. The objective of minimizing the total dissipated coil power is implemented via the *Global Objective* feature, as shown in the screenshot below. The built-in variables for the dissipated power (`mf.PCoil_1,...,mf.PCoil5`

) in each Coil feature can be used directly. The objective is normalized with respect to the initial total power so that it is close to unity.

*Implementation of the objective to minimize total power.*

The constraint on the field minimum has to be implemented at a set of discrete points within the model. In this case, we introduce five points evenly distributed over the optimization zone. Each of these constraints has to be introduced with a separate *Point Sum Inequality Constraint* feature, as shown below. We again apply a normalization such that this constraint has a magnitude of one. Note that the *Multiply by 2πr* option is toggled off, since these points lie on the centerline.

*The implementation of the constraint on the field minimum at a point.*

We can solve this problem using the same approach as before. The results are plotted below. It is interesting to note that the minimal dissipated power solution does not result in a very uniform field distribution over the target zone.

*Results of optimizing for a minimum power dissipation with a constraint on the field minimum.*

Finally, let’s consider minimizing the gradient of the field along the optimization zone, with a constraint on the field at the centerpoint. This can be expressed as:

\begin{aligned}

& \underset{I_1, \ldots ,I_5}{\text{minimize:}}

& & \frac{1}{L_0 B_{0}} \int_0^{L_0} \left( \frac{\partial B_z}{\partial z } \right) ^2 d l \\

& \text{subject to:}

& & -I_{max} \leq I_1, \ldots ,I_5 \leq I_{max}\\

& & & B_z(r=0,z=0) = B_0 \end{aligned}

& \underset{I_1, \ldots ,I_5}{\text{minimize:}}

& & \frac{1}{L_0 B_{0}} \int_0^{L_0} \left( \frac{\partial B_z}{\partial z } \right) ^2 d l \\

& \text{subject to:}

& & -I_{max} \leq I_1, \ldots ,I_5 \leq I_{max}\\

& & & B_z(r=0,z=0) = B_0 \end{aligned}

The constraint here fixes the field at the centerpoint of the coil. Although the *Optimization* interface does have an explicit equality constraint, we can achieve the same results with an inequality constraint with equal upper and lower bounds. We again apply a normalization such that our constraint is actually , as shown in the image below.

*The implementation of an equality constraint.*

The objective of minimizing the gradient of the field within the target zone is implemented via the Integral Objective feature (shown below). The gradient of the *B _{z}*-field with respect to the

`d(mf.Bz,z)`

.

*The objective of minimizing the gradient of the field.*

We can use the same solver settings as before. The results for this case are shown below. The field within the optimization zone is quite uniform and matches the target at the centerpoint.

*Results of optimizing for a minimum field gradient with a constraint on the field at a point.*

Although the field here appears almost identical to the first case, the solution in terms of the coil currents is quite different, which raises an interesting point. There are multiple combinations of coil currents that will give nearly identical solutions in terms of minimizing the field difference or gradient. Another way of saying this is that the objective function has multiple local minimum points.

The SNOPT optimization solver uses a type of gradient-based approach and will approach different local minima for different initial conditions for the coil currents. Although a gradient-based solver will converge to a local minimum, there is no guarantee that this is in fact the global minimum. In general (unless we perform an exhaustive search of the design space), it is never possible to guarantee that the optimized solution is a global minimum.

Furthermore, if we were to increase the number of coils in this problem, we can get into the situation where multiple combinations of coil currents are nearly equivalently optimal. That is, there is no single optimal point, but rather an “optimal line” or “optimal surface” in the design space (the combination of coil currents) that is nearly equivalent. The optimization solver does not provide direct feedback of this, but will tend to converge more slowly in such cases.

We have shown three different ways to optimize the currents flowing through the different turns of a coil. These three cases introduce different types of objective functions and constraints and can be adapted for a variety of other cases. Depending upon the overall goals and objectives of your coil design problem, you may want to use any one of these or even an entirely different objective function and constraint set. These examples show the power and flexibility of the Optimization Module in combination with the AC/DC Module.

Of course, there is even more that can be done with these problems. In an upcoming blog post, we will look at adjusting the locations of the coil turns — stay tuned.

*Editor’s note: We have published the follow-up post in this blog series. Read it here: “How to Optimize the Spacing of Electromagnetic Coils“.*

- Browse the COMSOL Blog for more information on modeling electromagnetic coils:

Topology optimization is a useful capability because it can help us find designs that we would not have reasonably been able to think of ourselves. When developing a design, however, this is only the first step. It may not be reasonable or possible to construct a particular design found through topology optimization, either because the design is too costly to produce or it is simply not possible to manufacture.

*Topology optimization results for an MBB beam.*

To address these concerns, we can come up with new designs that are based on the results of topology optimization, and then carry out further simulation analyses on them. But how do we do this? As it turns out, COMSOL Multiphysics makes it simple to create geometries from the 2D and 3D plots of your topology optimization results, which you can continue to work with directly in COMSOL Multiphysics or export to a wide range of CAD software platforms.

To view topology optimization results that are in 2D, we can create a contour plot. Let’s use the Minimizing the Flow Velocity in a Microchannel tutorial to demonstrate this process. The goal of the tutorial is to find an optimal distribution of a porous filling material to minimize the horizontal flow velocity in the center of a microchannel.

First, we open up the model file included in the tutorial and go to the *Contour 1* plot feature under the *Velocity (spf)* plot group.

*The horizontal velocity (surface plot) and velocity field (streamlines) after optimization. The black contours represent the filling material.*

In the above plot, the black contour is where the design variable, , equals 0.5. This indicates the border between the open channel and filling material. This is the result that we would like to incorporate into the geometry. In other applications, the expression and exact level to plot may differ, but the principle is the same: to find a contour that describes the limit between the solid and nonsolid materials (typically a fluid of some kind).

To create a geometry from this contour plot, we right-click the *Contour* feature node and choose *Add Plot Data to Export*. We need to make sure that we choose the data format as *Sectionwise* before we export the file.

The *Sectionwise* format describes the exported data using one section with coordinates, one with the element connectivity, and another that includes the data columns. It is important to note that the middle section, which describes how the coordinates of the first section are connected, will allow a contour plot with several closed loops or open curves.

The *Spreadsheet* export format is not suited for this particular use for several reasons, most importantly because it will assume that all coordinates are connected one after the other. This means that if there is more than one isolated contour, it will not be possible to build the *Interpolation Curve* feature. Also, the coordinates are scrambled, so the curve in the next step (discussed below) will not be drawn in the same way as seen in the contour plot.

To create the new geometry, we choose *Add Component* from the *Home* toolbar and choose a new *2D Component*. Then, we copy the geometry feature nodes from the original geometry and paste them to the geometry sequence of the new 2D component. After this, we add an *Interpolation Curve* from the *More Primitives* menu on the *Geometry* toolbar and set the type as *Open Curve*, data format as *Sectionwise*, and a tolerance of 2e-2.

A smaller tolerance will give a curve that is more true to the data, but the outcome might be an intricate or “wiggly” geometry. In turn, a higher tolerance may give a curve that is too simplified and quite far from the optimized result.

*Geometry with the interpolation curves representing the results of the topology optimization.*

The geometry can now be used to run further simulations and to verify the created geometry within COMSOL Multiphysics.

The DXF format is a 2D format that most CAD software platforms can read. DXF also describes the higher-order polygons between the points, so it usually gives a better representation than exporting only the points.

To export the optimized topology from this geometry to a DXF file, we can follow the steps below. Please note that there is an optional step for if you only want to include the shape of the optimized topology in your DXF file.

- Add a
*Union*from the*Booleans and Partitions*menu on the*Geometry*toolbar - Include all of the objects
- Use a
*Delete Entities*feature to remove the unwanted domains (optional) - Click the
*Export*button on the*Geometry*toolbar to write to the DXF format for a 2D geometry

Now, let’s see what to do when working with topology optimization results that are in 3D.

After performing a topology optimization in 3D, we usually view the resulting shape by creating a plot of the design variable; for example, an isosurface plot. We can directly export such a plot to a format that is compatible with COMSOL Multiphysics and CAD software and can even be used directly for 3D printing. This file format is the STL format, where the surfaces from the results plot are saved as a collection of triangles. It is a common standard file format for 3D printing and 3D scans in general.

In COMSOL Multiphysics, it is possible to export an STL file from the following plot features:

*Volume**Isosurface**Surface**Slice**Multislice**Far Field*

The software also supports adding a *Deformation* node on the plot feature, in case we want to export a deformed plot. The volume and isosurface plots are the most commonly used plot types for topology optimization, so we will focus our discussion on these two options.

To create an isosurface plot, we first add a 3D plot group to which we add an *Isosurface* feature node. In the *Expression* field, we then enter the design variable name, set the entry method as *Levels*, and fill in an appropriate value of the design variable representing the interface between the solid and nonsolid materials.

To demonstrate this process, let’s look at the example of the bridge shown below, where the optimal material distribution takes the familiar shape of an arch bridge. The optimization algorithm is maximizing the stiffness of the bridge subjected to a load to reach the displayed solution. To obtain the displayed isosurface plot, we use the expression 0.1 for the level of the design variable.

*An isosurface plot of the 3D topology optimization for a deck arch bridge.*

As you can see in the screenshot above, isosurface plots are not necessarily capped or airtight, so an exported volume plot may be a better choice, especially if we want to run further simulation analyses in COMSOL Multiphysics.

We can create a suitable plot by adding a *Volume* feature node to a 3D plot group. Then, we add a *Filter* node under *Volume* and set a suitable expression for inclusion. In this example, we use the expression rho_design > 0.1.

*A volume plot of the deck arch bridge.*

Exporting the data into an appropriate file format is simple. We right-click the *Volume* or *Isosurface* feature node and select *Add Plot Data to Export*. In the settings window of the resulting *Plot* node, we then select *STL Binary File (*.stl)* or *STL Text File (*.stl)* from the *Data format* drop-down list.

The exported STL file is readily readable by most CAD software platforms. To continue with the simulation of the geometry, import the STL file to a new COMSOL Multiphysics model, a process that we discuss in a previous blog post.

If you want to compare actual CAD drawings with your optimized results, you need to export the data in a format that can be imported into the CAD software you are using. The DXF format (for 2D) and the STL format (for 3D) are widely used formats and should be possible to import in almost any software platform.

In this blog post, we have discussed the steps needed to export topology optimization results in the DXF and STL formats. This will enable you to more efficiently analyze your model geometries within COMSOL Multiphysics and CAD software.

- Learn more about topology optimization and exporting geometries on the COMSOL Blog:

Topology optimization is a powerful tool that enables engineers to find optimal solutions to problems related to their applications. Here, we’ll take a closer look at topology optimization as it relates to acoustics and how we optimally distribute acoustic media to obtain a desired response. Several examples will further illustrate the potential of this optimization technique.

Many engineering tasks revolve around optimizing an existing design or a future design for a certain application. Best practices and experiences derived from years of working within a given industry are of great importance when it comes to improving designs. However, optimization problems are often so complex that it is impossible to know if design iterations are pushing things in the right direction. This is where *optimization* as a mathematical discipline comes into play.

Before we proceed, let’s review some important terminology. In optimization — be it parameter optimization, shape optimization, or in our case topology optimization — there is always at least one so-called *objective function*. Typically, we want to minimize this function. For acoustic problems, we may want to minimize the sound pressure in a certain region, whereas for structural mechanics problems, we may want to minimize the stresses in a part of a structure. We state this objective as

\min_{\chi} F (\chi)

with *F* being the objective function. A *design variable* is varied throughout the optimization process to reach an optimal solution. It is varied within a *design domain* denoted *Ω _{d}*, which generally does not make up the entire finite element space

*The design domain is generally a subset of the entire finite element domain.*

Note that since the design variable varies as a function of space over the finite element discretized design domain, it is as such a vector. For this particular case, we will simply address it as a variable.

The optimization problem may have more than one objective function, and so it will be up to the engineer to decide how large of a weight each of these objectives should carry. Note that because the objectives may oppose each other during the optimization, special care should be taken when setting up the problem.

In addition to the objective function(s), there will usually be some *constraints* associated with the optimization problem. These constraints reflect some inherent size and/or weight limitations for the problem in question. With the *Optimization* interface in COMSOL Multiphysics, we can input the design variable, the objective function(s), and the constraints in a systematic way.

With topology optimization, we have an iterative process where the design variable is varied throughout the design domain. The design variable is continuous throughout the domain and takes on values from zero to one over the domain:

0 < \chi \leq 1\ \forall\ (x, y)\ \varepsilon\ \Omega_d.

Ideally, we want the design variable to settle near values of either zero or one. In this way, we get a near discrete design, with two distinct (binary) states distributed over the design domain. The interpretation of these two states will depend on the physics related to our optimization. Since most literature addresses topology optimization within the context of structural mechanics, we will first look at this type of physics and address its acoustics counterpart in the next section.

Topology optimization in COMSOL Multiphysics for static structural mechanics was a previous topic of discussion on the COMSOL Blog. To give a brief overview: A so-called MBB beam is investigated with the objective of maximizing the stiffness by minimizing the total strain energy for a given load and boundary conditions. The design domain makes up the entire finite element domain. A constraint is applied to the total mass of the structure. In the design space, Young’s modulus is interpolated via the design variable as

E(\chi) = \left\{ \begin{array}{ll}E_0\ \textrm{for}\ \chi=1\\0\ \textrm{for}\ \chi=0 \end{array} \right..

To help the binary design, we can use a so-called solid isotropic material with penalization (SIMP) interpolation

E (\chi) = \chi^p E_0

where *p* is the penalization factor, typically taking on a value in the range of three to five. With this interpolation (and an implicit linear interpolation of the density), intermediate values of *X* are avoided by the solver as they provide less favorable stiffness-to-weight ratios. I have recreated the resulting MBB beam topology from the previous blog post below.

*Recreation of the optimized MBB beam.*

In this figure, black indicates a material with a user-defined Young’s modulus of *E _{0}*. Meanwhile, white corresponds to zero stiffness, indicating that there should be no material.

Let’s now move on to our discussion of acoustic topology optimization, where we have a frequency-dependent solution with wave propagation in an acoustic media. The design variable is now related to the physics of acoustics. Instead of having a binary *void-material* distribution of material, our goal is to have a binary *air-solid* distribution, where “solid” refers to a fluid with a high density and bulk modulus, which emulates a solid structure.

We define four parameters that describe the inertial and compressional behavior of the standard medium and the “solid” medium: Air is given a density of and a bulk modulus of *K _{1}*, and the “solid” medium has a higher density of and a higher bulk modulus of

\rho(\chi) = \left\{ \begin{array}{ll}\rho_2\ \textrm{for}\ \chi=1 \\ \rho_1\ \textrm{for} \ \chi=0 \end{array} \right.

and

K(\chi) = \left\{ \begin{array}{ll}K_2\ \textrm{for}\ \chi=1\\K_1\ \textrm{for}\ \chi=0 \end{array} \right..

The easiest way to obtain these characteristics is by linear interpolation between the two extreme values. This is not necessarily the best approach since intermediate values of will not be penalized and therefore the optimal design may not be binary. As such, it will not be feasible to manufacture. In the literature alternative, interpolation schemes are given. In the cases presented here, the so-called rational approximation of material properties (RAMP) interpolation is used (see Ref. 1).

Just as with structural optimization, we define a design domain where the material distribution can take place, while simultaneously satisfying the constraints. An area or volume constraints can be defined via the design variable. For example, an area constraint on the design domain can be stated as an *inequality constraint*

\int^{}_{\Omega_d} \chi d \Omega_d \leq S_r

where *S _{r}* is an area ratio between the area of the design that is assigned solid properties and the entire design domain.

Let’s first take a look at a silencer (or “muffler”) example. For simplicity, we limit ourselves to a 2D domain. A typical measure used when characterizing a silencer is the so-called transmission loss, denoted *TL*, which is a measure of power input to power output:

TL = 10 \log_{10} \left(\frac{W_i}{W_o} \right).

The transmission loss is calculated using the so-called three-point method (see Ref. 2). We use this as our objective function, seeking to maximize it at a single frequency (in this case 420 Hz):

\max_{\chi} TL (420 \text {Hz}).

Two design domains are defined above and below a tubular section. The design domain is constrained in such a way that a maximum of 5% of the 2D area is the structure and thus 95% must be air:

\int^{}_{\Omega_d} \chi d \Omega_d \leq 0.05.

The initial state for the design domain is 100% air, i.e., . The animation below shows the evolution from the initial state to the resulting topology.

*An animation depicting the evolution from the initial state to the optimized silencer topology.*

The optimized structure takes on a “double expansion chamber” (see Ref. 3) silencer topology. The transmission loss has increased by approximately 14 dB at the target frequency, as illustrated in the plot below. However, at all frequencies other than the target frequency, the transmission loss has also changed, which may be of great importance for the specific application. Therefore, a single-frequency optimization may not be the best choice for the typical design problem.

*Transmission loss for the initial state and optimized silencer.*

Shifting gears, let’s now look at how to optimize for two objective functions and two frequencies. Here, we again consider a 2D room with three hard walls and a pressure input at the left side of the room. The room also includes two objective areas, *Ω _{1}* and

- Minimize the sound pressure level at a frequency
*f*and_{1} - Minimize the sound pressure level at a frequency
*f*_{2}= 1.5 f_{1}

with the circular design domain *Ω _{d}* and an area constraint that is 10% structure. The initial state is , making the design domain 100% air.

*A square 2D room with a circular design domain and two objective domains.*

With more than one objective function, we must make some choices regarding the relative weights, or importance, of the different objectives. In this case, the two objectives are of equal weight in importance, and the problem is stated as a so-called *min-max* problem:

\begin{align}

\min_{\chi} \max_{f_1 f_2} SPL_i (\chi, f_i) \\

\text {subject to} \int^{}_{\Omega_d} \chi d\Omega_d \leq 0.1.

\end{align}

\min_{\chi} \max_{f_1 f_2} SPL_i (\chi, f_i) \\

\text {subject to} \int^{}_{\Omega_d} \chi d\Omega_d \leq 0.1.

\end{align}

The figures below show the optimized topology (blue) along with the sound pressure for both frequencies using the same pressure scale. Note how the optimized topology results in a low-pressure zone (green) appearing in the upper-right corner at the first frequency. At the same time, this optimized topology ensures a similar low-pressure zone in the lower-right corner at the second frequency. This would certainly be a challenging task if trial-and-error was the only choice.

*Sound pressure for frequency* f_{1} *(left) and for frequency* f_{2} *(right). The optimized topology is shown in blue.*

As a third and final example, we’ll optimize a single objective over a frequency range. A sound source is radiating into a 2D domain, where we initially have a cylindrical sound field. Two square design domains are present, but since there is symmetry, we only consider one half of the geometry in the simulation. In this case, we want a constant magnitude of the on-axis sound pressure of in a point 0.4 meter in front of the sound source. The optimization is carried out in a frequency range of 4,000 to 4,200 Hz (50 Hz steps, a total of five frequencies). We can accomplish this via the Global Least-Squares Objective functionality in COMSOL Multiphysics, with the problem being stated as:

\begin{align}

\min_{\chi} \sum_{i=1}^{5} (\mid p_i (\chi, f_i, 0, 0.4) \mid -\overline{p}_{obj})^2 \\

\text {subject to} \int^{}_{\Omega_d} \chi d\Omega_d \leq 0.1.

\end{align}

\min_{\chi} \sum_{i=1}^{5} (\mid p_i (\chi, f_i, 0, 0.4) \mid -\overline{p}_{obj})^2 \\

\text {subject to} \int^{}_{\Omega_d} \chi d\Omega_d \leq 0.1.

\end{align}

The initial state is again . The optimized topology is shown below, along with the sound field for both the initial state and optimized state.

*Sound pressure for the initial state (left) and optimized state (right) at 4 kHz, with the optimized topology shown in blue within the square design domains.*

Since the sound pressure magnitude in the observation point of the initial state is lower than the objective pressure, the topology optimization results in the creation of a reflector that focuses the on-axis sound. The sound pressure magnitudes before and after the optimization are shown below. The pressure magnitude is close to the desired objective pressure in the frequency range following the optimization.

*The pressure magnitude divided by for the initial and optimized topology.*

Acoustic topology optimization offers great potential for helping acoustic engineers come up with innovative designs. As I have demonstrated today, you can effectively use this technique in COMSOL Multiphysics. With proper formulations of objectives and constraints, it is possible to construct applications with new and innovative topologies — topologies that would most likely not have been found using traditional methods.

I would like to give special thanks to Niels Aage, an associate professor at the Technical University of Denmark, for several fruitful discussions on the topic of optimization.

To learn more about using acoustic topology optimization in COMSOL Multiphysics, we encourage you to download the following example from our Application Gallery: Topology Optimization of Acoustic Modes in a 2D Room.

- M.P. Bendsoe, O. Sigmund,
*Topology Optimization: Theory, Methods, and Applications*, Springer 2003. - T.W. Wu, G.C. Wan, Muffler, “Performance studies and using a direct mixed-body boundary element method and a three-point method for evaluating transmission loss”, Trans. ASME:
*J. Vib. Acoust.*118 (1996) 479-484. - Z. Tao, A.F. Seybert, “A review of current techniques for measuring muffler transmission loss”,
*SAE International*, 2003.

René Christensen has been working in the field of vibroacoustics for more than a decade, both as a consultant (iCapture ApS) and as an engineer in the hearing aid industry (Oticon A/S, GN ReSound A/S). He has a special interest in the modeling of viscothermal effects in microacoustics, which was also the topic of his PhD. René joined the hardware platform R&D acoustics team at GN ReSound as a senior acoustic engineer in 2015. In this role, he works with the design and optimization of hearing aids.

]]>

Kidneys serve an important function in the body by helping to remove excess waste and fluid from the blood. When permanent kidney failure known as *end-stage renal disease* (ESRD) transpires, these organs stop functioning at a level that is necessary for day-to-day living. To replace the function of healthy kidneys, patients are kept on dialysis. This form of treatment involves transferring a patient’s blood through a machine that cleans the blood and then recirculates it back into the body.

For dialysis to take place, vascular access is necessary. The most common method for providing vascular access is the arteriovenous fistula (AVF), a direct surgical connection between the arterial and venous sides of the vasculature that is performed in the arm. Another form of vascular access that is also growing in use is the brachiocephalic fistula (BCF), which involves joining the brachial artery with the cephalic vein near the elbow.

BCF often encounters high failure rates due to neointimal hyperplasia (NH) and eventual stenosis in the curved portion of the vein known as the *cephalic arch*. This is caused by dramatic increases in blood flow rates through the cephalic vein following fistula creation — rates that are an order of magnitude higher than normal physiological levels.

The onset of NH is an attempt by the cephalic vein to alter its shape in order to mitigate the effects of the higher blood flow rate after the fistula is placed. NH is, in particular, a physiological response to the low wall shear stresses (WSS) that happen locally within the curved portion of the cephalic vein due to the occurrence of recirculation regions. However, unable to adapt to the extreme hemodynamic conditions, stenosis commonly occurs. Stenosis can lead to thrombosis and/or the inability for the BCF to provide sufficient access for continued dialysis.

*Top: A healthy vessel wall. Bottom: A vessel wall with NH.*

In order to investigate the mechanisms behind BCF failure and develop methods to improve clinical outcomes, mechanical engineers from the Illinois Institute of Technology are collaborating with clinicians at the University of Chicago Medical Center. Patient-specific data is obtained clinically, with correlating geometric and CFD models developed in COMSOL Multiphysics.

At various intervals following vascular access surgery, the team records and processes the venous deformation and hemodynamics for each of the over 100 individual patients. The CFD results provide detailed patient-specific hemodynamic data that is used to explain the impact of the high flow rates through the cephalic arch, with particular attention paid to the onset of WSS regions that are below normal physiological values.

The team couples shape optimization with the CFD Module to test the hypothesis that low WSS leads to geometric changes via NH and stenosis. Such an approach also allows them to avoid having to implement a first-principles model of the underlying biochemical factors that enable such processes. The objective is to determine the vessel shape that comes closest to bringing the WSS values throughout the cephalic vein back within the normal physiological range, thereby mimicking the body’s attempt to do so through NH. The figure below depicts the CFD results for a particular patient, where the vessel wall regions marked in red are those for which the WSS is below the normal physiological range, therefore susceptible to NH.

*Simulation results for an actual patient-specific flow field after vascular access surgery. The interval shown here is 12 months post surgery.*

*A streamfunction plot superimposed on low WSS distribution.*

Further, the researchers are coupling BOBYQA, a gradient-free optimization method in COMSOL Multiphysics, with the CFD Module to evolve the shape of the vessel in such a way that would redistribute the WSS along the walls and readjust the blood flow rate back to a normal physiological range. Through this coupling, they are seeking to predict the evolution of the shape of the cephalic vein for patient-specific geometries, focusing on the end result. When compared to clinical data, their results have proven to be accurate in their predictions of both favorable and unfavorable adaptions of the vein. This proves that, from a topographical point of view, optimization of the shape of the vessel can capture the deformations of the vasculature that are driven by hemodynamic factors when the right cost functions and constraints are considered.

*A coupled CFD and shape optimization prediction.*

*An actual failed vascular access matching the results of the patient-specific prediction. The stenotic deformation in the arch section of the vein is evident for this patient.*

The research findings, which were presented at the VI International Conference on Computational Bioengineering and the 68^{th} American Physical Society Annual Division of Fluid Dynamics meeting last fall, have helped to create a framework for forecasting vascular access failure and making patient-specific decisions. It offers new potential in modifying current vascular access techniques to enhance their functionality and, in that process, can also increase the life expectancy for ESRD patients.

*Editor’s note on 10/26/16: Javid Mahmoudzadeh, a member of the research team, led a talk on this simulation research at an event this past August. You can watch his presentation here.*

- Our Application Gallery features a number of CFD tutorials designed to inspire and guide you in your own modeling processes. You can browse them here.
- Interested in learning more about shape optimization? Be sure to check out these blog posts:

As engineers, researchers, and scientists, we are always striving to come up with improved designs. *Optimization* is the idea of altering model inputs, such as part dimensions and material properties, with the objective of improving some metric, while also considering a set of constraints. The Optimization Module in COMSOL Multiphysics is a useful tool for addressing such problems.

Dimensional optimization is one of the more common optimization techniques. The approach involves changing CAD dimensions directly to minimize mass, as illustrated in our Multistudy Optimization of a Bracket tutorial. In the bracket example, we use so-called *gradient-free techniques* to adjust dimensions and consider constraints on the relationships between the dimensions, the peak stress, and the lowest natural eigenfrequency. These techniques are very flexible in the type of objective functions and constraints that can be addressed. However, one drawback to these techniques is having to remesh the part repeatedly to numerically approximate the sensitivities of the objective function and constraints with respect to the design variables.

As we have previously discussed on the blog, it is also possible to analytically compute the design sensitivities due to geometric changes when using the *Deformed Geometry* interface. Further, the gradient-based solvers can use the sensitivities to optimize the dimensions of a part without remeshing — an element that we highlighted in the design of a capacitor. It is helpful to review the two blog posts referenced here to understand the functionality that we will use today.

Shape optimization is an extension of the previously developed concepts, and it considers not just straightforward dimensional changes, but general changes in shape as well. The shape of the structure is controlled via a set of design parameters that use a set of basis functions, which can describe quite arbitrary shapes. Let’s take a look at an example.

We begin with a classical shape optimization problem: adjusting the thickness of a cantilevered beam to minimize the mass, while maintaining a constraint on the peak deflection of the free end. The beam of initially uniform thickness has a nonuniform load distributed over its top surface, as shown in the diagram below.

*A cantilevered beam with a nonuniform load applied. Point A should not deflect more than a specified value. The mesh is also shown.*

First, we want to choose our design variables. Both the length of the beam and the thickness at the cantilevered end are fixed. What we can vary is the thickness of the beam along the length. It is somewhat simpler to vary the change in the thickness from the initial configuration. Instead, we introduce a function, , which is initially zero along the length.

*The optimization problem studies a change in the thickness of the beam.*

Here, we choose to represent the change in thickness via a set of Bernstein polynomials of the fourth order:

DT(\bar X)=T_0\left[C_0 (1-\bar X)^4 + C_1 \bar X (1-\bar X)^3 + C_2 \bar X^2 (1-\bar X)^2 +C_3 \bar X^3 (1-\bar X)^1 +C_4 \bar X^4\right]

expressed in terms of the normalized dimension: . Note that the function is scaled such that the polynomial coefficients have an order of magnitude near unity. Again, we do this for scaling purposes.

Since the thickness of the beam at is specified, , fixing so that the term can be omitted. At the far end, we add the constraint that the beam cannot become too thin: .

In the intermediate region, we would also like to add some constraints to further limit the design space. We could add the constraint that . The constraint, however, has a drawback: It would allow the thickness of the beam to oscillate and, from first principles, we know that this is not reasonable. There is no advantage to having the thickness of the beam *increase* along the length. We can instead add a constraint on the derivative: . This forces the thickness of the beam to change monotonically along the length and has the added advantage of naturally satisfying the constraint: .

There is one more constraint to consider: the displacement of the point at the end of the beam. We want the magnitude of the displacement of point to be less than some specified value, . With such information, we now have a complete optimization problem:

\begin{aligned}& \underset{C_1 \cdots C_4}{\text{minimize:}}& Mass/M_0 \\& \text{subject to:}& C_4 < 0.9 \\& & |\mathbf{u}_A/u_{max}| < 1\end{aligned}

Here, the normalization of the objective function with respect to the initial mass of the beam, , is done to scale the objective function so that it is of order unity. Similarly, the magnitude of the displacement of the beam tip, , is normalized with respect to the peak permissible displacement, . The normalized displacement should be less than one. Let’s now look at implementing such a problem in COMSOL Multiphysics using the Optimization Module.

We can begin with our initial design, simply a beam of fixed length and uniform thickness. The design is cantilevered at one end, with a nonuniform load across the top face that varies as . We want to first introduce the change in the thickness function. The polynomial function described earlier is the variable **DT**, as shown in the screenshot below. The expression **Xg** refers to the *x*-dimension of the original, undeformed geometry. The derivative of this function, with respect to the normalized *x*-direction, is the variable **dDTdX**. Two *Global Parameters*, **L0** and **T0**, define the length and maximum thickness.

*A screenshot showing the change in the thickness function and its derivative.*

The change in the thickness variable is used within the *Deformed Geometry* interface to define how the entire volume of the beam is altered with a change in thickness. Since it is only the thickness that changes, a simple linear mapping can be used, as illustrated below.

*The displacement within the beam is completely prescribed.*

We can now set up the optimization problem via the *Optimization* interface. The interface provides an easy way of setting up more complicated optimization problems with several constraints. The relevant settings are shown in the screenshots below, starting with the objective function. The *Integral Objective* feature integrates the material density over the modeling domain and normalizes with respect to the initial part mass.

*The optimization objective is to minimize the mass.*

The settings for the *Global Control Variables* feature are shown below. The four variables, **C1**, **C2**, **C3**, and **C4**, have an initial value of zero, which is equivalent to the initial beam shape. The constraint on **C4** is imposed as an upper bound and the scaling of all variables is unity.

*The definitions of the control variables, their bounds, and scaling.*

Next, we apply the *Pointwise Inequality Constraint* feature to the bottom boundary of the domain. This feature enforces that the derivative of the displacement function remains positive at every point, thereby ensuring a monotonically increasing function.

*The constraint on the derivative along the length of the beam is enforced via a pointwise inequality constraint.*

Finally, the peak displacement of the point at the far end of the beam is constrained so that it is below a maximum specified value. This value is set via the *Point Sum Inequality Constraint* feature.

*The implementation of the constraint on the normalized peak displacement.*

Our optimization problem is now almost entirely set up. The only remaining step is to add an *Optimization* feature to the study sequence and to select the gradient-based SNOPT solver, which proves to be the fastest approach to our problem. All other settings can be left at their default values. The objective function and constraints are automatically taken from the *Optimization* interface.

*The relevant optimization solver settings.*

The results are depicted in the image below. The optimal shape within this basis has been identified. The displacement at the tip is at its maximum value, with the thickness monotonically changing along the length. Due to the expected deformation of the geometry, a mapped mesh was used.

*The optimized shape of the beam, which minimizes mass for the applied nonuniform load and constraints. The displacement field is plotted along with the applied load distribution and the mesh.*

We may ask ourselves how we know that the above structure is truly optimized. There is always the urge to perform a mesh refinement study, trying out finer and finer meshes to see how the solution converges. It is also reasonable to study convergence with respect to basis functions. We can use a higher-order Bernstein basis function and compare the results. This, however, can lead to a problem known as *Runge’s phenomenon*, along with slow convergence.

We can circumvent such issues by subdividing the original interval into multiple subintervals, using different lower-order shape functions within each interval (a piecewise polynomial). Other basis functions beyond the Bernstein basis can also be applied, such as the Chebyshev polynomials and the Fourier basis. The Optimizing the Shape of a Horn tutorial, available in our Application Gallery, features an example of the latter instance.

The cases discussed here include quite simple deformations. When considering more complicated deformations, you will need to put more effort into defining the deformation mapping. For very complicated deformations, it is also useful to add helper equations in order to compute the deformation.

If you have any questions about using these shape optimization techniques or are interested in adding the Optimization Module to your suite of modeling tools, please contact us.

]]>

Let’s begin by referring back to a previous blog post on the computation of design sensitivities that shows how we can use the *Deformed Geometry* interface and the Sensitivity study to analytically evaluate the design sensitivities of a parallel plate capacitor. For that problem, we computed the change in the capacitance with respect to geometric and material property variations. We also computed the design sensitivities to geometric changes without altering the geometry or performing any remeshing. We now want to use that same framework to change the geometry of our capacitor with the objective of minimizing a particular quantity by using the functionality of the Optimization Module.

We start with a simple extension to the previous example: a parallel plate capacitor of side length with two dielectrics, , each of the same initial thickness, . Further, we will neglect all fringing fields. This lets us model only the region between two parallel plates so that our computational model looks just like the figure shown below.

*Schematic of a parallel plate capacitor with two dielectrics between the plates. Fringing fields are ignored.*

This model can be built by sketching two geometric blocks of dimensions as described above. The *Electrostatics* physics interface allows us to apply a voltage and a *Ground* condition at the top and bottom faces as well as apply material dielectric properties. It is possible to compute the capacitance by integrating the electric energy density, as described in the previously mentioned blog post, and get a value of .

Now, let’s suppose that we want to design a 100 pF capacitor by changing the thicknesses of the two layers, without altering the overall dimensions of the device. This can be posed as an optimization problem:

\begin{aligned}& \underset{dT}{\text{minimize:}}& & \left( \frac{C_{computed}}{100\ pF}-1\right)^2 \\& \text{subject to:}& & -T_0 > dT >T_0\end{aligned}

That is, we want to get the capacitance to be as close to 100 pF as possible by varying the change in the dielectric thicknesses within limits such that neither dielectric is of zero thickness. The design parameter is the changing in the thicknesses of the two layers, as shown above. The objective function itself is formulated such that the absolute magnitude is on the order of unity. For numerical reasons, this form is preferred over or the absolute value function: .

We can begin by defining the variation of the thickness of the dielectric layers using the *Deformed Geometry* interface. The *Deformed Geometry* interface is necessary because we want to compute the analytic sensitivities without having to remesh the geometry as we change the dimensions. Since we will be changing the sizes of the two dielectrics, we want to define these deformations as completely as possible. We will do this with a *Prescribed Deformation* domain feature, as shown in the screenshot below.

The capacitor itself is originally sketched such that it is centered at the origin so the original, undeformed part has a coordinate system: **(Xg,Yg,Zg)**. For this simple Cartesian geometry, we can use this coordinate system to directly define the deformation as the thicknesses of the dielectric layers are changed. The deformations of the bottom and top layer are **dT*(1+Zg/T0)** and **dT*(1-Zg/T0)**, respectively, where **dT** and **T0** are *Global Parameters*.

*The change in the thicknesses of the dielectric layers is controlled with a* Prescribed Deformation *feature.*

Next, let’s look at the optimization user interface. For this simple problem, we can just add an *Optimization* feature to our study sequence, as shown in the screenshot below.

This minimization problem statement and scaling can be implemented entirely within the *Optimization* study node, as shown in the screenshot below. The relevant settings are the *Objective Function*, which is the expression **(C_computed/100[pF]-1)^2**, and the *Control Parameter*, **dT**, which has an initial value of **0[m]**. The upper and lower limits are specified to prevent zero, or negative, thicknesses. Lastly, we apply a scaling to , the design parameter, based upon the original thickness, , such that the optimized value will have an order of magnitude near unity.

*The optimization solver settings.*

The SNOPT method is used to solve the optimization problem. Both the SNOPT and MMA methods use the analytically computed sensitivities, but SNOPT converges the fastest to within the default tolerance of 1E-6. The resultant device capacitance is 100 pF and the thickness of the dielectrics is D_{1} = 0.1542 m and D_{2} = 0.0458 m. The voltage field in the original model and the optimized structure are shown below, along with the finite element mesh. Observe that the finite element mesh is stretched and compressed, but that no remeshing has occurred.

*The original and final structure. The voltage field and mesh are shown.*

We’ve looked at a fairly straightforward example of shape optimization, although with a little more effort, we could have found the solution to this problem by hand or by performing a parametric sweep. The geometric deformation demonstrated here is also quite simple. As you consider more complex geometries and more complex geometric changes, you will not always be able to directly use the undeformed spatial coordinates to define the deformation. In such cases, you will need to add equations to the model to help define the deformation. Of course, you may also want to consider more complex deformations, not just simple dimensional changes. We will cover this topic in an upcoming blog post on optimization.

In the meantime, if you have any questions about this technique and would like to use the Optimization Module for your design needs, please contact us.

]]>

Since 3D printing first emerged as a technology, its impact has been felt across a wide range of industries. Take automotive manufacturers, for instance. 3D printing capabilities have extended the freedom of vehicle design, enabling the development of highly customized parts while saving production time and costs. Within the medical field, the technology has led to greater innovation in the design of customized implants and devices as well as the creation of exact replicas of organs.

*A 3D printer creates a product component.*

Additive manufacturing, as we can see, is already making its mark as an efficient approach to product development. As the technology continues to advance, new freedom and flexibility is emerging, furthering its applications. One particular area of promise is the field of material design.

Material design typically tailors fine-scale structures organized in a repeating pattern to create a product with optimal performance. Depending on the requirements, the design of a single microstructure, otherwise known as a unit cell, can range from a simple monolithic geometry to a complex multimaterial geometry. In theory, the complexity, and thus the design freedom of the unit cell, is only limited by the creativity of the designer and the manufacturing capabilities.

Traditionally, 3D printing has only been capable of printing a single material product. Now, recent developments in 3D printing are showing potential for the multimaterial printing of small-scale structures. Such capabilities would provide designers with a finer control over the microstructures, with the option to combine and customize the microstructures based on their specific needs. Further, engineers would be able to select the proportion and arrangement of the individual materials included in the structure.

Researchers at TNO are using multiscale modeling and multiphysics simulation to investigate virtual material design in 3D printing. In the next section, we’ll take a closer look at their innovative research.

To begin their simulation studies, the team first designed a single unit cell with twice the stiffness in one direction as the other and analyzed the material behavior for a given geometry. The optimization capabilities in COMSOL Multiphysics allowed them to derive the appropriate value of stress corresponding to an applied strain, so as to fit their desired stiffness matrix. The simulation results were verified with a printed sample tested for the expected material behavior.

*Left: Unit cell geometry. Center: Mechanical stress for the optimized design. Right: The 3D-printed samples.*

The researchers then performed a similar study on a highly anisotropic material. In the simulation, both the spatial distribution of the material and the orientation of the anisotropic fibers could be controlled.

Speaking to the research team’s greater goal, the simulation was extended to microstructures made up of a combination of different materials. The composition and arrangement of the various materials in the structure were adjusted until the optimal level of thermal conductivity was achieved.

*The multimaterial composition for the ideal anisotropic thermal conductivity. The color white indicates regions of high conductivity, orange represents regions of low conductivity, and red depicts nonconductive material and voids.*

After optimization at the microlevel, the team at TNO focused on optimization for objects of a larger scale. While a necessary step for developing actual products, extending the results of the microstructure simulations to real-life sizes can be quite computationally expensive. Multiscale modeling provides a solution, allowing designers to simulate at the micromaterial and product scales simultaneously. The team extracted parameters for the effective structural behavior of several multimaterial cells, which could then be applied as input in the full-scale model of a device.

While topology optimization is a powerful tool for creating designs for 3D printing, there are also limitations to address for specific additive manufacturing techniques. In selective laser melting (SLM), for example, powdered material is melted into a desired shape via a laser beam. The powder that is not used must be removed from the printed object afterward, and large overhangs are not conducive to SLM designs as they have the tendency to warp.

To address such issues, the research team designed unit cells featuring different densities and then combined them to create the desired properties at the product level. Various techniques were combined in COMSOL Multiphysics, from stiffness homogenization for individual unit cell types to topology optimization at the product scale. The procedure as a whole was later applied to the development of a polymer hammer handle, shown below. The design was comprised of different unit cell types at the microlevel and optimized for proper stiffness and minimal material use.

*Left: Topology optimization simulation results. Center: Optimized hammer handle design. Right: Pattern containing multiple cell types. The densest cells, with small holes, are located near the top, and the least dense cells are located near the bottom. A few intermediate shapes can be found in between these areas.*

As the researchers at TNO demonstrated, the current limitations of additive manufacturing can be effectively addressed with multiscale modeling and multiphysics simulation. Such advancements help to extend the power and reach of 3D printing beyond conventional techniques. This enables the development of new and more complex products, further spreading the benefits of 3D printing technology.

- Read more about TNO’s simulation research on page 22 of
*COMSOL News*2015 - Browse additional blog posts on the topic of 3D printing

Think about the first architects who designed a bridge above water. The design process likely included several trials and subsequent failures before they could safely allow people to cross the river. COMSOL Multiphysics and the Optimization Module would have helped make this process much simpler, if they had computers at the time, of course. Before we start to discuss building and optimizing bridges, let’s first identify the best design for a simple beam with the help of topology optimization.

In our structural steel beam example, both ends of the beam are on rollers, with an edge load acting on the top of the middle part. The beam’s dimensions are 6 m x 1 m x 0.5 m. In this case, we stay in the linear elastic domain and, due to the dimensions, we can use a 2D plane stress formulation. Note that there is a symmetry axis at x = 3 m.

*Geometry of the beam with loads and constraints.*

Using the beam geometry depicted above, we want to find the best compromise between the amount of material used and the stiffness of the beam. In order to do that we need to convert this into a mathematically formal language for optimization. Every optimization problem consists of finding the best design vector , such that the objective function is minimal. Mathematically, this is written as .

The design vector choice defines the type of optimization problem that is being solved:

- If is a set of parameters driving the geometry (e.g., length or height), we are talking about
*parametric optimization*. - If controls the exterior curves of the geometry, we are talking about
*shape optimization*. - If is a function determining whether a certain point of the geometry is void or solid, we are talking about
*topology optimization*.

Topology optimization is applied when you have no idea of the best design structure. On the one hand, this method is more flexible than others because any shape can be obtained as a result. On the other hand, the result is not always directly feasible. As such, topology optimization is often used in the initial phase, providing guidelines for future design schemes.

In practice, we define an artificial density function , which is between 0 and 1 for each point of the geometry. For a structural mechanics simulation, this function is used to build a penalized Young’s modulus:

E(X)= \rho_{design} (X) E_0

where is the true Young’s modulus. Thus, = 0 corresponds to a void part and = 1 corresponds to a solid part.

As mentioned before, in regards to the objective function, we want to maximize the stiffness of the beam. For structural mechanics problems, maximizing the stiffness is the same as minimizing the compliance. In terms of energy, it is also equivalent to minimizing the total strain energy defined as:

\displaystyle Ws_{total}=\int_\Omega Ws \ d\Omega=\int_\Omega \frac{1}{2} \sigma: \varepsilon\ d\Omega

Our topology optimization problem is thus written as:

\min_{\rho_{design}}\int_\Omega \frac{1}{2} \sigma (\rho_{design}): \varepsilon\ d\Omega

Now that our optimization problem has been defined, we can set it up in COMSOL Multiphysics. In this blog post, we will not detail the solid mechanics portion of our simulation. There are, however, several tutorials from our Structural Mechanics Module that help showcase this element.

When adding the *Optimization* physics interface, it is possible to define a *Control Variable Field* on a domain. As a first discretization for , we can select a constant element order. This means that we will have one value of through all the mesh elements.

After this step is completed, a new Young’s modulus can be defined for the structural mechanics simulation, such as .

As referenced above, the objective function is an integration over the domain. In the *Optimization* interface, we select *Integral Objective*. The elastic strain energy density is a predefined variable named *solid.Ws*. Thus, the objective can be easily defined as .

Our discussion today will not focus on how optimization works in practice. Basically, the optimization solver begins with an initial guess and iterates on the design vector until the function objective has reached its minimum.

If we run our optimization problem, we get the results shown below.

*Results from the initial test.*

The solution is trivial in order to maximize the stiffness. The optimal solution shows the full amount of the original material!

After this initial test, we can conclude that a mass constraint is necessary if we want to make the optimization algorithm select a design. With a constraint of 50 percent, this could be written as:

\int_\Omega \rho \leq 0.5M_0 \Leftrightarrow \int_\Omega \rho_{design} \leq 0.5V_0

In COMSOL Multiphysics, a mass constraint can be included by adding an *Integral Inequality Constraint*. Additionally, the initial value for needs to be set to 0.5 in order to respect this constraint at the initial state.

Let’s have a look at the results from this new problem, which are illustrated in the following animation.

*Results with the addition of a mass constraint.*

While this result is better, a problem remains: We have many areas with intermediate values for . For the design, we only need to know if a given area is void or not. In order to get mostly 1 or 0 for the , the intermediate values must be penalized. To do so, we can add an exponent p in the penalized Young’s modulus expression:

E(X)=(\rho_{design})^p E_0

In practice, p is taken between 3 and 5. For instance, if p = 5 and = 0.5, the penalized Young’s modulus will be . The contribution for the mass constraint, meanwhile, will still be 0.5. As such, the optimization algorithm will try lending to 0 or 1 for the design vector.

With our new penalized Young’s modulus, we get the following result.

*Results with the new penalized Young’s modulus.*

A beam design has started to emerge! There is, however, a problematic checkerboard design, one that seems to be highly dependent upon the chosen mesh. In order to avoid the checkerboard design, we need to control the variations of in space. One way to estimate variations of a variable field is to compute its derivative norm integrated on the whole domain:

\int_\Omega |\nabla \rho_{design}|^2 \ d\Omega

A new question arises: How can we minimize both the variation of and the total strain energy?

Since a scalar objective function is necessary, these objectives must be combined. We can think about adding them, but first, the two expressions need to be scaled to get values around 1. Concerning the stiffness objective, we simply divide by , which is the value of the total strain energy when is constant. In regards to the regularization term, we can take the following scaling factor , where is the maximum mesh size, is the expected size of details in the solution, and is the area of the design space. Our final optimization problem is now written as:

\min_{\rho_{design}} \ \ {(1-q)\int_\Omega \frac{Ws}{Ws0} \ d\Omega + q\frac{h_0 h_{max}}{A}\int_\Omega |\nabla \rho_{design}|^2 \ d\Omega}

s.t. ~ \int_\Omega ρ_{design} \leq 0.5V_0

where the factor controls the regularization weight.

Finally, the discretization of needs to be changed to Lagrange linear elements to enable the computation of its derivative.

By solving this final problem, we obtain results that offer helpful insight as to the best design structure for the beam.

*Results with regularization.*

Such a design scheme can be seen at different scales in the real world, as illustrated in the bridge below.

*A warren-type truss bridge. Image in the public domain, via Wikimedia Commons.*

Now that we have set up our topology optimization method, let’s move on to a slightly more complicated design space. We want to answer the question of how to design a bridge above water. To do so, a road zone in the geometry must be defined where the Young’s modulus is not penalized.

*Design space for a through-arch bridge.*

After a few iterations, we obtain a very good result for the through-arch bridge, one that is quite impressive. Such a result could provide architects with a solid understanding of the design that should be used for the bridge.

*Topology optimization results for a through-arch bridge.*

While the mathematical optimization algorithm had no guidelines on the particular design scheme, the result depicted above likely brings a real bridge design to mind. The Bayonne Bridge, shown below, is just one example among many others.

*The Bayonne Bridge. Image in the public domain, via Wikimedia Commons.*

It is important to note that this topology optimization method can be used in the exact same way for 3D cases. Applying the same bridge design question, the animation below shows a test in 3D for the design of a deck arch bridge.

*3D topology optimization for a deck arch bridge.*

Here, we have described the basics of using the topology optimization method for a structural mechanics analysis. To implement this method on your own, you can download the Topology Optimization of an MBB Beam tutorial from our Application Gallery.

While topology optimization may have initially been built for a mechanical design, the penalization method can also be applied to a large range of physics-based analyses in COMSOL Multiphysics. Our Minimizing the Flow Velocity in a Microchannel tutorial, for instance, provides an example of flow optimization.

- “Optimal shape design as a material distribution problem”, by M.P. Bendsøe.
- Topology Optimization: Theory, Methods, and Applications, by M.P. Bendsøe and O. Sigmund.

With gas prices and environmental concerns on the rise, a heightened demand for energy efficient vehicles has emerged in recent years. In response to this growing demand, the automotive industry has turned to alternate design approaches for automobiles, one of which is using lightweight materials.

Compared to their heavier counterparts, lightweight automobiles not only feature a simplified design structure, but they are also more energy efficient. In fact, according to the Office of Energy Efficiency & Renewable Energy, reducing vehicle weight by 10% can lead to a fuel economy improvement of up to 8%.

While the lightest weight possible is ideal, designers and engineers must ensure that reducing the weight of a vehicle’s component does not impact its structural integrity. These lighter components must still be able to perform their designed function efficiently and resist failure. Using the example of a mounting bracket, we will demonstrate how simulation can help develop an optimal design that meets such requirements.

The Multistudy Optimization of a Bracket tutorial, available in our Application Gallery, features a bracket made of steel that supports a mounted component. When compared to the bracket, the mounted component can be observed as rigid.

*The bracket (shown in gray) supports a heavy component (shown in yellow).*

Because the bracket mounts the heavy component on a vibrating foundation, it is important that the natural frequency is maintained well above the excitation frequency. This will help avoid resonances. The shock loads that are applied to the bracket can be treated as a static acceleration load. The result? An optimization problem where our objective is to reduce the weight of the bracket, which is subjected to constraints on the natural frequency, maximum stress due to shock loads, and material dimensions. This means that the optimization problem should be solved over two different types of analyses: eigenfrequency and stationary.

To reduce the weight of the bracket, we drill holes into its vertical surface. At the same time, to offset the loss in stiffness, we alter the dimensions of the indentations. Six different geometrical parameters, summarized in the figure below, are included in the optimization.

*Geometrical parameters used in the bracket’s structural optimization.*

A series of geometrical constraints are applied to our simulation to ensure that the bracket geometry remains feasible. They are the following:

- The lowest natural frequency must be a minimum of 60 Hz
- The effective stress cannot exceed 80 MPa when exposure to a peak acceleration of 4g occurs in all three global directions at once
- There needs to be a minimum of 3 mm of material between two holes or a hole and an edge

The optimal geometrical parameters for our lightweight bracket are illustrated below. As you can see, three small holes have been introduced into the geometry. In its optimized state, the bracket weighs 178 g, which is 27 g less than its original weight.

*Initial optimization geometry.*

Let’s now shift focus to addressing our constraints, particularly the shock load applied to the bracket. Looking at the results in the plot below, we can see that the stress is less than 80 MPa on the entire geometry. As such, this bracket design successfully meets its stress constraint, balancing weight reduction with functionality.

*The stress from a shock load (peak acceleration) on the optimized bracket.*

While the optimal solution here includes three rather large holes and the widest indentation possible, note that other possible hole arrangements offer the same degree of weight reduction within a small tolerance. Thus, the design variables may differ at convergence.

- Download the tutorial model: Multistudy Optimization of a Bracket
- Check out the other blog posts within our Optimization category

After obtaining our measured data, the question then becomes this: How can we estimate the material parameters required for defining the hyperelastic material models based on the measured data? One of the ways to do this in COMSOL Multiphysics is to fit a parameterized analytic function to the measured data using the Optimization Module.

In the section below, we will define analytical expressions for stress-strain relationships for two common tests — the *uniaxial test* and the *equibiaxial test*. These analytical expressions will then be fitted to the measured data to obtain material parameters.

Characterizing the volumetric deformation of hyperelastic materials to estimate material parameters can be a rather intricate process. Oftentimes, perfect incompressibility is assumed in order to estimate the parameters. This means that after estimating material parameters from curve fitting, you would have to use a reasonable value for bulk modulus of the nearly incompressible hyperelastic material, as this property is not calculated.

Here, we will fit the measured data to several perfectly incompressible hyperelastic material models. We will start by reviewing some of the basic concepts of the nearly incompressible formulation and then characterize the stress measures for the case of perfect incompressibility.

For nearly incompressible hyperelasticity, the total strain energy density is presented as

W_s = W_{iso}+W_{vol}

where is the isochoric strain energy density and is the volumetric strain energy density. The second Piola-Kirchhoff stress tensor is then given by

S = -p_pJC^{-1}+2\frac{\partial W_{iso}}{\partial C}

where is the volumetric stress, is the volume ratio, and is the right Cauchy-Green tensor.

You can expand the second term from the above equation so that the second Piola-Kirchhoff stress tensor can be equivalently expressed as

S = -p_pJC^{-1}+2\left(J^{-2/3}\left(\frac{\partial W_{iso}}{\partial \bar{I_{1}}}+\bar{I_{1}} \frac{\partial W_{iso}}{\partial \bar{I_{2}}} \right)I-J^{-4/3} \frac{\partial W_{iso}}{\partial \bar{I}_{2}} C -\left(\frac{\bar{I_{1}}}{3}\frac{\partial W_{iso}}{\partial \bar{I}_{1}} + \frac{2 \bar{I}_{2}}{3}\frac{\partial W_{iso}}{\partial \bar{I}_{2}}\right)C^{-1}\right)

where and are invariants of the isochoric right Cauchy-Green tensor .

The first Piola-Kirchhoff stress tensor, , and the Cauchy stress tensor, , can be expressed as a function of the second Piola-Kirchhoff stress tensor as

\begin{align}P& = FS\\

\sigma& = J^{-1}FSF^{T}

\end{align}

\sigma& = J^{-1}FSF^{T}

\end{align}

Here, is the deformation gradient.

Note: You can read more about the description of different stress measures in our previous blog entry “Why All These Stresses and Strains?“

The strain energy density and stresses are often expressed in terms of the stretch ratio . The *stretch ratio* is a measure of the magnitude of deformation. In a uniaxial tension experiment, the stretch ratio is defined as , where is the deformed length of the specimen and is its original length. In a multiaxial stress state, you can calculate principal stretches in the principal referential directions , which are the same as the directions of the principal stresses. The stress tensor components can be rewritten in the spectral form as

S =\sideset{}{^3_{a=1}}

\sum S_{a} \hat{\mathbf{N}_{a}} \otimes \hat{\mathbf{N}_{a}}

\sum S_{a} \hat{\mathbf{N}_{a}} \otimes \hat{\mathbf{N}_{a}}

where represents the principal values of the second Piola-Kirchhoff stress tensor and represents the principal referential directions. You can represent the right Cauchy-Green tensor in its spectral form as

C = \sideset{}{^3_{a=1}}

\sum\lambda_a^2 \hat{\mathbf{N}_a}\otimes\hat{\mathbf{N}_a}

\sum\lambda_a^2 \hat{\mathbf{N}_a}\otimes\hat{\mathbf{N}_a}

where indicates the values of the principal stretches. This allows you to express the principal values of the second Piola-Kirchhoff stress tensor as a function of the principal stretches

S_a = \frac{-p_p J}{\lambda_a^2}+2\left(J^{-2/3}\left(\frac{\partial W_{iso}}{\partial \bar{I_{1}}}+\bar{I_{1}} \frac{\partial W_{iso}}{\partial \bar{I_{2}}} \right) -J^{-4/3} \frac{\partial W_{iso}}{\partial \bar{I}_{2}} \lambda_a^2 -\frac{1}{\lambda_a^2}\left(\frac{\bar{I_{1}}}{3}\frac{\partial W_{iso}}{\partial \bar{I}_{1}} + \frac{2 \bar{I}_{2}}{3}\frac{\partial W_{iso}}{\partial \bar{I}_{2}}\right)\right)

Now, let’s consider the uniaxial and biaxial tension tests explained in the initial blog post in our Structural Materials series. For both of these tests, we can derive a general relationship between stress and stretch.

Under the assumption of incompressibility (), the principal stretches for the uniaxial deformation of an isotropic hyperelastic material are given by

\lambda_1 = \lambda, \lambda_2 = \lambda_3 = \lambda^{-1/2}

The deformation gradient is given by

\begin{array}{c} F = \\ \end{array} \left(\begin{array}{ccc} \lambda &0 &0 \\ 0 &\frac{1}{\sqrt{\lambda}} &0 \\ 0 &0 &\frac{1}{\sqrt{\lambda}}\end{array}\right)

For uniaxial extension , the volumetric stress can be eliminated to give

S_{1} = 2\left(\frac{1}{\lambda} -\frac{1}{\lambda^4}\right) \left(\lambda \frac{\partial W_{iso}}{\partial \bar{I}_{1_{uni}}}+\frac{\partial W_{iso}}{\partial \bar{I}_{2_{uni}}}\right) ,\; P_1 = \lambda S_1\; \sigma_1 = \lambda^2 S_1,\;\;\;\;

The isochoric invariants and can be expressed in terms of the principal stretch as

\begin{align*}

\bar{I}_{1_{uni}} = \left(\lambda^2+\frac{2}{\lambda}\right) \\

\bar{I}_{2_{uni}} = \left(2\lambda + \frac{1}{\lambda^2}\right)

\end{align*}

\bar{I}_{1_{uni}} = \left(\lambda^2+\frac{2}{\lambda}\right) \\

\bar{I}_{2_{uni}} = \left(2\lambda + \frac{1}{\lambda^2}\right)

\end{align*}

Under the assumption of incompressibility, the principal stretches for the equibiaxial deformation of an isotropic hyperelastic material are given by

\lambda_1 = \lambda_2 = \lambda, \; \lambda_3 = \lambda^{-2}

For equibiaxial extension , the volumetric stress can be eliminated to give

S_1 = S_2 = 2\left(1-\frac{1}{\lambda^6}\right)\left(\frac{\partial W_{iso}}{\partial \bar{I}_{1_{bi}}}+\lambda^2\frac{\partial W_{iso}}{\partial \bar{I}_{2_{bi}}}\right),\; P_1 = \lambda S_1,\; \sigma_1 = \lambda^2 S_1\;\;\;\;

The invariants and are then given by

\begin{align*}

\bar{I}_{1_{bi}} = \left( 2\lambda^2 + \frac{1}{\lambda^4}\right) \\

\bar{I}_{2_{bi}} = \left(\lambda^4 + \frac{2}{\lambda^2}\right)

\end{align*}

\bar{I}_{1_{bi}} = \left( 2\lambda^2 + \frac{1}{\lambda^4}\right) \\

\bar{I}_{2_{bi}} = \left(\lambda^4 + \frac{2}{\lambda^2}\right)

\end{align*}

Let’s now look at the stress versus stretch relationships for a few of the the most common hyperelastic material models. We will consider the first Piola-Kirchhoff stress for the purpose of curve fitting.

The total strain energy density for a Neo-Hookean material model is given by

W_s = \frac{1}{2}\mu\left(\bar{I}_1-3\right)+\frac{1}{2}\kappa\left(J_{el}-1\right)^2

where is the elastic volume ratio and is a material parameter that we need to compute via curve fitting. Under the assumption of perfect incompressibility and using equations (1) and (2), the first Piola-Kirchhoff stress expressions for the cases of uniaxial and equibiaxial deformation are given by

\begin{align*}

P_{1_{uniaxial}} &= \mu\left(\lambda-\lambda^{-2}\right)\\

P_{1_{biaxial}} &= \mu\left(\lambda-\lambda^{-5}\right)

\end{align*}

P_{1_{uniaxial}} &= \mu\left(\lambda-\lambda^{-2}\right)\\

P_{1_{biaxial}} &= \mu\left(\lambda-\lambda^{-5}\right)

\end{align*}

The stress versus stretch relationship for a few of the other hyperelastic material models are listed below. These can be easily derived through the use of equations (1) and (2), which relate stress and the strain energy density.

\begin{align*}

P_{1_{uniaxial}} &= 2\left(1-\lambda^{-3}\right)\left(\lambda C_{10}+C_{01}\right)\\

P_{1_{biaxial}} &= 2\left(\lambda-\lambda^{-5}\right)\left(C_{10}+\lambda^2 C_{01}\right)

\end{align*}

P_{1_{uniaxial}} &= 2\left(1-\lambda^{-3}\right)\left(\lambda C_{10}+C_{01}\right)\\

P_{1_{biaxial}} &= 2\left(\lambda-\lambda^{-5}\right)\left(C_{10}+\lambda^2 C_{01}\right)

\end{align*}

Here, and are Mooney-Rivlin material parameters.

\begin{align}\begin{split}

P_{1_{uniaxial}}& = 2\left(1-\lambda^{-3}\right)\left(\lambda C_{10} + 2C_{20}\lambda\left(I_{1_{uni}}-3\right)+C_{11}\lambda\left(I_{2_{uni}}-3\right)\\

& \quad +C_{01}+2C_{02}\left(I_{2_{uni}}-3\right)+C_{11}\left(I_{1_{uni}}-3\right)\right)\\

P_{1_{biaxial}}& = 2\left(\lambda-\lambda^{-5}\right)\left(C_{10}+2C_{20}\left(I_{1_{bi}}-3\right)+C_{11}\left(I_{2_{bi}}-3\right)\\

& \quad +\lambda^2C_{01}+2\lambda^2C_{02}\left(I_{2_{bi}}-3\right)+\lambda^2 C_{11}\left(I_{1_{bi}}-3\right)\right)

\end{split}

\end{align}

P_{1_{uniaxial}}& = 2\left(1-\lambda^{-3}\right)\left(\lambda C_{10} + 2C_{20}\lambda\left(I_{1_{uni}}-3\right)+C_{11}\lambda\left(I_{2_{uni}}-3\right)\\

& \quad +C_{01}+2C_{02}\left(I_{2_{uni}}-3\right)+C_{11}\left(I_{1_{uni}}-3\right)\right)\\

P_{1_{biaxial}}& = 2\left(\lambda-\lambda^{-5}\right)\left(C_{10}+2C_{20}\left(I_{1_{bi}}-3\right)+C_{11}\left(I_{2_{bi}}-3\right)\\

& \quad +\lambda^2C_{01}+2\lambda^2C_{02}\left(I_{2_{bi}}-3\right)+\lambda^2 C_{11}\left(I_{1_{bi}}-3\right)\right)

\end{split}

\end{align}

Here, , , , , and are Mooney-Rivlin material parameters.

\begin{align}

P_{1_{uniaxial}} &= 2\left(\lambda-\lambda^{-2}\right)\mu_0\sum_{p=1}^{5}\frac{p c_p}{N^{p-1}}I_{1_{uni}}^{p-1}\\

P_{1_{biaxial}} &= 2\left(\lambda-\lambda^{-5}\right)\mu_0\sum_{p=1}^{5}\frac{p c_p}{N^{p-1}}I_{1_{bi}}^{p-1}

\end{align}

P_{1_{uniaxial}} &= 2\left(\lambda-\lambda^{-2}\right)\mu_0\sum_{p=1}^{5}\frac{p c_p}{N^{p-1}}I_{1_{uni}}^{p-1}\\

P_{1_{biaxial}} &= 2\left(\lambda-\lambda^{-5}\right)\mu_0\sum_{p=1}^{5}\frac{p c_p}{N^{p-1}}I_{1_{bi}}^{p-1}

\end{align}

Here, and are Arruda-Boyce material parameters, and are the first five terms of the Taylor expansion of the inverse Langevin function.

\begin{align}

P_{1_{uniaxial}} &= 2\left(\lambda-\lambda^{-2}\right)\sum_{p=1}^{3}p c_p \left(I_{1_{uni}}-3\right)^{p-1}\\

P_{1_{biaxial}} &= 2\left(\lambda-\lambda^{-5}\right)\sum_{p=1}^{3}p c_p \left(I_{1_{bi}}-3\right)^{p-1}

\end{align}

P_{1_{uniaxial}} &= 2\left(\lambda-\lambda^{-2}\right)\sum_{p=1}^{3}p c_p \left(I_{1_{uni}}-3\right)^{p-1}\\

P_{1_{biaxial}} &= 2\left(\lambda-\lambda^{-5}\right)\sum_{p=1}^{3}p c_p \left(I_{1_{bi}}-3\right)^{p-1}

\end{align}

Here, the values of are Yeoh material parameters.

\begin{align}

P_{1_{uniaxial}} &= \sum_{p=1}^{N}\mu_p \left(\lambda^{\alpha_p-1} -\lambda^{-\frac{\alpha_p}{2}-1}\right)\\

P_{1_{biaxial}} &= \sum_{p=1}^{N}\mu_p \left(\lambda^{\alpha_p-1} -\lambda^{-2\alpha_p-1}\right)

\end{align}

P_{1_{uniaxial}} &= \sum_{p=1}^{N}\mu_p \left(\lambda^{\alpha_p-1} -\lambda^{-\frac{\alpha_p}{2}-1}\right)\\

P_{1_{biaxial}} &= \sum_{p=1}^{N}\mu_p \left(\lambda^{\alpha_p-1} -\lambda^{-2\alpha_p-1}\right)

\end{align}

Here, and are Ogden material parameters.

Using the *Optimization* interface in COMSOL Multiphysics, we will fit measured stress versus stretch data against the analytical expressions detailed in our discussion above. Note that the measured data we are using here is the *nominal stress*, which can be defined as the force in the current configuration acting on the original area. It is important that the measured data is fit against the appropriate stress measure. Therefore, we will fit the measured data against the analytical expressions for the first Piola-Kirchhoff stress expressions. The plot below shows the measured nominal stress (raw data) for uniaxial and equibiaxial tests for vulcanized rubber.

*Measured stress-strain curves by Treloar.*

Let’s begin by setting up the model to fit the uniaxial Neo-Hookean stress to the uniaxial measured data. The first step is to add an *Optimization* interface to a 0D model. Here, *0D* implies that our analysis is not tied to a particular geometry.

Next, we can define the material parameters that need to be computed as well as the variable for the analytical stress versus stretch relationship. The screenshot below shows the parameters and variable defined for the case of an uniaxial Neo-Hookean material model.

Within the *Optimization* interface, a *Global Least-Squares Objective* branch is added, where we can specify the measured uniaxial stress versus stretch data as an input file. Next, a *Parameter Column* and a *Value Column* are added. Here, we define lambda (stretch) as a measured parameter and specify the uniaxial analytical stress expression to fit against the measured data. We can also specify a weighing factor in the *Column contribution weight* setting. For detailed instructions on setting up the *Global Least-Squares Objective* branch, take a look at the Mooney-Rivlin Curve Fit tutorial, available in our Application Gallery.

We can now solve the above problem and estimate material parameters by fitting our uniaxial tension test data against the uniaxial Neo-Hookean material model. This is, however, rarely a good idea. As explained in Part 1 of this blog series, the seemingly simple test can leave many loose ends. Later on in this blog post, we will explore the consequence of material calibration based on just one data set.

Depending on the operating conditions, you can obtain a better estimate of material parameters through a combination of measured uniaxial tension, compression, biaxial tension, torsion, and volumetric test data. This compiled data can then be fit against analytical stress expressions for each of the applicable cases.

Here, we will use the equibiaxial tension test data alongside the uniaxial tension test data. Just as we have set up the optimization model for the uniaxial test, we will define another global least-squares objective for the equibiaxial test as well as corresponding parameter and value columns. In the second global least-squares objective, we will specify the measured equibiaxial stress versus stretch data file as an input file. In the value column, we will specify the equibiaxial analytical stress expression to fit against the equibiaxial test data.

The settings of the Optimization study step are shown in the screenshot below. The model tree branches have been manually renamed to reflect the material model (Neo-Hookean) and the two tests (uniaxial and equibiaxial). The optimization algorithm is a Levenberg-Marquardt solver, which is used to solve problems of the least-square type. The model is now set to optimize the sum of two global least-square objectives — the uniaxial and equibiaxial test cases.

The plot below depicts the fitted data against the measured data. Equal weights are assigned to both the uniaxial and equibiaxial least-squares fitting. It is clear that the Neo-Hookean material model with only one parameter is not a good fit here, as the test data is nonlinear and has one inflection point.

*Fitted material parameters using the Neo-Hookean model. Equal weights are assigned to both of the test data.*

Fitting the curves while specifying unequal weights for the two tests will result in a slightly different fitted curve. Similar to the Neo-Hookean model, we will set up global least-squares objectives corresponding to Mooney-Rivlin, Arruda-Boyce, Yeoh, and Ogden material models. In our calculation below, we will include cases for both equal and unequal weights.

In the case of unequal weights, we will use a higher but arbitrary weight for the entire equibiaxial data set. It is possible that you may want to assign unequal weights only for a certain stretch range instead of the entire stretch range. If this is the case, we can split the particular test case into parts, using a separate *Global Least-Squares Objective* branch for each stretch range. This will allow us to assign weights in correlation with different stretch ranges.

The plots below show fitted curves for different material models for equal and unequal weights that correspond to the two tests.

*Left: Fitted material parameters using Mooney-Rivlin, Arruda-Boyce, and Yeoh models. In these cases, equal weights are assigned to both test data. Right: Fitted material parameters using Mooney-Rivlin, Arruda-Boyce, and Yeoh models. Here, higher weight is assigned to equibiaxial test data.*

The Ogden material model with three terms fits both test data quite well for the case of equal weights assigned to both tests.

*Fitted material parameters using the Ogden model with three terms.*

If we only fit uniaxial data and use the computed parameters for plotting equibiaxial stress against the actual equibiaxial test data, we obtain the results in the plots below. These plots show the mismatch in the computed equibiaxial stress when compared to the measured equibiaxial stress. In material parameter estimation, it is best to perform curve fitting for a combination of different significant deformation modes rather than considering only one deformation mode.

*Uniaxial and equibiaxial stress computed by fitting model parameters to only uniaxial measured data.*

To find material parameters for hyperelastic material models, fitting the analytic curves may seem like a solid approach. However, the stability of a given hyperelastic material model may also be a concern. The criterion for determining material stability is known as *Drucker stability*. According to the Drucker’s criterion, incremental work associated with an incremental stress should always be greater than zero. If the criterion is violated, the material model will be unstable.

In this blog post, we have demonstrated how you can use the *Optimization* interface in COMSOL Multiphysics to fit a curve to multiple data sets. An alternative method for curve fitting that does not require the *Optimization* interface was also a topic of discussion in an earlier blog post. Just as we have used uniaxial and equibiaxial tension data here for the purpose of estimating material parameters, you can also fit the measured data to shear and volumetric tests to characterize other deformation states.

For detailed step-by-step instructions on how to use the *Optimization* interface for the purpose of curve fitting, take a look at the Mooney-Rivlin Curve Fit tutorial, available in our Application Gallery.