説明
主な学習内容
- Understand the basics of Topology Optimization in Autodesk Nastran In-CAD
- Learn how to modify an existing design to remove unnecessary material and make it more efficient, and how to generate a design from an empty design space
- Understand the limitations of Topology Optimization in Autodesk Nastran In-CAD
- Understand the workflow involved in setting up and performing a Topology Optimization, and learn how to generate an optimized design
スピーカー
- 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.
- JSJeff StrainJeff Strain joined Autodesk in 2016 as a Simulation Subject Matter Expert. Prior to joining Autodesk, Jeff worked at an ANSYS reseller for fourteen years providing tech support, training, sales support, and consulting. Jeff also has eight years of experience in the aerospace industry as a structural analysis engineer.
DAVID WEINBERG: All right. Very good. So my name is David Weinberg. I am the former CEO of NEi software, which was acquired by Autodesk in 2014. And we are the developers of the Nastran product and the In-CAD product. And this is Jeff Strain, Subject Matter Expert. And he's going to be assisting me today, and we're going to talk about some really fun stuff, which is topology optimization and In-CAD. This presentation is available in PDF form. I uploaded it. It will serve as a great reference, and the actual implementation I think you're going to need to get either a beta or wait for the next release and it should be in that.
So we're going to talk about learning objectives, definitions, topology optimization basics, objectives and constraints. In-CAD topology optimization user interface-- that's the important part-- and then the GE Bracket Problem, which you probably saw down in the exhibit. Somebody was-- I think it was Intel-- was showing that. And then we're going to do some live demos. So for the objectives, these are the ones that were already posted, and you probably are all familiar with them.
Definitions. Objective is the goal of the design analysis. So when we say the objective is to minimize mass that's what you're ultimately trying to do. In our current implementation, we solve for one objective-- the design constraint. That's something that you want to stay within the limits of. You don't want the stress to exceed a certain value or displacement.
Manufacturing constraints are things like I want it to be symmetric. I want to be able to 3D print it. I want to be able to extrude it. They all relate to manufacturer compliance. We'll use this term quite a bit, is the inverse of stiffness. So if you want to maximize the stiffness you minimize compliance. Volume fraction. If that part weighed 10 pounds when you started and you remove material and now it weighs half that, then your volume fraction is half. We're assuming the density is uniform. And then design sensitivity is basically the change with respect to the objective or the constraints as we modify the design.
So the basics of topology optimization. You'll hear a lot of different terms used. At Autodesk, we sometimes call shape optimization topology optimization, but the big difference is that shape optimization usually deals with parameters like a radius or a dimension. And you're modifying that because you have a parametric model and you're trying to find an optimum design. But in topology optimization, we don't have any features to start with. We just have a big design space and we have to create something out of that.
And one of the methods that was used in the early stages, and still today, is this B method. If you just take a truss and you connect everything up to everything else, you can go through. And using a very basic optimization algorithm-- when a member has no load in it you remove it, and when it does you keep it. You can change the area and you can come up with a design like you see right here.
This is typically-- this is a very popular problem here, this bridge problem. This is how it evolves. So when we first start off we have some volume fraction. Now in this case, the volume fraction was 0.5. That was what we started with. And you can see the design evolving. You'll see a lot of that today until it comes up with this, which is half the mass and a 22% increase in stiffness from the original 0.5 value. And then you can see how that stiffness is changing as it iterate here.
We use a method called SIMP, and it stands for Solid Isotopic Material Penalization, and it works really well with finite element codes-- the existing ones. Most of the big companies that are doing this are using SIMP. I'll explain the differences with that and level set here in a second. But the big thing here is that we have a density. Excuse me a second here. Sorry, I'm going to have some problems with slides I guess.
We have a density, and the density goes from 0 to 1. And it's either 0 or it's something in between 0 and 1. And the stiffness is basically that density raised to the power of P, and that's the P in SIMP. So it's not limited to isotopic materials, but typically what we want to do is have this exponent at a value of 3. And that reduces intermediate value, so you tend to end up with values that are either 0, or white, or one, or black.
Now level set is a little bit different. And the thing with level set is it uses a front or a boundary tracking method, and it originally was for image processing and moving boundary problems, multi phase problems, movies. And it's different because basically you have the density as a function as shown here. And when it's less than it's 0, when it's greater then it's 1, and there's really no intermediate values. And you can see an example here. And then over here, you can see how the functions look, and then you can see here what you end up with when you finally have a design.
And the big difference here is that you have to start off with something-- some holes in the model. And then you can see how it progresses after 15 iterations and then 45, 150, and then 386. And you finally get a design that we all can recognize from topology optimization. The big misconception is smooth and crisp boundary descriptions. So it's claimed that level set is more accurate than SIMP.
In reality, that's not the case. The ending quality will be pretty much so the same. The big difference is there are some advantages. For example, SIMP-- I've listed them here. The advantage, for example. For SIMP is it's-- or disadvantage, rather in red-- difficult to define the objective and constraints on the boundary, whereas with level set it's explicit. And I'm not going to read all of these, but suffice it to say that there's benefits of both methods.
Now global versus local minimum. This is very important because when we do topology optimization we don't necessarily have the absolute minimum in the problem. It's almost like if you're out and you're in a valley in a mountain range, you don't know if you're at the lowest point in the valley. Now if you're at the top of a mountain, you might be able to see all the other peaks and then you would know. But in this case, changing different design variables and entry or input parameters can get you to a totally different design. And when you evaluate many of these designs, then you find which one is the best, either because it satisfies the constraints or it's the least amount of mass. And that's kind of what we're going to do.
The easiest way to see this, if you just imagine this, is you start off at some point here. And you're moving and there's a gradient and you're changing. So basically the density in the model is changing as we go here. And then we get to this point where the objective is no longer changing. It flattens out. In fact, it might even reverse direction, and that's usually where we stop. Now that's without any constraints.
But typically, we're going to have a constraint. So you're moving and then you hit the constraint. You hit this wall. For example, you're stress now is too high in your solution so you stop. But also, we can handle models which have multiple constraints and that looks something like this, where you're moving on this path and then there. And once you hit the constraint, you have this optimum solution there.
All right. So objectives and constraints. We'll start off with the objectives. These are the objectives that we support. The big difference here is-- and I know it's a little hard to see, but-- only these in blue are what's supported in In-CAD. The actual Nastran solver does all of those other things.
And they'll be a way, eventually, in the future for you to have access to all of that. In other products like Fusion and standalone Nastran you definitely will be able to do more. But this is basically focused on In-CAD, and that's why we have these two. So you can minimize compliance and you can minimize the mass of the part. Those are the two.
Now for the constraints, these are all the constraints. You have compliance index. Now what that is it's a normalized version of compliance. So think of it this way. If your model starts off and you have all the material-- and let's just say that that's a compliance index of one. If you cut the stiffness in half, now it's half as stiff. That would be a compliance index of two. And it's easier to think in terms of a normalized index than it is about a value of compliance because most people don't think in terms of compliance as a number.
The other one is a max displacement. So you can actually go in, and one of the constraints is wherever the maximum displacement is in the model, it'll be constrained to that value. And essentially, what this table is saying is you have to be less than these values. And also, SBC force. So you can pick a reaction force and it will be less than that.
And then stress. So you can limit the stress in the model. It'll be less than that value. And then the last one here is the normal modes frequency. And this one is a maximum. In other words, you're looking for a value that's greater than this minimum value. So essentially what you're saying is, OK, I have a model. I don't want the frequency to go below 10 Hertz, and that's the limit. If it gets to 10 Hertz then it hits the constraint limit.
As far as the stress constraint is concerned, we have to speak about this in terms of a global constraint. And basically what a global constraint is you can imagine your model-- you could look at all the stresses in each element. And you'd be able to tell by looking at all these stresses whether they're exceeding a value or not. But it doesn't work that way in optimization. It can't.
So we have this global stress measure, and this is really basically a form of a P norm. And essentially what you do-- and I know it's a hairy looking equation, but it's not that ugly. You have the density here. Take the square root of that times your Von Mises stress. That's the limit that you've specified. And you raise it to some power, typically 10. And you sum all those values up, you divide by the number that you summed it by, and take 1 to the power of it. And then that will end up being your global constraint, your stress constraint value. You want your stress, whatever your limit is-- you want to be below that.
And the big problem with this is that if you had a part like this where it's simply P over a stress, then it's really easy. The global stress will equal that stress. The actual stress in the model. The maximum stress that you have. But that's not usually what happens. What you have is more like this, where you have these stresses that are peaks, and then you have these high stress areas here. And there, the global stress isn't necessarily equal to that. But we have a way around that.
So what we do is we divide up, in the model, into separate sub regions, and we put all the high stresses in the smaller regions-- smaller buckets-- and then the smaller stresses go in these other ones. And by using this method here, we're able to actually get much better results. And we'll show you that later.
And then these are the manufacturing constraints that we support. So we have non designable regions. We'll show you that, where you'll have areas where you don't want to touch-- usually where the reaction forces are that apply loads. Minimum member size, symmetry designed for extrusion, milling, and additive manufacturing. And we'll show you all of that here in a little bit.
So I call this region-based topology optimization. In-CAD allows for one design region. The full product allows for 1,000, maybe 10,000. There's no limits, really, effectively. But here you're going to pick one area, and then you can have many different other properties in the model. You can have an assembly, for example.
And the assembly is all around one part, and that part's your design region and you're going to optimize that. The default is 1, and we'll show you that here in a little bit. All the other properties are just going to be ignored. And ideally, you want your loads and your boundary conditions to not be on the design space.
All right. Additive manufacturing constraint. Everybody knows about 3D printing and the advantages of it and everything else. What typically happens is you have to pick a print direction. So depending on the direction that you print will influence the design, and it's a bottom-up process. So you have to think of it this way, that when you look at your part it's going to have to be built in a certain direction. It's going to be printed in that direction. And that's something that you can affect and you can change.
And one of the things that we want to do is we want to avoid these things. Now, you can 3D print probably most of the models that you can generate, but what's expensive about 3D printing is the support structure, so you want to minimize those. So the idea here is to have a manufacturing constraint that doesn't require all of these added support structures, because it's a lot cheaper and it's easier to set up.
So some of the ways to handle this overhang problem that you have with 3D printing. You can adjust the part orientation, you can adjust the part itself, you can add support structures. You can try also to print in different directions, like for example, it's obvious that for certain parts printing in one direction you won't need support structures. In the other you will. But the problem with that is that might affect the design, the optimization. This is an example of that.
So this is the bridge problem. You'll see this quite a bit today. Now if we go in on this and we just say, OK, I want to minimize the compliance, I want to maximize my stiffness, and I'm going to set the volume fraction to 0.4. So I want this to end up being 40% of its original mass. So if we do that, our compliance ends up being 3.3, E minus 2. Now if I go in and say, I'm going to print it this way, up like that, now you can see the compliance goes up because it needs more material to do that. But its printable in this direction.
If I switch the direction down, it's much, much harder. It has a hard time doing this and the compliance is much higher now. Because it doesn't want to print that way. It wants it to go that way because of these supports over here and here. Now if you print the other x direction, minus x, you actually get a pretty reasonable design, though it's not maybe as aesthetically pleasing as this one is. But at least it's about the same compliance. So that tells you right there which way to go. And the only way to really find out is to print in different directions, run the analysis, and see which one gives you the best design.
Now another thing that affects these models is the mesh density. When you have a finer mesh, what that enables you to do is have more detail. So as the mesh becomes finer and finer, you start getting these little details in here and these very thin members. Often you don't want those because either they're not manufacturable or they'll buckle when the part is loaded. So we have ways using minimum member size, which I'll show you here, to avoid those. But the other thing here is notice as you increase this volume fraction here how much more material is being added to the structures.
So minimum member size. In this example, we're going to have a cantilever beam. It's loaded over here, it's constrained there, and you can see the effect of it. So as I change this minimal member size from two to four to six, you can see it has to remove these members. Now what you have to understand about this-- when you look at this one here you're seeing a lot of green. It's not as black and white as you'd like.
What ends up happening is that if you have a part like this and you say, I want the minimum number size to be very large, it doesn't have enough material to do it. So what it ends up doing is, in order to satisfy the size requirement, it uses a lower density so the overall volume fraction is satisfied. And that's something to remember because in all topology optimization, as we try to control this minimum member size, getting a value that's too high will cause that to happen.
Now extrude and manufacturing in symmetry. Excuse me, extrude and symmetry for manufacturing constraints. Now I know this is a hex mesh, and I know In-CAD doesn't do hex measures. But in order to explain this better I need to use a hex mesh. And the extrude may not be something you want to do in In-CAD with the hex elements. You probably can do it with the quad elements and a 2D mesh, no problem.
But in this particular problem we have this preserved boundary over here. We have a load that's applied in this direction, in that direction. And what we want to do is we want to limit the displacement. So the displacement over at this point right there, just that one point, is limited to 0.3. If we extrude it you get something that looks like this. And notice how it added more material over here because it only cares about that point. But if you say use symmetry, now you get a symmetric part but it doesn't look like that and it's not extrudable. And those are basically the differences.
The milling constraint. I don't want to spend too much time on this either because this really is more geared towards a hex mesh, a Voxel mesh, and currently we don't have that in In-CAD. But basically, the concept is something that I can MILL. That is something that will be available in Autodesk Generative Design and in Fusion.
So the user interface. This is the important part. Simple example problem. These are preserved boundaries here and there. Non designable region. We're going to point load it, and we're going to load down into the side all at the same time. And it's just a simple model here that can be made out of quad elements.
And the first thing we want to do is we go in. And basically, this is showing you right now-- and you're going to see a lot of these-- is showing you how to run this model in In-CAD. Basically, what's going to happen is we're going to go into the params, and we're going to set these params up that are under the design optimization parameters. And we're going to set certain values, and we're going to play with those, and then we're going to run this analysis, and we're going to be able to see it evolve. And once it's finished, we'll it be able to actually take geometry that was automatically generated, open it in Inventor, and we can mesh it and create a verification model. We basically get our design.
And so the first thing we do is we turn off the displacements because we don't want the model to deform while we're looking at it. And then it runs here and it shows you the progress as it goes, and you see the little progress here. That's the number of iterations, what iteration number it's on, and this is how close it is to full convergence. And you can see this design.
And the nice thing about this is that, for this example, it all makes sense, and that's something very important with topology optimization. The designs, you have to be able to look at it as an engineer and say, you know what? I believe that. Don't accept something that looks terrible, but of course you can always mesh it and then verify that design is indeed what the software says.
I think it was at the roundtable yesterday they were discussing something about, well, who's responsible? There's really no difference. If our software generates the design or you generate it with your mind, you still have to verify all of these, and that's a big part of it.
So going back to this. Parameters are here. I'm going to go through each of these in detail right now, and all of these are available on Help. So if you go in and you just type in go to-- in the Nastran Help you can go in and you can-- and it's all online. You can type in this word, the param TOPTGEN, and it'll come up with a whole bunch of help. And essentially, there's these options here in red. Hopefully you guys can read that. I really apologize. When I put this together I didn't realize how it would looked on a screen.
So it's defaulted to disable. When it's disabled it's not going to do any topology optimization, but as soon as you change it to one of these other values that's going to initiate this whole thing in In-CAD. So make sure you don't leave it in some other value and then try to run a normal linear static analysis or modal or something because it's going to try to do optimization.
So you see that we have comp VF for minimize compliance. With a set volume fraction we have VF stress for minimize mass with a stress constraint, and also a compliance index that's added to that. We have VF displacement for minimize mass with a displacement constraint and VF SPCF for the minimized mass with a SPC force constraint. And then, VF frequency for the normal modes.
And for each of those, this basically shows you what the constraint means. So if I say Comp VF, this value over here, that design constraint, that's going to be your volume fraction. So a number between 0 and 1. And if it's VF stress then it's the stress upper limit. If it's VF displacement then it's your displacement upper limit. VF SPC is your reaction force limit, and then VF frequency is your lower frequency limit. And you can see here that the output from the online help.
Now another thing that's going to be helpful is either in the log file or while it's running, you'll see this information. It scrolls by really fast for small models, but basically once you run the analysis these are all your constraints. There's your objective. These are all your constraints. It tells you if they're passing or failing. And you can see the value that you specified, and then you can see the current value where it's at and then the iteration convergence. This is very useful. And we'll show you later that you can just open a log file and look at it there.
This is the number of stress divisions. Remember before I was talking about stress divisions and I showed you the buckets and the little pie chart and all of that. So values between 3 and 10-- it's defaulted to 10. Values between 3 and 10 work really well. If you get into the stress constraints and you're using them a lot, you probably can start with three and just see how that works. It depends on how influential the stresses are. If you have a lot of hot spots in your model-- this is a great example. This is a classic topology optimization benchmark called the L-Bracket.
You have a notch there. If you run this model and you optimize without a stress constraint, it's not going to take out this material. It's going to want to create a member that goes like that and over to there because that's going to give you the best stiffness. But when you have the stress constraint, the effect of that then is it wants to remove this material. And you should get a design that looks like this.
And you can see here we did a little test and we said, well, let's see. How many divisions do I really need to get this stress within a reasonable value? And you can see there that the error goes down to almost nothing once you get between 3 and 10. And then, this shows you simply how the design changes with those number of stress sub-regions.
So that's this right here, and then the next thing here is this compliance index. Now you're probably asking, why do we have compliance index with stress? And the reason is that if you just say, hey, I want to minimize mass with a stress constraint, it might remove all the material. In certain designs it will do that, or it'll create disconnected parts because it doesn't care about compliance. You're saying make it as light as possible but don't exceed a stress value.
So in order to help that, we have this thing called compliance index, and we're going to demo that. And typically, it's defaulted to a huge number, which means it's not going to do anything. But you will want a value, let's say, between 3 and 10, maybe 20. And you'll want to see and look and see how is that actually influencing my design? In other words, am I right up against that limit or not? And that way we can control the design. It's just another way to create different designs that are usable.
Now this region here, typically when you build your parts in In-CAD, you don't have a lot of control for what ID. You have an assembly and it picks these numbers here. You just need to know what that is for the design region, and then that's going to have to go in there. And if it's not one that's the default. If you don't specify that right and you screw that up, then you're going to get one of these messages here. So if you get that message that means that this is probably not set to the right design region.
And then these are the manufacturing constraints. So originally, we had these numbers. And nobody likes numbers because nobody can remember numbers, so we changed them to these character variables so they're a lot easier. So again, it's defaulted to no manufacturing constraints, and then you have symmetry extrude ALM, which is 3D printing and milling. The ones you're probably going to want to use the most is either symmetry or ALM if you want to print it. And symmetry we're going to use today quite a bit because it's very important.
And then, if you have symmetry for example, I need to know the coordinate system because you have to specify the plane. So in this case here, it may be coordinate system one. It may be some other coordinate system in the model if you have many coordinate systems you want to specify that. And then, pay attention to your x, y, and z axis and where they are there because that's going to be next.
Which is, what plane do I have symmetry about? Very easy to mess this up. So we'll show you later, but you need to know what plane you want the symmetry about. These allow you to specify multiple planes, and then these are print directions for ALM and extrude.
And then this other thing here. It's a little strange, but the mesh looks like it's symmetric but it really isn't. If we zoom in here, you can see that In-CAD tries to create a perfectly Voxel mesh when you give it a square to mesh, but it's not always perfect. So this tolerance here aids us in matching a master and a slave, or a dependent independent element. Because the design is going to be driven on one side and forced to be the same on the other side, and we have to make the elements up to do that. And that tolerance-- typically in an irregular mesh you're going to want to use a value of 0.9, and that's what we defaulted to in Fusion.
Now this Max activation distance-- it's really your minimum member size but in the form of a radius. So you can see in this problem here we have these members here. If you say, oh, you know what? That is too small for me. Then you measure it and then you set this value here. You just type in the number. And auto just means it uses something reasonable so you don't get models that have super thin members, but it still may be too thin for you when you put that in.
And just remember that it's half. So if your minimum member size that you want is 1 you need to put in 0.5 there. And then this Max Beta. That is used in a minimum member size. I don't want to get into the theory about minimum member size, but essentially we use a penalty function. And the bigger this value is here, the more it forces that minimum member size to exist.
All right. And then the maximum number of iterations. If you run an analysis and it gets to 200 iterations, you'll get a warning message. You probably need more iterations because it just didn't have enough. And you can change this value here and just rerun it, and then hopefully it converges. This shows you what iteration number you're on. When it gets to 100% you're done, and then it'll give you some output there.
And then the itertol. This is the tolerance that we're using. If you don't like your design because it's not crisp enough, you can tighten this. I wouldn't loosen it too much, but you can tighten that value to let's say, 3 E to the minus 3. And then that will produce-- they'll take more iterations but the design might actually look a little bit better. This is a compromise between performance and aesthetics.
Now this database. What this does is it allows you to run the model, and then you have a database if you say store. It's very similar to a modal database that Tony was talking about that we were using in the dynamics class. This is essentially a topology optimization database. So if you run it, it's going to store all the densities so you can then rerun the model with different loads or boundary conditions it has saved in this design, as long as the elements are the same. And it'll start with that, and it can actually converge a lot faster having that information.
So I want to just go through some slides real quick, and Jeff will start talking. An example here. If we just go in and we do a compliance volume fraction and we set it to 0.3-- we just run this model-- you're going to get something that looks like this in our model. Because it's got a side load, so it's going to produce more material over here to handle the side load.
But it's not symmetric. So then you go back in and you say, hey, I want symmetry and I want the y, z plane because that's that coordinate system there. Rerun the model, and now you have something that's symmetric.
Now if I go in I say, now I care about stresses, so I'm going to go in now and I'm going to set a stress limit. It's 10. I don't want my stresses to go above 10, and I set my compliance index to 5. I rerun it, and lo and behold, there's my model. Now we go in. When you run the model-- we didn't uncheck stress so you should have stresses-- you want to look at the shell or solid equivalent stress.
Equivalent stress in In-CAD, when you're doing topology optimization, is the square root of the density times the Von Mises stress. That's what it's using to determine if an element is exceeding a stress limit or not. That's what you're going to need to look at. And obviously, if the densities are all one it's the same as Von Mises stress. If the densities are really, really small, like near zero, then the stresses will be zero. And when you plot that, you should see your shape for the most part. And that's just an easy way to verify.
And then over here while it's running, these were our limits, 10. We set it to 10. These are the stresses in the different buckets. The different sub-regions that we had set up. And it just shows you those and how that works. Then once you do that you can open up Inventor, read in the model for tet meshes will have a smooth STL. For everything else, including quads right now-- we don't have that. We will soon. You're going to get this, and that's actually just an STL file of the elements that were retained. Anything above a density of 0.5 we keep.
And then you can go in and you can create straight lines and make it nice. And then re mesh it and then verify your model with your loads and boundary conditions. And you'll see here we've done that. And if we go in now again, I'm going to lower this stress to six. Everything's the same. We run it. We get this very different design here, and we'll show that. And then we go in and we verify the stresses are still good.
If we do displacement as a constraint, we just say, OK, I want to go in and I want the displacement to be limited. The max displacement of the model I'm limiting to 0.1. I change this to VF displacement, I rerun it, and then we get this design. So that design doesn't care about stress. All it cares about is displacement not exceeding a certain value. And then we go on. We just plot. And you see that the displacement doesn't exceed that value. You can confirm it right there, and you don't have to build a verification model to do that.
Now this last one is very interesting. This is frequency. Now this one is not intuitive what's about to happen. But because we have this part here like this-- this is our preserved boundary there and there. If we don't add any mass up here, if we don't change this, it's in a remove all the material and be happy because the frequency of this, with all of this removed, is still above 10 Hertz.
So what I did is I went in here and I created a non structural mass, NSM, up here, and I just put a value in there as if it was coated with something very heavy and I reran the solution. And it'll run, and there's the limit right there. It's above the value that I set, and we get something that looks like this. And it connects that up to there and you get that.
And you can see what it's doing is it's connecting the structure up. Frequency squared of K over M. So the mass that's out here is going to lower the frequency as it gets heavier. Now if we change this value to 12 and we run it, now it has to add a whole bunch of material here to satisfy the constraint.
All right. And then these parameters here just give you an idea of some of the different things that I think are useful. Again, this is a good reference. I think if you're going to end up doing this you're going to want to print out this PDF file and just keep it as a reference for now until we get better documentation. But for example, what's reasonable for the maximum number of iterations? Somewhere between 100 and 300, but you can set it higher. It just takes longer to get there.
If it's not going to converge it's not going to converge, and you'll see that'll be very obvious. And then there's some problem like the model is not set up correctly or you're asking for constraints that physically are impossible. If you do a linear static analysis and your displacements, without touching the model, are, let's say, 1, and then you ask for it to have a value of displacement that's 0.01, it's probably not going to happen. And then the divisions there and then these other things that we all talked about already.
Now this is the Bracket Problem. This is a more realistic problem. Everything I've shown you so far are models that you can look at and say, yeah, that looks right. That makes sense. Very important in topology optimization. This one's not as easy. This is a challenge. The guy that won this-- GE had this challenge and they were giving away a bunch of money. And this guy I think was from Malaysia, and he had his own 3D printing company.
And basically he created-- his design what won was 84% of the original mass. That's how light he got it down to. He didn't use software to do it. He just played around and finally came up with a design that worked by doing different analysis, but I don't think he used typology optimization. But those are the specifics of it. So I know that's kind of dry looking at that, but that's the specifics of it. And our mesh was 133,000 elements. I ran it on my laptop with 32 gigs of RAM.
And we created this model in In-CAD. We've got these non designed regions here that are in yellow. And then you've got this rigid element that connects these areas up and to a point here, so you just load this point that's right there. And then that's our design region there, and then these are the non design regions. You want to always have those in your model. Jeff's going to show you that here in a little bit because they're really important. You get a much better geometry if you have these preserved boundary or non design regions.
So I went in and I set these parameters up here. Three stressed divisions, compliance index of five. It's titanium so we set that in British units, so we set that as the limit there. 1.18 plus 5. NVF stress and then a minimum member size over here. And this is the design we got.
So this is actually what's going to get generated in In-CAD. And then you read it in and you have it here and you can re-mesh it. This one, it's 83% of the design space, but we have these preserved boundaries that it can't touch. So the overall reduction in weight is 80.5. That's pretty good. I mean, it's not as good as the challenge winner but it's pretty good, and it satisfied all the stress constraints. It took about I think about 70 or 80 iterations to run, and it took about an hour, something like that.
So for the verification analysis, we went in, we took that. We re-meshed it. We applied the loads and boundary conditions. And we see this one area here in the verification model now that-- wait a second. It's 124 KSI. I thought that the analysis is messed up. How come it did that? Well, there's a big reason.
When we're doing topology optimization we're only looking at the stresses in the center. When you do your verification model, it's a totally different mesh. You're probably going to want to turn on corner stresses, which we ignore, in topology optimization. So you will very likely get very close to your limit if you have hot spots like we do here, these stress concentrations here. It's very obvious that you would have that in a corner like that.
So what you want to do is pad your allowable. Instead of using 1.1 you should probably use 1.2 E to the 5. And then that way when it runs, it's going to over design it a little bit, so when you do your verification you're not going to have a problem with it.
Now what about if we want to 3D print this? So basically, you're going to set everything up the same, but now you're going to over here and you're going to say ALM and you're going to pick a print direction. When I rerun this model, I get a very different design. It's a lot bulkier, and it has to be because it cannot print this.
And I did not try printing it in other directions. I just picked the one direction I thought would be the best. But you can see the 45 degree overhang angle in here. And I know it's a dark image and it's really tough to see it in this room with all the light, but it did satisfy all the constraints.
Now we only have a 72% in the design space in a 68.1%, but that's a decision that somebody is going to have to make. They have to say, hey, is it worth it to 3D print it without any support structures, which means cheaper, or do I want to add support structures and get something that's lighter? And that's your decision that you guys have to make. And we do the verification analysis. This does better because it's bulkier but it still exceeds it a little bit. Over here.
AUDIENCE: Question. Does it automatically calculate if you're going to need support structure or not? [INAUDIBLE]
DAVID WEINBERG: No, so we don't have that. That's something that some other people are looking into. What if it can do some support structures in some areas and no support structures in another area. In other words, if you're near the base plate having support structures is no big deal. If you're far away from the base plate then those support structures are a big deal. So in those areas it doesn't want to do it. Well, that's not that's not something we can do right now, but it's something that's out there that people are working on.
And before we start the live demos and Jeff takes over, now's a good time to ask questions about the slides you just saw.
AUDIENCE: [INAUDIBLE]
DAVID WEINBERG: Yeah, so what it's doing is if you look at-- let me see if I can explain it better because I didn't include a slide that shows the exact way it's doing it. But here. All right. That's it. So if you look at this little postage stamp right here. And the way this works is it starts off at the bottom. Let's say this is something we're 3D printing. These support elements on the very bottom? Their density determines the density above it.
So if we have a 45 degree overhang angle and these have, let's say, a density of 1 and 0.1 and m it can go over here, it can go above, but it can't go up on that one over there. So the density of the elements below-- and that's why this is really very good for Voxel meshes, but it does work with tets. And it works actually really nicely with tets, because it's a 45 degree angle, so it has a lot of room. It just swings around and it looks at the tet element centroids and it's able to build on that.
So when you're 3D printing it's going to have to know what these densities are. So we sort that in the code. And these are the elements that we first determine the densities of and then we'd build on that.
JEFF STRAIN: So while we're waiting on this, how many of you are familiar with the different types of additive manufacturing or 3D printing technologies like fused deposition modeling, stereo lithography, and so forth and so on? Laser centering. How many people are familiar with all the various technologies? OK. So we talked about additive layer manufacturing that constraint and how we want to limit the angle at which we're printing at to allow us to not have to have that support structure there.
And essentially, what you're accounting for in that case is the fused deposition modeling. So essentially, for injecting this plastic, building it up layer by layer, we can get away with a certain amount of overhang before we need that support structure. If we get too much overhang, then we need support structure or else that plastic is just going to glop down to the base plate or the next available layer when it's extruded from that nozzle.
So this is what we're taking into account when we do have this additive manufacturing constraint. So obviously, if you take a look at that and you say, OK, I could get away with selective laser centering on this, so why do I have this constraint? If it's something like that, then maybe hey, I don't want to use that additive layer manufacturing constraint. You can say, hey, I'm building this up in a powder. Doesn't really matter. And I can just turn that constraint off.
So what we're going to do, we're going to start off with the basics. We're going to show you the workflow for doing these topology optimization runs, and we're going to start off with the basic stuff, keep it simple, and then we'll move on to some additional complexity. And one thing I will note is we'll show you some variable, some little dials that we can adjust, some knobs we can turn. Keep in mind that if we were to show you essentially everything that you can bury, we would be here till next Tuesday. So we're just giving you a sample here as to what we can change.
So in the first case, I have this bridge or this bridge truss that I'm designing. I obviously don't want just a big, old block as my bridge design. I'd like to optimize it and just have whatever supporting truss structure that I need to give me this optimized design. So what I've done is I have these green and mauve regions. The mauve region is going to be the area that I optimize. The little green regions-- those are going to be the areas that I retain. And I've simply supported it on either side, loaded it in the middle.
And take a look. That mauve region? That is ID number one, idealization number one, which is going to be our design region that we're going to specify for the optimization. We can see it covers that larger region there. And then the other region-- that's just region number two-- we're going to leave that as is. So anything that's not included or that's not specified for that design optimization, that's going to be retained. You're not going to remove any material from that.
So now we have this setup the way we want to as far as what we're going to remove and what we're going to force to stay. And you can see in this case-- we'll move on to a different case, but you can see in this case that I have symmetric geometry, symmetric loads, so we're going to end up with a symmetric design from there. But we'll see later on how we can specify the variables to have symmetric design regardless of what our load is.
I recommend just running a quick stress analysis on your design before doing the topology optimization, just to make sure everything is set up, everything is fully constrained. If it doesn't run the stress analysis, then it's not really going to give you a good topology optimization either. So let's take a look.
I do have that little singularity, that little artificial hot spot at the top. But the point is my stress analysis run-- it's ran, it's fully constrained, and so I know I'm not going to have any problems on the topology optimization side that could be related to an under constrained structure. And notice right now by default you do have that deformation turned on, and we'll show you what to do about that in a minute.
So let's set a volume fraction, a target fraction of 0.3 for optimization. And the way we're going to do that, we're going to go under the parameters, scroll all the way down to the design optimization parameters, and there's a couple of variables we'll adjust. So there's our criteria, our target, and we're going to set that to the Comp VF. That means that we're targeting a volume fraction. And then that top design constraint-- that parameter is going to relate to what is the criteria or what is the value that we're going to satisfy this criteria with.
In this case, I say, you know what? I want 30% of my volume left after I do this optimization, so I set that to 0.3. And essentially, what it's going to do is it's like OK, I'm going to give you 30% of the volume left over, and I'm going to give you the structure that essentially supports the load or provides the load pass to support that load that you've applied for the structural analysis. And then note that I also specified that design region of 1 to indicate that idealization of 1 for the topology-- the optimized region of this.
Actually, before we launch that, what you want to do is you want to turn those displacements off. This is going to update throughout the solution. And if you have the displacements on it's going to be kind of annoying because you'll see a deflected region. But all we want is the shape. We want the resulting shape. We don't want the resulting displacement of that shape. So we turn that off by going under that Edit button and unchecking displacement. And then go ahead and launch this.
It's kind of flew by, but it's a good idea to take a quick look at your output and make sure it's actually running that optimization, so that you know that you have it activated and it's turned on. And then what it's going to do is go through these optimization iterations. And what you want to do is you'll want to run that out until it is converged.
So by default, the number of iterations is going to be 200, and if it converges before it reaches 200 then it will tell you that it's finished. But if it's taking more than 200 iterations, then you can go in and change that. And I'll show you how to do that in a little bit.
So we go ahead and run this, and this is the optimized structure that we come up with. Once we run that-- now I had a little graphics glitch when I was doing that, so go ahead and ignore that. But once you get that solution in place, the way to look at the results is by going under Other in the results and selecting either the shell status or the solid status.
I meshed this with shells so we'll pick the shell status, and then we'll want to display that. And that gives you an idea of what our optimized structure is ultimately going to look like. And we can clean it up by turning off loads and load markers and constraint markers and all that sort of stuff. And give us a nice, pretty picture of our final optimized structure.
So let's add a little bit of complexity. We're going to use this same bridge as before, but what I'm going to do is I'm going to add an x direction load at that same point that we're applying the y direction load. So let's go ahead and do that. Play that up there. And I'm using pretty small loads. It's fine for doing that volume fraction analysis. You'll see when we do the stress analysis that I use low limits on that because I am using those low loads.
So we'll go back to this design optimization. And let's just go ahead and run it as is. We're just going to run this as before and see what we end up with. And again, same volume fraction, 0.3. We'll run that. And by the way, you notice it updating pretty quick on those convergence iterations. I sort of sped that up for presentation purposes. It'd be nice if it ran that fast, but it doesn't want to quite run that fast.
So it's going through these iterations, and you can see it's going towards this asymmetric structure. And you say, well, duh. Of course it's doing an asymmetric structure. You have asymmetric loads. So symmetric geometry, asymmetric loads. Of course, I end up with this sort of asymmetric optimized structure.
Now what I can do from this point is I can impose this symmetry manufacturing constraint on this. And I'm going to, if you take a look at my triad on the lower left, I'm going to make it symmetric about that y, z plane on my coordinate systems. Now the thing is, I need to have a coordinate system along the plane of symmetry-- the desired plane of symmetry. So let's take a look at what I have so far as far as the coordinate systems go.
And if I don't have a coordinate system along that plane as symmetry, I'm going to have to put one there. So we take a look at the default coordinate system. That part one coordinate system. The way I brought that in-- that global coordinate system or the part one system-- that was in the lower left hand corner. That's not going to do me a lot of good as far as setting up my symmetry constraint to be along the mid span of my bridge. So what I did was I created that coordinate system number one to lie along that midpoint. And you can see the symmetry is going to be about the y, z plane of that coordinate system.
Now there is one thing I do want to point out as far as the coordinate system goes. I'm not going to show you how to set it up because I figure that's an Nastran in CAD thing. But one thing I do want to show you-- I'll edit this. And you can see that I have ID number one assigned for that coordinate system, and we'll want to make a note of that before we set up our optimization parameters.
So we'll move along. We'll set up our symmetry parameters, leaving everything the same as before. So again, volume fraction there. Same number. And now we have this manufacturing constraint-- that [INAUDIBLE] however you want to pronounce it. That is our manufacturing constraint. We want it be symmetric about coordinate system number one. That coordinate ID number one. We're going to specify that. And it's going to be the y, z plane of that coordinate system, so we'll select that. It now, regardless of whatever symmetry or whatever symmetry I don't have, it'll run with that.
Now the first thing we need to do is we have to set up this symmetry tolerance. So if you have one element on one side of the symmetry plane and another element on the other side of the symmetry plane-- they're looking across at each other because they have eyes and they can see each other. They're looking across that symmetry plane. That tolerance is going to dictate how well they're lined up before they're considered symmetric. And we're going to specify a scalar value, essentially based on that element size.
And just a general rule of thumb, this 0.9 value works pretty good as far as getting that symmetric tolerance in place. That sort of alignment on either side of the symmetry plane for those elements. If you don't specify that you might get some really weird looking stuff when you that solution. So I found that is something that you want to take advantage of.
And everything that's rolling by in that output file? It's kind of hard to read all that. What you can do, and I'll show you that later on, is you can go in where the results file is, where the solver files are-- you can go into that directory and open up the log file and take a look at that without having to deal with all that thing scrolling past. So now it's very obvious. Now we're getting a symmetric structure-- typologically optimized structure.
And we got a little bit less meat in the y direction. More of the bulk of the structure is taking up the load in the x direction. So essentially, it's taking it up as a membrane load in the x direction, as best as it can, while still having the constraint in the load in the locations that they are. And that's how we end up finally with that symmetric constraint.
And just kind of moving this along. We'll go ahead and-- what I'll do here, because I had to restart my computer, is I'm just going to show you another video. And what we're going to show you here is going to be the stress optimization. So I'm going to specify an upper stress limit on this. And I'll leave that for later.
Let's go ahead and move on to this member radius. We have a slightly different setup here. We have just a cantilever beam constrain on the left side, loaded on the right side in the downward direction. And we're going to do a little study to see what sort of effects that specifying a minimum member radius size for the same volume fraction is going to give us. So let's go ahead and run with that. Sort of zipping this along.
So go into those optimizations. Again, specify this volume fraction of 0.35 in this case. And then we're going to have this additional constraint. We want to have a certain minimum member size. And in order to be able to get to that-- and actually, this is symmetric top bottom. So let's go ahead and turn that symmetry on as well while we're at it. It's an asymmetric load but a symmetric structure, and I'd like to preserve that symmetry in this particular case.
And then what I'm also going to do is I need to get into my advanced settings in order to specify this member size. So I'll check that box to bring up those advanced settings, and then towards the bottom you have that max activation distance. That's essentially what our minimum member radius is going to be after this topology optimization is run. And you can change it from auto. It actually does take a number. So first run, I'm going to give it a size of 0.2. This is a 3 by 10 beam, just to give you a point of reference for that.
And one of the things-- just kind of going through and playing around with this for different parts. I like that the minimum member size sort of gives me a little bit more internal structure so it's more distributed throughout my part, versus the higher member sizes, which gives me more bulk in more specific locations. And the reason I like having that more distributed structure is it accounts for different load scenarios that I might run into as far as that goes. So I have this one load case, but maybe I have another load case where I'm applying pressure to the top or maybe I'm pulling on it or something like that. And I kind of like how the minimum member size distributes that structure so that I can handle more load cases and different load paths than what I might be considering for the optimization process.
So that's what it looks like when I run it with the 0.2 member size. And what I'm going to do next is I'm going to run it with a 0.6 member size. And we'll see what we can get there. So with a 0.2, I end up with this internal truss structure sort of running through that. So you can see those are pretty well distributed throughout the length of this. And so now what I can do is I can specify a size again under the advanced settings. Let's move that to 0.6 and see what I end up with.
And I'll just move this along. And we're doing good on time, so we're all set here. And you can see I'm not getting that same-- I don't want to call it a spider web, but I'm not getting that same distribution of the thinner members through the structure. I'm getting fewer bulky members through the structure. And that may be fine, but going towards the left end, what if I had some sort of load at that left end that was pushing in on that side? I don't really have that same structure that I had in place for the 0.2 size. But you know what you're designing for, you know what the behavior is that you're looking for, so you can adjust that as needed.
And a lot of times what I'll do-- what I've found with doing that optimization. We're talking about the shell status, and you see sometimes a little bit of haze between what should be removed and what should stay. If you set that shell status range to 0.5 or 0.5 to 1, you typically get a better look at what needs to be there and what needs to cut out. It can kind of give you a more vivid display than if you were to just leave it at the default.
DAVID WEINBERG: Jeff, let me just comment on one thing about this. We didn't realize this would actually happen until we ran [INAUDIBLE]. See, in this case, we're setting the [INAUDIBLE]. We're saying, use this [INAUDIBLE], but then we're also saying, use this member size. And then we're saying, make it as thick as possible. Well, it's trying to do all these things.
Now what will happen sometimes [INAUDIBLE] is you could have your constraints could be diverging. In other words, you could be asking for something that it just can't do. So if we change the volume fraction, if we increased it, then you would see less of the green area and it'd be more black and white [INAUDIBLE]. So just remember that [INAUDIBLE].
JEFF STRAIN: Right. Sounds good. Now that little lock up that I had? It wiped out one of my saved slides, so I'm just going to play the media here. But this is a case where we want to take a look-- we specified a volume fraction. And that's all well and good, but you're typically designing for some sort of mechanical constraint, like displacement or stress, which is a capability that we also allow.
So in this case, we're going to limit our max stress and we're going to say, hey, you know what? Minimize the amount of material that I have. Minimize my mass while staying within a certain stress limit. And the way we do that is we set that generation constraint to VF stress. That means max stress available. We set our design constraint. In this example I'm aiming for 25.
Notice that if I don't type a decimal point that my OK button is grayed out. And the reason is that stress level, that stress value is a real number, not an integer. And in Nastran, just Nastran in general, you need to distinguish between real numbers and integers. So you have to type in their decimal point whenever you have a real number within these parameter settings.
Now I didn't really need it here, but I've seen that for the stress limits, it typically requires more iterations to converge than if you're doing a volume fraction. So you might want to anticipate that. And the way you can do that is by going to the Advanced Settings and just changing that top number-- that max number of iterations. So that's what I did here. As it turns out, I didn't really need to do that, but that's what I set up here.
And if I specify a max value of 25, this is the optimized structure I come up with. So I said, OK, let's aim for a 25 stress. And keep in mind that I do have a specified design region on this. So I'll take a look at the results, and what's going to allow us to verify this is if I set that type to equivalent stress and plot that. Now remember, I had these issues. I have a little point constraint. I have a little point load which gives me these artificial hot spots, but the nice thing about it is those are outside of my design region. But I still have to account for that.
So what I can do is, instead of looking at the entire contour, if we probe the optimized region or if we probe that design region and take a look at those stresses, you can see that they fall within that limit that I provided for that maximum stress target. And what I did was I just went back and I specified that range 0 to 25. Yep, I'm getting numbers around 25, a little bit less than 25 within that critical region.
DAVID WEINBERG: Jeff, one thing too I forgot to mention is that we don't look at the stresses [INAUDIBLE]. They're not part of it. [INAUDIBLE] so when you look at these models, it may be helpful to turn off the [INAUDIBLE] because any stress in there is going to be higher [INAUDIBLE] design [INAUDIBLE] control.
AUDIENCE: Yeah, and that's why it's a good idea to have separate design regions. Because one of the issues with FEA is no matter how hard you try, you're typically going to have some similarity, some artificial hot spot somewhere. So if you just remove that region from the optimized region, then it's going to be a lot easier for you to actually target those max stressed values. So this is where those separate design regions came in handy on this.
And what I did was I just did a rerun of this. I set my max stress to 35 KSI, or 35 PSI actually, and you can see it gave me much thinner members than when I limited it to 25. And again, I do a quick check of my equivalent stress. Do a little probe to see how it's looking along that stretch. And you can see those numbers 31, 32 kind of jumping up. So they're within that 35 PSI constraint.
And again, I can just go in, specify my max value of 35. And I want to make sure I have a fair chunk of red and orange around my stressed critical regions of that optimized structure. And that's what I have here. So that was our stress study. Let's do a study where we impose additive manufacturing constraints, as well as we impose a max displacement.
So I have this bulky block now. And now we've moved from 2D into 3D. I have this bulky block. It's constrained at the corners. That gray plate at the bottom I'm going to retain it. The bulkier blue mesh-- that is design region one and that's the area that I'm going to optimize on this particular study. And the nice thing about the bulky block? We can look into the guts of it and see what it looks like following this optimization. And we'll see how to do that. It can be kind of challenging to try and see what you're looking for, so we'll show you some tools that are available for that.
So what I'm going to do, again, for that criteria-- I want to set a max displacement, so I'm going to set that design constraint for that max displacement. We are going to limit it to 0.06. That ended up being a reasonable number for this particular study. And again, I turned the symmetry on. It's symmetric loads, it's symmetric constraints, but we have this tetrahedral mesh, so the mesh itself is not necessarily symmetric.
So it's a good idea, even if it looks like it's going to be symmetric inherently-- it's a good idea to go ahead and turn on the symmetry constraints regardless, especially when you are dealing with tetrahedral elements. So that forces that symmetry constraint on that. And again, don't forget that symmetry tolerance. Like I said, I found that if I don't change it from the default it doesn't quite give me what I'm looking for. And we'll go ahead and run this.
And one thing about this is I am going to follow this up with the additive manufacturing constraint. Here I am going on about the symmetry, blah, blah, blah. You'll see that we can only do one manufacturing constraint at a time, at least currently. But within the full blown Nastran we can do multiple manufacturing constraints all at once.
And I just did a little jump cut here for our final design. Like I said, you can see the outside of this. So it's kind of hard to see what's going on with the guts of this. And first thing I want to do-- I have this little graphics glitch. Solid status instead of shell status to see what this is going to look like. And then it's also a good idea, when you are dealing with 3D, to just play your ISO surfaces. And that gives you a good look inside of the structure to see what it's going to look like. More of a 3D view anterior view of it. And you can do section plots and so forth if you want to do that.
Now I'm going to show you something else that you can do to get a good look at what's going on. For every one these optimized runs, it's going to create an STL file of that optimized structure. And we can open that STL file in Inventor. So if you navigate down to your solution directory and set the file filter to STL files, you'll see that it's generated this STL file to reflect that optimized geometry. We can open that up and get a really good look at what our optimized geometry is going to look like.
Now the one snapshot that I want you to take in your brain-- this is with no additive manufacturing constraint. So you see these little arches in the interior? Let's see, there we go. There's like a little arch. And this is a bit darker on the screen, but look at that arch there. A lot of overhang. If we were to 3D print that we would need some support structure for that arch overhang that we have there. It's almost like a perfect arc, and that's pretty, but we need support structure for this if we 3D print it.
So let's go back and impose an additive manufacturing constraint on this. So again, we can do one manufacturing constraint at a time instead of Nastran in CAD. In Nastran itself all the manufacturing constraints. And I was just pointing out the z-axis. We're doing additive manufacturing in the positive z direction. So essentially, the z direction of your build you want to set the appropriate axis for that when you have that additive manufacturing constraint. So let's run that. Again, we'll do a jump cut.
And you can see on the exterior of the plot it looks a little bit different. You can see it's kind of floral in its appearance. Looks like a little flower. And again, we can go in and take a look at the interior structure. I'm going to go ahead and jump ahead. We've seen how to do those ISO surfaces. So let's go ahead and jump ahead to the geometry itself.
So we'll open up that STL file that was generated. And like I said, I hope you have a picture of the previous STL file that I showed you. Now let's look into the guts of this thing. And notice once I quit spinning that-- notice that instead of those round arches, we have these 45 degree rooftops. And since we have that 45 degree incline-- 45 degree is a good rule of thumb for where you don't need the supporting structure anymore. Since we do have that 45 degree rooftop, then this will allow us to 3D print this without having to have any additional support structure.
DAVID WEINBERG: Another thing too that's important to understand is that sometimes you can't have support structures. And it will do that. It will actually create a solid part, and it will carve out inside of it where you wouldn't be able to add a support structure. I mean, you could put a hole in and pull out the powder, but you won't be able to have a support structure in there. So it actually can design something that can be printed that has to be printed without support structures.
JEFF STRAIN: So this is our final exam here. We started off-- and I took a bracket that was just designed to try to minimize the weight of it. And I said, OK, let's compare what the designer came up with what the topology algorithm is going to come up with. So I created this bulky bracket using this original design to help me form it. And when I did a mass comparison or a volume comparison, the original bracket-- the material is about 38% of the bulky bracket volume.
And so I come from an aerospace background. I wanted to round this one way or the other. I have an aerospace background. If I say, well, let's target 40%, someone's going to yell at me and say, you're adding weight. You need to make it lighter. So I targeted 35% for my optimized design. So I'm going to make it a little bit lighter than what this original design looks like.
So let's take a look at our final workflow here. So the way I set it up was this orange region-- this is the area that I'm going to optimize. And then, I'm going to retain these blue regions. So I set the orange region up as having this idealization number one associated with it. And so I'm going to specify that when I do my parametric optimization. And then the holes-- those are all in idealization number two. So again, we'll go in. We'll just accept the default design region of number one.
And in this case, I'm keep it pretty basic. I'm just going to go for the volume fraction, and I'm going to tell it to do 0.35. Obviously, you want to do checks on the stress values and displacement values and make sure that those are going to be what you want to have them set as. So 35% of my material. And again, this is symmetric about the x, y plane. I have the x, y plane right down the middle of this, so I'm going to specify that constraint too. I mean, I really didn't have to, but I decided I'd like to retain that symmetry in the z direction about the x, y plane.
So I'll go ahead and turn that constraint on. And it's already set to x, y plane so we're all set there. The global coordinate system is going to work, so I'll just leave that at 0. And don't forget the 0.9, especially when you're dealing with tetrahedrons, so that SIMP tolerance. That can be something you experiment with, but that's the value that I've found works pretty reliably.
And then additional constraint. Without this constraint, I found that it was just all bulky around the edges and it just had a hole in the middle. And I was like, well, I want some interior structure because like I was mentioning earlier, I capture one load case or one load scenario with this, but I might have different load scenarios. I have my loads going diagonally along the bracket, but they could be going in different directions. I could be subjecting this face to some sort of bending load.
So I want to minimize my member size, or I want to reduce my members size and give me some sort of interior structure to support the various load scenarios I might run into. So that's why I set that up. This was sort of based on some additional studying I did in the background.
And this is probably something you want to experiment with too. You might run an optimization run. You look at your structure you think, well, I don't like this. I think I need to have more criteria. OK. If I specify a minimum member size of this value, then it gives me a more reasonable structure that I'm looking for.
So again, we'll just do a little jump cut to take a look at our results. And I think we've seen enough of this already, so I'm just going to move it ahead. I did not speed that up. So let's take a look at our final solution here. And again, 3D. We're looking at the outside. Something to keep in mind, as you might see something that doesn't look like it's connected, but once you look into the interior using those ISO surfaces or the STL geometry, more than likely it is hooking up. More than likely it is connecting.
Let's take a look at our final structure. So we have that in place. And if we take a look at the ISO surfaces, we see more of a 3D view of our interior geometry. And we can see that it's added these little struts inside the middle of this. We don't see what's retained but we see what's been itemized. So to get a better look at what that overall geometry is going to look like, let's go ahead and open up that STL file. And I like how this turned out.
So this is probably like more of a cast structure that I came up with. But you can see with that minimum member size that I specified, rather than having a bunch of bulk around the edges I did get some interior support, which is more of what I was looking for. And I apologize if this is darker than I anticipated on this screen. And we can see we also have these little slots cut through where we have our bolts or fasteners in place. And that was something that came over from the original design. I realized, OK, I don't need that material there.
Now you can play with this some more. I just did a basic study with the symmetry constraint, but you can go in and say, you know what? It looks like that original piece is milled. I think I'm going to be milling this piece so you can add that mill constraint on there. And again, don't forget the milling direction in that specification. You can specify additive manufacturing. You could specify extrusion. Well, the extrusion kind of messes you up because of that, but as long as you have that in a separate design region then you should be OK. So sort of toy around with those additional settings.
So are there any questions on what I was showing here? Yes.
AUDIENCE: Were you able to optimize the thermal stress?
JEFF STRAINS: Thermal stress?
DAVID WEINBERG: So when you say thermal stress, any of the loads that-- for example, you could run a steady state heat transfer or transient whatever. Take those temperatures and use them in In-CAD. I think we've had a class in that or shown it. Those loads will work here. Any static workloads will work.
In fact, you can have linear contact. You could have bolt preloads. All of that can be in the model. Anything that you have in linear statics or in normal modes, in those two solution sequences you can use topology optimization. Now the steady state heat transfer? We currently support that in the solver, so we actually support everything simultaneously too. You can run linear statics normal modes, linear buckling and steady state heat transfer all at the same time. And it will share the data back and forth and create a single compliant design.
That was something I showed last year. But it's not in In-CAD, and it's not even in Fusion or AGD yet. It's in the solver. I think the understanding that I have is that eventually the solver will be available in the collection. And that opens a huge door but it's at a higher level. I mean, you have to really be an analyst because you're going to have to edit files to do all these things.
AUDIENCE: [INAUDIBLE]
DAVID WEINBERG: Sure.
JEFF STRAIN: Yes?
AUDIENCE: [INAUDIBLE] multiple load cases?
DAVID WEINBERG: Yes. So multiple load cases are supported with I think all of the solutions that we can do here. It depends. So the objective is the big thing. If you're minimizing mass, multiple load cases are supported. If you're minimizing appliance, multiple load cases are supported. But let's say in the Nastran solution, the Nastran solver standalone, you go I want to minimize stress. That's your objective what you can do, then multiple load cases aren't supported.
AUDIENCE: [INAUDIBLE] stress of the [INAUDIBLE]. Kind of relates to [INAUDIBLE].
DAVID WEINBERG: See, what happens is if you imagine-- we're kind of out of time here but I'll go real quick. It's a global stress. It's like a P norm. It's like a representation of all the stresses in one value. It's kind of like the thing we did in Nastran where we have the stress error measure. The global value that represents all of them together so you can have one number that tells you. That's what it's like, and that's why we subdivide into individual regions within the design space. So we can have all the high stresses. There they're going to dominate that particular sub-region and then that'll control the stresses better.
AUDIENCE: [INAUDIBLE]
DAVID WEINBERG: Yeah, I think so. We'll talk about it after. If you have any questions, we'll stay here for a few more minutes and answer them. Thank you very much for coming. Appreciate it.
JEFF STRAIN: Thank you.
DAVID WEINBERG: Thanks.
[APPLAUSE]
Downloads
タグ
製品 | |
業種 | |
トピック |