Answer to Lattice FEA Test Problem
Transcript
In this lesson, we will review the answer to the optional lattice FEA test problem for each of the three methods. The completed files for these are available for download below. We will be reviewing these methods in order from solid elements, beam elements, to homogenization. I will start with a brief overview of what the starting model we have in the starter file looks like. Then, afterwards, you can feel free to skip ahead for the method that is of interest for you. The timestamp for each of the methods will be provided in the description below.
Here, we have this brake pedal part that has been lested, starting with that initial CAD body that has been imported with the shell defined as one body and the inner part that is to be lattice defined as well. We also have the fixed face as a variable, as well as the face that we will need to load with a force. The lattice was created and then Booleaned together with the outer shell with a blend radius. We also have our material, titanium, already defined with its material properties.
Let’s take a look at what we would need to do in order to do that first method using solid elements to simulate this part. Our end goal is with all of these methods a static analysis of our part. So, if we take a look inside this, we know that we need an FE model as well as the load case, which contains the force on that pedal face and the fixed restrained on this part. Let’s open up that FE Model block. This FE Model has just one component, which is a solid component of this whole lested pedal part that has been meshed and treated as one solid volume with titanium solid attribute. And the most involved part of this process will be to generate this FE volume mesh for this part with complex lattice structures.
We always recommend starting with the standard workflows and then working your way from the innermost block, tweaking that in the process using the manual run mode in the next block to make sure that you are able to change inputs. Take a look at it before deciding if you want to move on to the next step and run that next block. This is a very useful tip for when you’re working with workflows that take a little bit longer to compute, like meshing workflows. And so, if we take a look at this first block we have in this meshing workflow here, it is the Mesh From Implicit Body block with the second overload, which is a recommended one to use when you have things like lattice structures, which is a bit more complex.
We have here the tolerance using a Math block to compute 30% of the smallest feature that we have within the part. So, in this case, the smallest feature we have here is this shell, which is 1.5 mm, and so 30% of that is 0.45 mm, which we used here as our tolerance. We also chose a sharpen iteration of one and added in that shell implicit body as our sharpen extend so that we only sharpen those areas. If we choose to leave this sharpen extend blank and add a sharpen iteration, it will compute to sharpen the entire structure.
After we make sure that this mesh looks good and the properties are as we want, so closed, edge manifold true, and not self-intersecting, we can move on to the next step, which is remesh the surface. And to do this with any lattice structure, you need to have smaller element sizes in order to capture the detail of the lattice. Here we have 0.8, but you can even go a little bit smaller as well. This remesh is also not self-intersecting and closed and edge manifold. We can choose to add a minimum feature size to decrease the amount of small elements concentration as well.
The only thing to note is if you increase this minimum feature size a bit too much, it can cause self-intersection and your Volume Mesh block, which is the next block, will fail to run. But you can play around with the different parameters, adding minimum feature size, choosing different sharpening iterations, to optimize your mesh, choosing different sharpen extents, as long as you keep in mind the effects of each of these parameters on your computation time and on the effects of your mesh as a whole.
Once you have a satisfactory surface mesh with this remesh surface, you can move on to the volume mesh and then run this FE Volume Mesh block, which you can then put into your FE component mesh input. And that’s it for the FE model creation of this part. This process of meshing will take the most time and will be the most challenging part of your process. But once you have that and that FE model defined, the rest is just defining your boundary conditions, which in this case is that fixed region.
So, if we take a look at this, you can choose the boundary a few different ways. The way that it’s been done in this example is by taking that face that we had defined as the fixed face, converting it into an implicit body, thickening it so that it can overlap a little bit with our mesh. And those nodes in the area of overlap will be picked up as the boundary where the displacement restraint is applied. We have here all 6 degrees of freedom fixed. And the next one is defined in a similar way, except with the Force block instead of that Displacement Restraint block. And the boundary is created by choosing that loaded face, converting it into an implicit body, thickening it to grab onto those nodes on that face, and then adding a vector for the force in the downward Z direction.
With both of these boundary conditions defined and the model for our finite element analysis complete, we can run this block to get the final result. And that is it for the solid element method.
Next, we will take a look at how to do this same simulation using the beam elements method. Let’s take a look first at that final outcome block, which is our Static Analysis block. Again, it needs that model and the force defined as boundary condition, as well as our fixed region.
With this method, we are treating the shell of the paddle and the lattice structure as two separate components and modeling them differently in our mesh input for those FE model components. So if we take a look at this FE model, we can see that within the components input, we have two items. The first one is the solid component, which has the shell mesh and defined material titanium. And then the second one is our FE lattice component. It is an FE component with the lattice beam attribute, with that same material as well. And here is where we can also input the thickness, which can be a field input for varying field thickness as well.
Because we have two components in this model, it is also required that we put in some sort of connector to connect these two components together in one model, and this is our tie constraint. So let’s take a look first at the mesh creation process of each of these two components, and then afterwards we’ll take a look at how that tie constraint is created.
For the shell mesh, it is the same process of generating this part as a solid. So starting directly from that CAD body that we have, converting it into an nTop part, and then remeshing that with a mesh size of 0.8 in this example. Then generating a volume mesh out of it, and then creating an FE volume mesh. So this is the standard approach to doing this, but we will be treating our mesh for the lattice as beams and then connecting these two meshes. So we might want to explore the more advanced option of meshing this shell so that we can have a more accurate model where the nodes at the interface between the lattice and the outer shell can be more easily modeled.
And to do that, this method uses fields, so it’s a field-driven design approach to creating your elements in the mesh. And how this works is instead of putting in a constant value for the edge length, you are putting in a ramp block, which is based in this case on the inner volume that is filled with the lattice. So if we take a look at the field of that block and then toggle off this visibility, let’s put a contoured interval of one at that boundary. We have a value of zero, and we are saying that at zero, we want this 0.4 mm element size. And the farther we move away in the positive direction at 2 mm, we want the element size to be 1.6 mm instead.
And how that would look like if we isolate this is we have outer parts of this shell that is larger in element size, and then if we look at the other side, there is a change in the size of the element where the elements are smallest at this space where there will be interface with the lattice mesh. So this is a way that you can have more control over your mesh and have more accuracy in your modeling as well.
This ramp block here is the exact same block used here. It is created by holding control and dragging this one. So every single change reflected in this block is also happening in this second Ramp block as well. Alternatively, you can make this Ramp block into a variable and use that to input into both of the blocks here, um, for both Remesh block and Volume Mesh block. So that’s an option for meshing the parts that will be surrounding or enclosing your lattice part.
Now that we have that shell mesh, let’s take a look at that lattice mesh as well. So using this FE Lattice Mesh block, you can put in the lattice body, and then what it will generate is this beam mesh. If you look into the properties under beams and properties, there are all sorts of information here, including start points, end points, uh, length, and line segment that you can use.
And once we have both this lattice mesh and the shell mesh, we can connect those nodes together where they are touching by using this tie constraint. And we define the independent as well as the dependent nodes by choosing FE Boundary By Body and taking that whole shell and the whole lattice and choosing those nodes that are within those respective meshes. And then we can add a tolerance value, which in this case is 1.6, which is relatively large. And the reason we have this larger of a number is because in this file we have given you a part that has an upstream CAD issue.
So what I mean by this is if we take a look at our CAD shell as well as that volume, and if I take a cross-section view of this, let’s slowly try to see this part. I also turn off the visibility of these tie constraint nodes for now, and let’s select that implicit so that it’s highlighted. We can see that this volume to lattice has been created in CAD to go beyond where we actually want that lattice to be. And this is why the lattice structure that we have is not properly trimmed, meaning that we have parts here that are going into this area of the upper petal face, and therefore we need to be able to capture those lattice parts that are going into that upper part more.
So if we decrease this number, for example, to just one, that is not capturing all of our nodes. And so this is something to be aware of with this method. You should make sure that you have a well-trimmed lattice and a clean upstream file or workflow that allows you to be able to eliminate this tolerance that will give you more accuracy. So I will change this back. But tolerance is a good way to quickly bypass those issues if you do have them. You just have to be aware that it affects accuracy.
So once we have the shell mesh, the lattice mesh, as well as that connector component, those can be put into our solid component and the lattice component respectively within FE Model, and then the connector input as well. With that, the FE Model is complete, and you can go on to define your boundary conditions. And both of these need boundary selection, which in this case is done by using that fixed face and the loaded face CAD variable, which are both then converted into an implicit body and then thickened so it can grab on to those so that they can grab on to the nodes on those faces. Alternatively, if you want to do this differently, you can also right-click directly on the mesh and choose FE Boundary By Flood Fill.
And our fixed region is fixed on all degrees of freedom here. The vector for our force is 0, 0, and 200 downwards in the Z direction. And with all of that information complete, we can run the static analysis and get those results.
The last method is homogenization. We start in the first stage by creating a unit cell using this Periodic Lattice Body block and referencing all of those properties that the lattice has in our original lattice. So, making all of those parameters a variable that we can reuse, we create a unit cell that has the volume, the size of the original unit cell size in the XYZ direction, as well as that thickness. So, we have this box which our unit cell will have to fit into for homogenization, and so we use Boolean Intersect to trim this unit cell to that box.
Once we have that unit cell, we can create a solid mesh out of it using this workflow with Meshroom Implicit Body. Depending on your unit cell and how the geometry is, you might also want to consider using the second overload and sharpening it so that it captures all the details of the geometry. For this particular unit cell, it is fine with that first overload. Then, you can remesh it and then generate the FE volume mesh out of this unit cell implicit that way.
Once you have that mesh, all that’s left to do is in this Homogenized Unit Cell block, you input the FE model the same way you would if you were to use a static analysis, for example. And this model just needs to be filled out with an FE solid component, so an FE component with solid attributes, with that material defined and our FE mesh of that unit cell that was created, as well as the unit cell design volume, which is that initial box that the unit cell fits into, and that would run once it’s been filled.
Once we have this result, we can move on to the second stage and create an FE model using this result as material and simulate it on that bulk volume. So, we have this shell mesh which is going to make up one component of the FE model. If you look at this FE model, since we have the outer shell of the brake pedal and the representative lattice volume inside, both of these are going to be solid components, and each of them are going to have to be meshed separately and then connected together with a tie constraint.
So, with this in mind, each of these meshes that we would have to create is then using that same standard recommended workflow of converting either a CAD or implicit body into a mesh, remeshing it, and then converting that into an FE volume mesh. With the bulk volume mesh, depending on the geometry that you have, it can also have a bit of a larger element size. Since this geometry is quite simple, we kept this size of the element a little bit larger, and both of these solid meshes were generated with the same workflow.
Then, to tie the nodes connecting the two bodies, get the two components together, we are using the FE Boundary by Body and selecting all of the nodes on that same body on that same mesh. So, all of these nodes are selected, and for the bulk volume, all of those nodes are selected, and the connection nodes can be visualized, and you would have to choose an appropriate tolerance. In this case, we chose 1.5. Again, with this method, the accuracy of this modeling is also affected by the upstream CAD issue that we have hidden in that process with the CAD model.
So, if we take a look at our shell and this CAD volume to fill as well, I’m just going to show the implicit body, and if we take a look on the side, this CAD body was created so that it is going into that upper pedal part as well, which caused a problem while trimming the lattice in this workflow. And so the lattice that we created are not trimmed where we wanted them to be, and as a result, we have an issue where not all nodes are selected with a small tolerance. So, you can see here that that L structure is trimmed, but it is still going into that top body.
So, that’s something to keep in mind that for methods where you require connection between two components like this one with the homogenization or with the previous method using beam elements, that certain things like this untrimmed lattice could cause an accuracy issue when you are connecting those components together. But with this, we can kind of solve this issue by increasing that tolerance.
And once we have that, all we need is to put all of those into the FE model solid components for each, define that material specifically for this bulk volume material that’s going to be our homogenized result from stage one. And the material for the outer shell component will still be that titanium. Tie constraints put in as connector, as well as the boundary conditions that were defined using Displacement Restraint block for the fixed face, as well as the force for that loaded face. And the way that the boundaries of both of these were chosen was by taking each of those CAD faces, converting them to implicit bodies, thickening them so that we can say we want to select the nodes wherever these bodies intersect those meshes in those areas, and we applied the force of 200 Newtons in the negative Z direction and fixed this face on all six degrees of freedom. Then, we could run this block as our final static analysis in the second stage of this workflow and have those results.
Note: Before viewing this video, please review the following updates that were made to nTop starting at nTop 5.23. Several block and property names have changed since this video was produced. We are in the process of updating this information.
This video reviews the answer to the simulation test problem to set up and run a simulation on a latticed brake pedal. The completed files with descriptions are available for download below.
You can skip ahead to watch the review of each method separately:
01:27 Method 1: Solid Elements
08:02 Method 2: Beam Elements
18:31 Method 3: Homogenization
Example File:
This file was last updated in nTop 5.14.2
Example File:
This file was last updated in nTop 5.14.2
Example File:
This file was last updated in nTop 5.14.2
