Descripción
Aprendizajes clave
- Learn how to mid-surface and mesh solid geometry to generate a shell mesh.
- Learn how to connect shell meshed parts in an assembly using offset welded contact.
- Learn how to define nonlinear materials and large displacement effects, and perform a nonlinear analysis.
- Learn how to lightweight an existing shell meshed design using Autodesk Nastran SIMP Topology Optimization.
Oradores
- DWDavid WeinbergDavid Weinberg is currently a Senior Software Developer for Autodesk and was the former President/CEO and Founder NEi Software from 1991 to 2014 until the acquisition of NEi by Autodesk in May 2014. He was the primary developer for NEi Nastran and currently leads the team of developers for Autodesk Nastran. Prior to forming NEi Software he worked as an Aerospace Engineer for Boeing for over 15 years. He holds a Bachelor of Science degree in Aerospace Engineering from Embry-Riddle Aeronautical University. He has over 30 years’ experience in FEA simulation working as a user, developer, and instructor.
DAVID WEINBERG: Hi, my name is David Weinberg. I work for Autodesk. I am in the Nastran Development Team. And today, we'll be talking about nonlinear analysis of thin-walled assemblies using Inventor Nastran. OK, a little bit about me, I'm a distinguished research scientist. I work in the Product Development and Manufacturing Solutions Group on the Nastran Simulation and Generative Design. I'm the primary developer for Autodesk Nastran and Inventor Nastran. And I've been doing this for about 35 years.
Safe Harbor statement, basically, what this says is don't make any purchasing decisions based on this information that I'm about to present to you. Today, we'll be going over the following. The objectives will be to learn how to mid-surface and mesh solid geometry and generate a shell mesh, learn how to lightweight an existing shell mesh design using Autodesk Nastran SIMP Topology Optimization, learn how to define nonlinear materials and large displacement effects and perform a nonlinear analysis, and learn how to connect shell mesh parts in an assembly using contact.
So the first example is going to be a three-point tube bending example. You can see it here. And essentially, this is steel, steel tube. It's 5/16 inch thick, 4 inches by 4 inches by 24 inches long, and it's on these two supports, which are also made of steel. Then we have this pusher, which is basically another block with 1,000 pounds on it.
And we've added constraints where the bottoms of these two blocks are fully constrained in all three directions for solids or all six directions for shells. And we've also applied a constraint here in the z and y directions on this block right here-- or correction, the x and the z direction on this block.
So if we open up Inventor Nastran, and I'm going to assume here that most of you are familiar with Inventor Nastran or at least Inventor, but have done some FEA work in Inventor Nastran, you can see that we have this material here, which is our steel tube. And these are the properties of it. And we just got this from the library. We didn't actually input any of this. We just pulled it up from that. So you can see the two properties here and then the support and pusher block there. And this is the support.
And then the next thing we're going to do is we're going to define the model mesh size. So I'm just going to go over to Mesh, click on that, and I'm going to put in this size mesh, 0.3, which is pretty coarse. If you think about it, that's going to be basically one element through the thickness of this tube. And we're going to start with that. And once we do that, it automatically meshes the part.
Then the next thing is to define the load. So we're going to put 1,000 pounds on this top surface. So we basically go over and select Load, type in 1,000 in the negative y direction, and hit OK. And we're going to specify that surface there. We do that here. Click on that.
And then the next thing are going to be the boundary conditions like I mentioned before. We just hit Fixed. It checks all these for us. We specify that surface. And you'll probably have to rotate the part to access it. Once we do that, then we go to the next part over here, next support, and click on that surface and specify Fixed again. And we're done with the supports. Then after that, we're going to do the pusher, which is free to move in the y direction up and down, but it can't move in this direction here, the z or the x direction, which is here. So we click those checkboxes there to constrain it in those directions.
The next thing we're going to do is we're going to just run the analysis. So we are already set up for linear static analysis by default, and we're just going to go and run the analysis and see what happens. And we run it, and we get this message here, fatal error E5004. So basically, it's saying that there's something wrong, and I can't proceed. So we don't have any results.
So what do we do? Well, we can go to Help and click on that, and it will actually open up this message here in the online help. And the big thing about this, and I do apologize. We need to enhance this message. It gets used a lot. So we'll work on that. We're working on that now.
But the first thing that it says, which is the most important here, is investigate the model for a lack of constraint. So we're going to go do that. And the easiest way to do this, and most people don't know this, is to use one of these parameters here. So you go down to Parameters, and you go to Geometry Processor Parameters. And you can hit Find here and just type in RB Check Modes, and it'll come up. And just put in 15 and select OK.
Now, what that's going to do is it's going to override the solution type, the constraints. If you have any rigid elements, those will be there, and any type of contact that you may have specified, that will be turned into a well. I kind of gave away the hint here as to what is the problem. But we'll run the analysis anyway.
And we hit Run again, and it generates 15 mode shapes. And you can see those here in the tree view. And this is already telling you something is wrong because what we should see are six rigid body modes and one flexible mode, a mode with energy. And what we've got are already looking at seven modes that have basically no energy or a zero frequency.
So if we plot these, and you can do that easily in Inventor Nastran-- you can do an animation of each mode-- you'll see that there are basically three translational modes, and then we have these three rotational modes. And those are normal. You would get that with any structure typically unless it's constrained somehow. And like I said, we're not constrained here when we use this parameter.
But right away with mode seven, you can see something's not right. And then mode eight makes it really clear that the blocks are actually not attached to the tube. So we forgot to do that. And it turns out that the first flexible mode actually is mode 12, and this is that mode right here.
So we know now that 1 through 6 are rigid. 7 through 11 are also rigid because of that lack of constraint. And we can see that because the frequency is near zero. So the next thing to do is to make sure to disable this. If you don't do this, then every time you run anything, it will always revert to this check modes solution sequence and do a modal analysis. So we put that back to zero, and we hit OK.
Now, what we do is we go in and do the thing that we forgot, which is to define the contact. And the way I'm going to start with that is I'm going to use the easiest method, which is the solver based contact. And that's this one down here. So when we click on that, this menu opens up. And the first thing we want to do is just leave this max activation distance blank and make sure that we're on separation contact. And there's other options. We'll discuss some of those later, but this is what we want to start with.
And the big thing here to understand is that by doing this and it being blank, it's going to allow enough movement for an element to move across another element and then a little bit more. But it won't accommodate large amounts of sliding. In that case, you'd have to actually specify what you expect the sliding distance to be. And the larger this number is, the more contact it's going to generate and the slower the solution is going to be. So I caution you on putting in excessive values. But again, here, for the solver based contact generation, leave it blank for small amounts of movement.
So we run that, and everything runs, and we have a solution. And if we go back and we look at our results from that, and we have all these warning messages. And the big thing here is, well, why did I get 125 warnings? And I always like to look at these. So if we look here, basically, all of these are due to it moving nodes. It's repositioning them.
When it meshed these parts, it didn't quite get them exactly right. Remember, this is four inches so that's a very small distance. But it still positions any nodes that are penetrating so they're on the contact surface so we don't have any fictitious stresses. And that's all this is telling us. So that's pretty normal.
And then when we look at the results, and you can see this is an exaggerated deformed shape of the results, it looks like there's penetration going on, but there isn't. So one of the things I always like to do is I go to the Options menu, and I go to Deform options, and I select Actual. And then I click OK, and I look at that deformed shape. And I can see here that if I zoom in, there's nothing that's penetrating, and everything looks correct and at least no excessive penetration. So I'm going to assume this is a good valid run.
Now, what we're going to do next is we're going to do nonlinear statics. And linear statics uses a linear contact method. We're going to switch it over to nonlinear statics now. So we go over here to this part of the menu next to where it says Linear Static. I'm going to click All Static, and we switch this over to nonlinear static.
And the next thing we have to do is this nonlinear setup. And if we don't do anything, it'll run. It has some default settings. But I'd like to set those because in this particular case, I want it to do five increments, which is typical for contact. Anywhere between three and five is good. So we go in here now, and we specify the number of increments, five increments. And again, you could have used three or four or five. And if you use something like 10, it's not going to matter. It'll just be a little slower but not much.
So we run this now, and all of a sudden, it says solution failed. Now, most people are going to say, well, I don't understand. We added the contact. We did all that. And why is it now failing? And if you use that RB Check Modes right now, it's going to give you six rigid body modes.
And the problem is that what's happening here is that we have sliding contact, and there's really nothing that prevents the tube from just sliding out. And while we're doing a nonlinear analysis, there's a small amount of out-of-plane loading that will occur. And with those equilibrated loads, this tube itself can get a load in that direction that'll push it out from under these supports. So we need to fix that.
Now, we go to the error message again, and it says, again, investigate degree of freedom at which the singularity occurred. That's not going to be very easy to do, but we could do that. You can open up in the editor, and you can look for it or check the model again for a lack of constraint.
So now what we're going to do is we're going to go back to our contact setting. And we'll just go to the menu, and we click on the Contact here and Edit. And here are some other options that we've got. Now, we could use bonded, but that's not what we want to do. Now, this one here is Separation/No Sliding. What that means is it's going to allow the parts to open and close.
But once they're in the closed position, they can't move. And we're going to try that because that probably will fix this. So we select that, and we rerun it five increments. And boom, solution complete, and we have results. So that seemed to work. And that's with what we call rough contact or Separation/No Sliding.
So now what I'm going to do is I'm going to set this thing up for manual contact because I want to show how we can do manual contact at different places in the model. So the first thing to do is to delete this manual contact. And again, you'll see it on the tree, and we just hit Remove. And now that's gone. We have no contact defined.
So we go back up here, and we click on Manual Contact, which is going to be this setting right here. And we click on that, and we can specify, again, Separation/No Sliding. And then there's this thing. Now, it's a little different than the other one we had before for solver based contact. This is a checkbox here.
And what you want to do there is pay attention to that because when that checkbox is checked, what that means is that you need to specify some distance in here. And if you don't specify anything, it's going to default to zero. And very likely, the contact isn't going to work because these nodes aren't really lined up on top of each other. So that's something to pay attention to.
And then over here now, we're going to specify a different type of contact. This one here is going to be Separation Only. So over here, we specified Separation/No Sliding. Here, we're saying Separation. And then, for this part on the pusher, we just do the same thing, again, Separation. OK, so we can see the three contact surfaces or contact areas that are defined here. We rerun the analysis. It runs, and we get these values here. This is, again, looking at a non-deformed shape. And everything looks fine.
So the next thing here is we're going to go in, and we're going to switch it to bonded. And we're going to just change this to bonded, and then we're going to go back now and rerun the analysis again. And we can see, OK, that works, too. So now, this part is bonded to here. It's welded essentially. This one has the rough contact, and this one has sliding. And you might notice here that it's a coarse mesh. And every time we do this, we're getting anywhere between 2000, 3,000 PSI for the stresses.
Now, we have this feature called Enhanced Contact, and I want to talk a little bit about that. The problem with this model is, first of all, the model is way too coarse. We only have one element through the thickness, and what happens in the contact in Inventor Nastran is that when we have contact here or welds or anything like that, we have a parabolic element, and we linearize the face of the parabolic element. And that can degrade the accuracy depending on the loading and how many elements through the thickness.
I'm just telling you from experience it's going to degrade the accuracy. So we're going to go in, and we're going to turn on this Enhanced Contact. The big disadvantage of this Enhanced Contact is that it adds a lot of elements to the model. And for bigger models, it can slow things down quite a bit.
So what is it doing? Well, in reality, what it does is if this is the face of one of the tetrahedron elements, and that's node 1, 2, and 3, it's going in here, and it's adding subtriangles. So each of these is a contact surface that it puts in there. So it'll improve the accuracy because it won't degrade the TET. It won't linearize the face of the TET. But it's much slower. And currently, we're working on a better solution for this that will not have the performance impact but will have the same benefits if not better.
OK, so now we go back into this model here, and we need to make sure because before, we had a lot of sliding going on, or at least, we specified that it would be OK. And now, what we need to do is we need to make sure that this is unchecked. So with that unchecked, basically now, this is in auto. And that's going to prevent it from sliding excessively, meaning it's not going to develop that much contact. Otherwise, it would develop contact all the way over to here in case this tube is moving.
So by unchecking that box, we're using the auto setting now. And you can see this auto will appear once you uncheck that. And that's what you're going to want to do. So we run the analysis here, and you can see the stress has changed. I mean, before, they were at 3,000. Now they're at 3,600. So that definitely made a big difference in the stresses.
OK, so how about if we refine the mesh? So we go in now, and we go to Mesh Settings, and we reduce the element size, and we remesh it. And this is what it looks like. Now, the problem is that we have Enhanced Contact on. So when you run this analysis, the model is actually enormous in size. I can't remember, but I think it's about 16 million elements with contact. Or actually, it says right here so it's 3.2 million. Or correction there, 32 million, sorry, so 32 million elements. And you're going to get this profile limit exceeded.
When you get that, there's a simple solution. If you want to still run this with all of these elements and that much contact, you can look up the error message here. And you can see that it says profile limit exceeded, and it tells you what to do here. So we're going to go into the parameters. Actually, this is a directive. And we're going to set the DECOMP method to PCGLSS and the SPARSEITERMODE param to three. So let's go ahead and do that.
So in here, we go Solution Processor Parameters. We go SPARSEITERMODE, set that to three. And under the Program Control Directives, we set the DECOMP method to PCGLSS. And we go back here and we make sure, again, that this activation distance is set to auto because if it wasn't, then it would definitely not run for sure. So we do that. And basically, I can tell you right now that this model is probably not going to run very quickly. It would probably take on the order of a day for it to run. And rather than doing that, let's discuss some other options.
So if the loading and the boundary conditions are symmetric, this option makes the most sense to use a 1/4 symmetric model. What we'll do is we'll cut the model down by one quarter. It's going to improve the performance, and we can have an even finer mesh if we want since the model size is much less.
The boundary conditions will allow surfaces to slide with no friction required, and that means we don't have to play with, oh, well, wait a second. I've got to put friction in one of these so that it doesn't move, or I've got to bond one of them. We don't have to do any of that. And we can even do topology optimization later if we want to and other more complicated nonlinear analyses like material nonlinear can be performed much faster. So there's a huge argument for why we should be working with a model like this.
So it's essentially the same model that we had before. The only difference is it's 1/4. And now, what we have to do is pay attention to the symmetry boundary conditions, which we're going to do. So same thing here, constrained at the base. Now, symmetry will be on this plane here. So this here, that, that, and that all will have symmetry with the x plane. And then over here, the backside of that, that edge there, this edge all the way over here, over here in this area will have z symmetry.
So we just go in. We click on the surfaces here. And then we click on the Z Symmetry, and we get that done. Now we come over here, and we click on X Symmetry after selecting these surfaces here. You can see them there. And we don't have to worry about the constraints we already had down here because if you created this model by just modifying this solid, which is how I did it, you would be able to then just go in and constrain that.
And whatever side constraints that we had here, we just need to convert those to symmetry. And then we have 1/4 of the load. So this is kind of important. We had 1,000 pounds on the full block. Whenever you use symmetry, you got to make sure that if it's half symmetry, it's one-half the load. If it's quarter symmetry, it's 1/4 of the load.
All right, now I'm going to show you the results of this, but I just want to get to the chart first. I went ahead and I turned off the Enhanced Contact because we don't need it, and I'll show you why in a second here. The mesh element size varied from 1 all the way down to 0.08.
And you can see what the peak stresses are doing. So obviously, the stresses will start out. They don't change much. And then all of a sudden, they go up. And remember, this is logarithmic on this axis here. But they go up quite a bit because a singularity is created. And I'll discuss that in a minute. Also, the solution time goes up as well. And we go from models that run in 15 seconds, 18 seconds to models that then take 2,000 seconds.
If we look at the results here, here's the first one. So this is with the 1.0 mesh size. So it's very coarse. And notice the stress that we get. It's about 1,600 PSI. And then if we go to a little bit larger-- excuse me-- a little bit smaller on the element size, which is 0.5, we have this. It goes up to 1,678. And then there's 0.3, 2,268, and then 0.1.
And as we keep going, you can see now we have two elements through the thickness. And now I've disabled the mesh because at this point, as the elements get smaller and smaller, this whole thing will just turn gray, and you won't even be able to see it. So I've disabled the element edges, which can be done under Options and Visibility. You can do it over here, too, Object Visibility, as well. Click on that, and then it'll be a checkbox where you can uncheck Element Edges.
And then this is the last one here. It goes all the way up to 6,000 on the peak stress. And all of this is due to this concentration that we're getting down in here on the solid hitting the block on the corner. If we look at it more carefully by removing the block, you can see where the block is bearing down right here, and you can see it's showing us where the maximum is in there.
All right, well let's talk about shell elements because that's the whole idea of this presentation. So while the solid quarter model got us better performance in the ability to mesh finer in a reasonable amount of time running, what we really want to do is create a shell mesh because we're going to go even better with that.
So we're going to midsurface the steel tube. So we select Midsurfaces here. And you can see here that there's some options here. And the one we're going to select is Midsurfaces. And the first thing we have to do is select this body here. And that'll show up right away. And then we'll have this shell midsurface here, and now we can go into that, click on that, and we can specify a thickness, which is our tube thickness.
Now, once we've done that, I want to show something really interesting here, and that's this other option under Mesh Table. And what table will allow us to do is do individual meshes. There's no reason for us to do a fine mesh on this block and a fine mesh on that block. That's just going to slow things down. But we want to focus on the tube itself. So we just go over to the tube right here, and we can adjust this and change the mesh by just clicking right there on the size. And that's pretty handy. So I'm going to do that.
And the other thing I have to remember to do is I've got to put my boundary conditions on my shell edges because I've basically removed the solid mesh here, and now I've got to deal with the shell mesh. So I'm going to click on this, and I'm to click on that here and there and click on this and that as well and put my boundary conditions in just like we discussed before. And now, I also have to do this face here and then these edges here. Those also have to be done just like we did with the solids.
Now, this is probably the most important and critical thing. There is a gap here now, and that gap or offset needs to be accounted for for contact. If we don't do that, it's almost as if the part has a gap in it to start with, and that's probably not going to run very well. So we divide 5/16 by 2, and we get this distance here, and that's the penetration surface offset. And we just put that in. It's positive, meaning up, and that value goes in there. And again, we have this disabled so we're using the auto setting for that. And we do that over here as well on that contact surface as well.
Now, we rerun the analysis, and the other thing we have to remember is that it's going to default to the solid von Mises stress. The problem with that is you really don't care as much about the stresses in the solid block as you do in the tube itself. So we need to make sure that we define the shell max von Mises bottom top.
And what that is it's the maximum von Mises of the top surface and the bottom surface. And we click on that. And now, we have a contour plot, and we can see right here where the maximum is occurring. And these results for the shell mesh, they agree pretty well with the solid mesh that we were doing before. So I feel pretty good about this.
Now, if we do a mesh convergence study on this, the cool thing about this is, yeah, the solution time increases parabolically like we expected it to do. But check this out. Even on the same logarithmic shell, we only get a small increase in this stress. So it stays pretty constant. I mean, it goes up from 3,600 to about 4,000, but it doesn't do it dramatically like it did with the solid. And there's a lot of reasons for that. But with the shell mesh, we can get a much finer mesh. And it's focused more in bending, whereas the solid's going to have a three-dimensional stress state.
The mesh element size here varied from 0.1 to 0.02 so we've got a much finer mesh. And the solution time goes up, but these runtimes are still pretty reasonable. So this is the first one here. You can see the 3,700. And then we're going to go to a finer mesh, 38, even finer 3,991, even finer 4,033. And let's talk about material nonlinearity next.
So if we want to do material nonlinear on this, the first thing I want to do is the yield point for this material is about 30 KSI. So we're going to need to increase the load, and we also want to change the number of increments. So three to five is a good number for contact with no material nonlinearity. But 20 to 40 is better for material nonlinearity. And I'd say 20 is probably your lower limit, and 40 is probably, I wouldn't say an upper limit, but it's sufficient. You might want to try 50, but typically, that's enough.
So I'm going to up the load from 250 to 2,500. And that's going to mean that the stresses now are going to be about 36,000. And since our yield point is 30,000, then we should see some yielding going on. So what we're going to do is do the load. And now what we need to do is we need to go to the tube, the midsurface on the steel tube, and we need to select that material and make sure that it's just that material. Now, the pusher block and the support are a different material type here. If they're the same material as this, then it's going to probably use the same nonlinear settings.
So you're going to want to check for that and click on this and select Midsurface and then select Nonlinear on just for that and not for these other ones. Otherwise, they're going to also become nonlinear, and you're not going to want that. And the material is in the library for the nonlinear. We'll see that here in a second. But like I said, once you do this, it pays to go in here and make sure that nonlinear is off for these two as well, off. You only want it on for this.
OK, so now when we click on that Nonlinear button, we get this. And we're going to select Elastoplastic Bilinear. And it's already populated for us. It has our yield point in there, and then it has a tangent modulus that we can use that's pretty representative of what happens with this particular material when it yields.
All right, so we go and run this one, and we get this. We're going to look at two things here, shell effective strain, that's our plastic strain. That's the strain that occurs that is permanent set. And we want to look at that, and you can see what it is. It's actually a very small amount of strain. It's not very much because we didn't really go way past the yield point. We just went a little bit past it.
And then the other one is the equivalent stress. A lot of people want to look at von Mises. Don't do that. Von Mises stress is calculated with a formula that's documented in the reference manual. But the equivalent stress, depending on what nonlinear material model you use, that's the stress it's using to track the stress strain curve. So that's what you really want to plot. And typically, for solid materials, the von Mises and the equivalent stress will be the same, but it could vary for shells.
So if we look in here, you'll see here that the max stress now is much lower. Notice, that if we were to scale this-- remember, it was 3,600-- well, it would be 36,000 roughly linear material. Notice it's only 23,388. And that's because this is what happens in reality. And that's why a lot of these linear models, the stress just keeps going up because in reality, once you hit to a point at the microscopic level where yielding occurs, the stresses are going to redistribute. And that's what happens here. The stresses redistribute because of the plasticity.
OK, so if we increase the load even more, we'll get more plastic strain, and that's what I want to do. So I do that, increase the load, and I rerun the model. And I get more plastic strain, and you can see the value right here. There it is. All right, and that's the stress that I got.
Now, I want to back up here because I missed a step, and I just want to cover this carefully. If you want to see unload, like for example, we're loading up the material full load, and then we remove the load, that's easy to do. And what you do in that case is you create a second subcase. You just duplicate the first subcase. And there's an option for that. It generates a second subcase.
And then you just need to go in and delete the load. Just remove it. And once you do that, now you'll have two subcases, one that's loaded and another one with no load. And the solver knows in that case to go in and to unload. And that's where you're going to get this. And this is actually an unloaded case where we've gone back to zero on the load. You can see that right there. And that is the residual strain that we've got, plastic strain, and this is the residual stress when we unload the part.
All right, let's talk about optimization now. So some definitions-- the objective is the goal of the design analysis. So when we talk about an objective, the objective is typically to minimize mass or minimize compliance. The constraint, the design constraint is something specific like displacement at a point or temperature or stress. Manufacturing constraints are things like symmetry, how it's milled, it's extruded, it's 3D printed. And compliance is the inverse of stiffness.
Volume Fraction or VF is the ratio of a full volume to reduced volume. It's effectively the same as the mass fraction when the density is constant in a particular region. And the design sensitivity, that's a gradient or a change of the objective or constraint with respect to the design variable, which is typically the element density.
So if we go back into our model here, let's go back to the shell model. And we're going to set this back to linear statics because we only support optimization in linear statics and normal modes for what's in Inventor right now. So we go to our linear statics, and we'll put the load back to 2,500.
And to enable this feature, we're going to go to the Design Optimization Processor Parameters. And when you open that up, you're going to see this TOPGEN, T-O-P Gen. And I'm going to select to start off with Comp VF. And I'll be getting into the definitions of all this. There'll be more slides that explain all this in a second. But just Comp VF stands for Compliance Volume Fraction. So we're going to minimize compliance with a set volume fraction.
Now, this is a little tricky. This is the design region that represents what we're going to analyze. And since we have three parts here, we have to pick the property that is the tube, and that was property 18. And on the tree there, it'll say that. It'll just say property 18 when you look at it. If you just double click on Midsurface here, in that menu there, it'll say 18 as the property number. And then this is the volume fraction, TOPTDESIGNCONSTRAINT. I want that to be 0.5.
All right, and one last thing is we want to generate an STL file. So that's going to be some geometry that we can look at, and it will also generate a PDF that we can run later as a verification model. So we're going to turn on this TRSLTOPTDATA on, and that's an output control directive. So we set that to on.
And then we run the analysis. It takes about 57 iterations. I'll talk a little bit about that in a second. But this is the shape that we get. So you can see about half the material was removed, and this is going to be your stiffest. It minimizes the compliance so it's your maximum stiffness with half the material removed. And I removed the blocks here just so you could see the part in better detail.
Now, if we open up that STL file in Inventor that it generated, then we'll see this. So that's the actual part as an STL surface, and these are the supports and pusher. The other thing we can do is we can do what's called minimize mass or the volume fraction for a stress constraint.
So there, we just, again, under that TOPTGEN, we specify VF Stress. And for that, we want to specify what is our max stress. We're going to set the stress limit at 10,000, and we're going to also set this compliance index. Now, what compliance index means is that it is how much I'm allowing the compliance or the stiffness to change. And 5 means that I'll allow it to be 1/5 its stiffness. So the compliance, it can increase from 1 to 5, a normalized value of 1 to 5, which means I'm at 1/5 my stiffness.
And the reason why we have to do that is because if we don't do that, when you minimize the mass, it'll just keep removing material to satisfy the stress constraint. And it'll basically remove everything because it doesn't care about compliance. That's not an objective anymore. So we handle that by using this compliance index.
OK, so now it goes down to something like this. It reaches about 9,000 PSI on the stress, and then it stops. You can see, wow, that's pretty cool. It's attached here. It's attached there. And by the way, all of the attachments are weld elements. I switched that. I didn't mention that. I should have. But we're using weld elements here. We're not using contact.
And if we look at the output, just click on the Nastran output here, you can see at the end-- this is the last final iteration-- you can see what the objective is. That's in this particular case the mass value. And then this is here the compliance index. And it didn't quite reach five. It stopped at 3 and 1/2. And then there's the stress, which is at about 8,700 or 8.7 e plus 3. All right, now, that's the part, and you can see it's just barely hanging on here with a contact here and a contact there.
So the rest of this is some more background material just talking about shape optimization versus topology optimization. In shape optimization, we're going to change the shape of the part by changing a radius or a width or a thickness. And in topology optimization, we're basically removing material.
And then there's other types of optimization like this one here where you attach a bunch of beams, and then you run the analysis. And whatever beam has the most load, you keep it and the ones that don't, you remove. And you end up with something like this. We don't do that, but we do do this.
And if you look at this beam model here, you can see its evolution. And this is what we would expect to get, a truss structure like this, 50% mass reduction with a 22% increase in stiffness. And the reason why it increases in stiffness because I know that's hard to understand is that we started out with 0.5 as a volume fraction, and in the end, we ended up with a volume fraction that was 22%-- or excuse me-- 50% reduction in mass because we set that as our requirement here, 50% reduction in mass.
But we got a 22% increase in stiffness for that 50% reduction in mass. So you can see how this changes here. It starts out here. It goes down so the part's getting weaker. And then it's getting-- or excuse me. It's actually getting stiffer here, and then it's getting weaker here, and then it's getting stiffer here, and that's the evolution there.
So SIMP stands for Solid Isotropic Material Utilization, and it's not limited to isotropic materials. But basically, what it is is that we go in, and we are taking the element density, which is a value that goes from zero to one-- every element has its own density. Those are design variables-- and we just go ahead and we raise it to a power p. Typically, that's three. And then that comes up with some scale factor that we multiply times our original stiffness, and we get some reduced stiffness. And we're doing that for every element in the model, and that's how we generate these designs.
So when you look at in optimization, you have global versus local minimum. So these are local minimum here. And that's right there a global minimum, meaning that that's the most optimum solution you're probably going to get to. And it's like if you were in a mountain range and you're sitting in a valley. In a valley, you don't know if you're in the lowest valley. But if you climb up to one of the peaks, you can see if you're at the top of what peak is the highest peak by just looking.
So that's the goal here is to make sure that we're on a global minimum and not some local minimum. But optimization algorithm searches for local minimum, and global minimum is not guaranteed. The only way to ever get to a global minimum is to try different starting points and take whatever gives you the best design.
So if we look here, we have an objective, and we have an optimum solution. So we start moving, and we're looking at this gradient, the change here from one iteration to the next. And then eventually, we see that, oh, we've got the lowest point because it starts to go up. We could stop there. But typically, what we do is we have more than one constraint. You can see this is one constraint. That's another constraint. And the optimum solution is where these two constraints intersect.
And this is the objective decreasing because we're trying to minimize it. Now, minimizing it doesn't always mean that it's going to be at some miraculously low level. It will try its best to reduce it, but if it hits one of these constraints while it's doing that, it has to stop because these constraints are like walls. You can't go past them.
Now, the Inventor Nastran objectives that we currently support with those parameters are compliance and volume fraction. Those are the only two objectives. And then for the constraints, we support the following here-- compliance index, maximum displacement, constraint force, stress in a specific region, just one region. And then there's also frequency. It can be used, too, as an option.
These are the manufacturing constraints that we support. So you can even do a minimum member size. I'll show you that in a second. But symmetry is popular. These here, extrusion, milling, and additive, really, additive, yes, that works well, especially with solid models. But these two are going to be very difficult to do with TET elements.
So here's a minimum member size slide. Basically, you can see we're gradually increasing the minimum member size. And as we do that, you can see the part here, what happens there as we do that. It'll start to gray actually because it wants really badly to reduce the mass of the part. It knows that it needs to do that because we're telling it to. But the only way it's going to do that and meet the minimum member size requirement is to use an intermediate color as the member size is so large.
This is just another example. I'm going to go through this pretty quick. If you want to see more about this, I would just suggest that you reference the PowerPoint once we post that. But essentially, what we're doing here is what we were doing before with the 1/4 model.
And in here, there's some videos that show you the steps that I just took. And those will reinforce some of the stuff that we've done already. This actually came from another Autodesk University class, and you can reference that class as well. All of this stuff is covered. But it's basically the same things, and we just provide more detail here about these different settings to get it to do this and then some documentation as well. So this should be a good reference.
And then here's the result of that analysis that I ran through fairly quickly. And depending on what we do, we get different shapes. And then those shapes, again, produces a file that we can then use to generate geometry from and run a verification analysis to make sure that we didn't exceed any of our limiting stresses.
All right, so these are the commonly used topology optimization parameters. This one here would limit how many iterations it does. This is for specifying symmetry. If you have an unsymmetric mesh and you're using a symmetric symmetry boundary condition-- or excuse me-- symmetry manufacturing constraint, you can increase this if you're getting a warning that it's unable to link elements or it doesn't look symmetric. And then this one here is just the tolerance for what it uses when it thinks it's converged.
Now, I want to talk about generative design versus topology optimization. This is always coming up, and this will be discussed quite a bit. But I think the industry is ready to agree on a definition. And that is that topology optimization is actually a subset of generative design. And topology optimization is a tool. It uses existing geometry, and it removes material from that geometry to lightweight it. And you get a lighter part.
The cool thing about generative design is it's a design exploratory process where you may not even know what the shape could be. You could start off with just a big block. And given that, it can look at all kinds of things. Like for example, you can include things like the cost to manufacture, all the different manufacturing constraints and methods you might want to use. You could look at things like fatigue and life cycle. And we can add in there artificial intelligence and machine learning and even design of experiments analysis to synthesize combinations of discrete values of input variables within the user-specified range of possible values.
The thing about generative design is it doesn't require an initial design, but it establishes a domain for each set of design variables based on geometry. So the big benefits are you're going to get better weight reduction, reduced product development time, reduced costs, and it's going to give you a lot of insight into different designs. You can create an array of novel yet feasible design concepts for consideration by the design engineer.
So with that, I want to talk about Autodesk Fusion 360 Generative Design. And I think that that actually is probably the best tool. The stuff we have in Inventor Nastran is good for just playing around, and it will do quite a bit. But this is a preferred product because it will definitely do more.
In this particular case, you can define preserve geometry where you're not going to model this. I mean, you're not going to add this to the design space. This is geometry that's outside of the design space, like for example, something that you need for an attachment. And then you have the obstacle geometry. And this is area where tooling has to be accessible so you don't want any material in there at all. So these are basically voids where it can't add material. And these are basically where material exists, and the structure is attached to it, but it can't change the design. It can't remove material.
So you start with a design space. The user defines loads and boundary conditions. So you're basically working with this, loads and boundary conditions on these preserve boundaries. And then it runs, and it produces multiple outcomes. It'll give you, for example, if you're 3D printing, it'll give you different options in each print directions. And it'll also give you cost if you want that as well. And then the design verification is seamless as well. It'll do that automatically for you just to make sure that the design that it created passes all of the constraints that you've specified.
The only thing that limits it is it's currently only for solid models. So if you're dealing with a lot of shell models like we were earlier, the stuff in Inventor Nastran could be useful for you. And here's some examples of the shapes that you get. This is an Alcoa bracket design. This is a skateboard truck. And then this is just a block, standard test case. Just notice how straight everything is. It almost looks like a human actually designed this, not a computer. And then that's a ramp. And that's it. Thank you very much. I hope that you enjoyed that presentation.
Downloads
Etiquetas
Producto | |
Sectores | |
Temas |