Follow Along: Parametric FE Domains

Transcript

In this follow-along exercise, we’ll discuss meshing considerations and best practices for creating four different parametric FE components: the Parametric Lattice component, the Parametric Shell component, the Parametric Shell Infill component, and the Parametric Foro component. We’ll consider the effects of meshing, namely mesh edge length, on computation time and accuracy in the context of homogenization and other field optimization considerations.

Let’s step back to the beginning of our workflow to take a look at all of the variables that we’ve already created. We started with a CAD bracket import and converted the optimization body to an implicit. Then we created an initial mesh from our CAD body. As we know, this initial mesh often creates surface elements that are too large or too irregular for FAA or optimization. So our first step in creating any FE model is to use a Remesh Surface block.

For our first parametric FE component that we’re working with, the Parametric Lattice component, we want to start with an edge length that’s pretty fine compared to the overall scale of our part. Here we’ll use this variable that we’ve labeled fine Edge length to remesh our initial surface to generate this surface mesh with consistently sized and well-distributed mesh elements.

Then we moved on to creating our volume mesh. Since the Parametric Lattice component uses field homogenization in the background of FO, we’ll create a volume mesh using that same fine Edge length that we used in the fine surface mesh. Now we can distribute our fine Edge length throughout our part to generate our volume mesh.

Finally, we can use this volume mesh in our Parametric Lattice component. We’ll add our discretization to the FE Volume Mesh block and drop it into the Parametric Lattice component block. Note that although we’re making a Parametric Lattice component, we’ll always use an FE volume mesh with a solid volume in any of our parametric FE components.

Within our Parametric Lattice component block is where we’ll add our unit cell boundary behavior and any of our lattice parameters. Like we’ve done in all of our other FE models, we’ll add our material here, in this case, just Stainless Steel 316. Note that for field optimization, we can only optimize isotropic materials.

We’ll add our unit cell, in this case, a Body Centered Cubic, then set our constant cell size. This will be cubic and rectangularly mapped. Next, we’ll set our minimum, maximum, and initial thickness. The implicit view of your Parametric Lattice component will reflect that initial thickness value during field optimization. This initial thickness can also drive how many iterations the FO completes. The closer your initial thickness is to the optimized value, the fewer iterations your field optimization will take to converge.

Setting our boundary behavior to conformal, we’ll pull all of the vertices and open beams from our trimmed lattice to the surface of our input FE volume mesh. If instead we change that boundary behavior to trimmed, we would see sharp lattice cut-offs as if we had used the Trim Lattice block with that initial implicit bracket. By default, the density threshold is set to zero. Maintaining this will fill the entire domain with a lattice. Whereas, similar to topology optimization, if you increase this toward one, the FO process will completely remove less important material, which could result in a part with a slightly different shape that still falls within that initial design domain.

The optional filter size input can give you control over the smoothness of the underlying field during the FO process, similar to the Smoothing Field block. If you leave this input empty, the filter size will be automatically generated based on the size of your part.

Next, let’s take a look at the parametric shell component. Remember, the parametric shell component will be this solid shell with no volume on the inside. Note that although this component is a shell, we’ll need a volume mesh to input into this block just like we did before.

We’ll use that fine surface mesh that we used for our parametric lattice component. Instead of infilling it with fine mesh elements, now we’ll use a Ramp block to create these coarser elements toward the inside of our part. Since the field optimization won’t be sensitive to this material on the inside, we can use a much coarser edge length to mesh this inner volume. If you recall from our course on field-driven design, we can use this Ramp block and an implicit body to drive the edge length throughout our mesh.

Let’s take a look at the scalar field of our implicit bracket. I’ll use the hotkey F to view our field and we can turn off the visibility of our volume mesh for now. We’re setting our max shell thickness to 3 mm, so probing our values on the inside of our part, we can take a look from our surface down to the 3 mm mark. But we see all of these negative values toward the inside, so we’ll set our in Min and our in Max of our Ramp block to -3.

Remember, the inside distances of an implicit body will all be negative and the outer distances will all be positive. So at this distance of -3, we’ll see a transition between our coarse edge length on the inside of our part and our edge length toward the shell. Taking a look at our volume mesh, we see that our resulting mesh has these coarse insides and the fine outer elements. We’ll drop that volume mesh into another FE Volume Mesh block and add it to our parametric shell component block.

Just like before, we’ll add our material, our min and max shell thickness, and our initial shell thickness, remembering that the closer that initial shell thickness is to our optimized shell, the faster our field optimization will run.

Now, let’s take a look at the parametric shell infill component. Since this component also uses homogenization throughout, we’ll use that same fine volume mesh that we used for our initial parametric lattice component to create our parametric shell infill component. Here we’ll set our lattice parameters, in this case, using a TPMS gyroid unit cell, setting our cell size as before, then specifying those optimizable parameters. We’ll set a min and max infill thickness as well as a min and max shell thickness. During our optimization, both of these parameters will be optimized. Again, we’ll add our initial infill and our initial shell thicknesses.

Finally, let’s take a look at our parametric voronoi component. Like we saw in the parametric lattice and the parametric shell infill component, since this will be homogenized throughout, we’ll again use that fine volume mesh. We’ll add our material and our optimizable parameters of cell size and thickness. Note that the voronoi component is the only component in which you can optimize cell size. We’ll set a min and a max and our initial cell size, as well as our min and max thickness and that initial value.

We’ll take a look at our final parametric component and now we can turn our attention to our heads-up display. So far, we’ve been working in our implicit view to visualize the topology of each of these different components. We also have the options to view the property fields, which include relative density, density, Young’s modulus, Poisson’s ratio, and Shear modulus. We can also view state fields to understand the states of the optimizable parameters, in this case, cell size and beam thickness. At this stage, many of those values will be constant, but after the field optimization, we should see gradients in these values.

Now that we’ve considered parametric FE components, let’s review optimization objectives and constraints to build our own field optimization problem.

This lesson discusses the meshing considerations, inputs, and view options for Parametric FE Domains. To follow along with the video, you can download the file below.

Example File:

This file was last updated in nTop 4.16.3

This file was last updated in nTop 4.16.3

Note: In these files, the ‘Initial Surface Mesh’ is set to Manual Run Mode to unbuild blocks and minimize file size.