Archive for the ‘COSMOS’ Category
A few days ago, my friend Chris Thompson, founder and owner of Appian Way Technologies, took a look at my model of the safety latch and suggested the following changes in order to improve the simulation study.
First of all, he added small fillets to the areas of the latch where stress concentrations are expected, at the “root” of the latch. He also “cut” the model in half, in order to take advantage of its symmetry through the use of symmetry constraints, which can be found among the Advanced Fixtures available in SolidWorks Simulation.
The symmetry fixtures will simulate the half of the latch that was cut from the model. Having this fixture in place will prevent any displacements across the plane of symmetry, but allow displacements on the plane of symmetry. The idea behind this is to reduce the number of equations necessary, as well as the solving time. In order to use this constraint, right click on Fixtures, and select Advanced Fixtures, Symmetry. He selected the left planar face of the latch to define the plane of symmetry, as you can see in the following image.
Chris also talked to me about the possibility of improving results by any of two options: manually refining the mesh and using mesh controls, or making use of the h-adaptive solution method, which is available only for static analysis and solid elements. Why is this going to improve results? Well, simply because any solution obtained through FEA will depend on our choices for discretization (a.k.a. meshing). Different choices for meshes will also cause different discretization errors, and we can estimate these errors by making systematic (planned and gradual) changes to the mesh and analyzing the impact of such changes in the results of our study. This is often called a convergence process. The way we can do this is by simply starting with a study that uses an average element size mesh, and then, in subsequent studies, gradually refine the global mesh (reduce the size of the elements), while keeping an eye on any changes in stress and strain in the whole model or in areas of interest (in this case the fillets). We’ll know the process is converging when any further refinement of the mesh produces insignificant changes in the magnitude of the results. This can be a long and tedious process.
Further manual refinement consists of applying mesh controls to the areas of interest in the model. Basically, mesh controls allow us to refine the mesh locally, only in those areas of interest where we expect high concentration of stress, while the rest of the model is meshed using a much larger element size, thus reducing the number of equations and time needed to solve the study, at least when compared to global mesh refining. Mesh controls can be applied to edges, vertices, faces or entire components of assemblies, and they need to be applied before meshing the entire model. The way to apply mesh controls is by right clicking on the mesh icon in the Simulation Study tree and select Apply Mesh Control.
Here in this image you can appreciate the way Chris applied a mesh control to that couple of fillets. He selected the two faces and used an element size of 0.029 in and a Ratio of 1.5. This Ratio parameter simply specifies the ratio between element sizes in consecutive transitional layers when going from the global mesh element size to the local mesh element size. A Ratio of 1.5 is usually default.
Chris also applied mesh controls to the curved face of the cutout you see on the bottom of the latch, where stresses also concentrate, and to that edge on the tip of the latch, that he created by means of a split line, and used to define the Use Reference Geometry Advanced Fixture that I applied in the original study to make sure the latch had that 5 mm displacement, remember?
He then meshed the rest of the model using the default mesh element size. Notice in this image the transition between mesh element sizes in different areas of the model.
So that’s the manual way to do it, but this refinement process can also be automated, by using the h-adaptive Solution Method. By the way, the “h” refers to the size of the element, so the convergence process through mesh refinement is actually called “h convergence process”, since the size of the elements is gradually reduced.
To make use of the h-adaptive solution method right click on the name of the study in the Simulation Study tree and select Properties, then select the Adaptive tab, and under Adaptive method option select h-adaptive. You have a few options to choose from here. From the help document, “Target Accuracy sets the accuracy level for the strain energy norm in the model, which is not the same as stress accuracy level.” A default value of 98% means that the convergence process will stop if the difference in the strain energy norm between two loops drops below 2%. Accuracy Bias instructs the solver how to concentrate on getting stress results: Local (all the way to the left) will cause the solver to concentrate on getting accurate peak stress results for those very localized areas with high strain energy errors (the fillets) by highly refining the mesh in those areas, while Global (all the way to the right) will cause the solver to ignore high, localized strain energy errors and concentrate on getting accurate overall stress results for the whole model. The maximum number of loops will tell the solver how many times to repeat the process of mesh refinement. Looping will end when Target Accuracy is achieved or when the maximum number of loops is reached. If Mesh Coarsening is selected, it simply means that during the mesh refining process our original mesh can actually be made coarser in some areas of the model, as the solver sees fit. This way the mesh will be refined only where needed.
This is the mesh that my friend Chris achieved for the latch by using the h-adaptive solution method with default values and a maximum number of loops of 3.
As my friend pointed out to me, the h-adaptive method is useful not only to save us from the tedious process of manual mesh refinement, but also for those times when we’re not exactly sure where the areas of high concentration of stresses will be.
Thanks, Chris!
Most of you have no idea and perhaps don’t even care about the fact that I adopted a little kitten about a month ago. What can I say? If you are a smart person, unlike moi, you’ll avoid visiting the pet store while the local cat rescue is showing off their adoptable cats. But I admit I would’ve probably ended up adopting the kitten anyway, eventually…
I named him Troubles because it suits his personality. He’s always in the mood for mischief and looking for ways to get into all sorts of places. Unfortunately for me, one of his favorite places to explore is inside my kitchen cupboards, where I keep the aluminum foil, the sugary cereal, and other goodies. Up until a couple of days ago, I used to think I had the situation under control thanks to the leftovers of the childproof latches I had installed on those cupboard doors to keep my own kids out of them. That’s when I contemplated in horror how the cat managed to push the latch down and swing the cupboard door open. Wait a minute? I thought those things were supposed to be hard to open even for a small child! Not that it requires a lot of effort, but, I mean, how strong is a cat, anyway?
Motivated by this question, I decided to make a simple model of a childproof latch and use SolidWorks Simulation to estimate the force that is required in order to push the latch down and open the cupboard door. First of all, the kind of latch I’m talking about is a simple vinyl one, such as the one in this picture.
The long narrow piece goes attached to the inside top corner of the cupboard door and there’s a small piece that goes secured to the frame of the cupboard, and that will serve as a stop for the latch. When the child attempts to open the door, the latch will get trapped by the other piece, allowing the door to open only partially, unless the latch is pushed down enough for its tip to pass underneath the other piece. I’m not so good at explaining this, but I’m sure most everyone has seen one of these before.
So this is what I did… I made a very simple model of the latch, as you see here. My model included some filleted edges, but they are not really necessary or useful for this analysis, as you will see in a bit, so I decided to suppress the fillets and run an analysis without them. Doing this usually makes the calculations easier and faster, and the results aren’t affected, unless, of course, there’s a concentration of stress in the corners and you are interested in knowing the stresses precisely in the filleted areas.
Next thing I needed to do was create a new Simulation study using this configuration without fillets, and establish some boundary conditions. I applied a fixed geometry fixture to the back of the rectangular plate, to simulate how it would be securely attached to the cupboard door, unable to rotate, slide or move in any direction. This is done simply by right clicking on Fixtures and selecting Fixed Geometry from the menu.
I applied a second fixture to this study. This fixture makes the study slightly unusual, because what I was used to do was to apply some boundary conditions (usually some fixed geometry) and then a force and that’s it, let SolidWorks calculate stresses, displacements, etc. due to that force. In this case, however, I’m trying to find the magnitude of a force that will generate a certain known displacement, and this second fixture is going to help me in that task.
I knew I needed the very tip of the latch to displace some 5 mm down, so I used an advanced fixture to specify this translation. If you right click on Fixtures and select Advanced Fixture, you’ll open a property manager where you’ll be able to choose from several different advanced fixtures available. In this case, I used Use Reference Geometry. At first, I made the mistake of thinking that what I wanted was for the that small rectangular face on the tip of the latch (shown in pink) to displace down 5 mm along the vertical face adjacent to it (shown in green), and so I used those two faces to define the fixture, as you can see in the image.
This, however, was a mistake because, after meshing the model and running the simulation, it produced the following result. Notice something funny about this image? Look closely. If you were paying attention, you probably noticed that both faces remain parallel to their original positions throughout the deformation process, which is not the way you expect the latch would deform when pushed down. You can see it clearly in the image, as the original model has been superimposed on the deformed one.
So, I tried again, only this time I used different entities to define the fixture. Instead of a face, I used an edge on the tip of the latch. I specified that I needed that edge to translate 5 mm down in a direction normal to the Top plane, as you can see in the following image.
Well, that seemed to do the trick! After meshing the model and running the simulation, I obtained results that were more like what I was expecting.
By the way, in case I haven’t mentioned it before, I don’t have Simulation Premium, I was running this analysis in SolidWorks Simulation, but even though SolidWorks Simulation is usually limited to the small displacement kind of analysis (linear analysis), where the deformation of the model is so small it really can’t be noticed by the naked eye, it is also possible to solve some large displacement, non-linear problems, as well, and obtain some accurate results, provided that there is no permanent deformation. This one is a large displacement kind of problem, since 5 mm is an extremely noticeable deformation, however, this deformation doesn’t appear to be permanent, since the maximum stress is way below the yield point for this material. To run an analysis making use of the large displacements option, simply right click the analysis name on the tree, select Properties, Options, and check the option Large Displacement, as you see in this image. However, if you don’t select this option yourself and, while running the simulation, SolidWorks Simulation detects that this is a problem where large displacements are involved, it will give you a warning about it and ask you about running the simulation using this option. Don’t ignore the warning, since it can lead to incorrect results.
Once the stress distribution was calculated, I was able to estimate the force necessary to push the latch down 5 mm by right clicking on the Results folder and selecting List Result Force from the menu. I selected the rectangular face of the tip (in green), clicked Update, and found that the magnitude of the force should be approximately 5.5 lbs, applied normal to this face.
I checked these findings by running an analysis the “typical” way, applying a force of 6 lbs normal to that same face, and the displacements plot showed the kind of large displacements I was expecting, once again with a maximum stress way below the yield point. One thing to notice here is that if you look at the stress distribution plot for this problem I just talked to you about, you’ll see that the magnitude of the stress appears to be higher on the particular edge that was used to define the second fixture, when compared to the stress on rest of the latch’s tip, that is. This, I think is a consequence of applying the fixture using the edge, and not necessarily relevant, but I could be wrong.
This is a picture of Master Andrew, my youngest son, ridding on one of his favorites at the park near our home, the “wild ducky”.
In the back you can also see his other favorite, the “bucking bronco”. The picture was taken a few years ago, when I used to carry my camera everywhere I went, and take a picture of every single smile, frown or bugger. Andy’s summer break started several weeks ago, so we’ve been to that park quite a bit already. He still likes the bronco, but I don’t take that many pictures anymore.
Anyway, watching him ride one of those got me thinking of running a little motion study, just for fun. That’s how I came up with my own version of the bucking bronco that you see here and used a linear spring to simulate the bouncing movement.
Granted, this is extremely simplified. The real bronco doesn’t only bounce up and down, but also bends back and forth and side to side, as the child pushes and pulls and shifts his or her weight during the ride. I definitely don’t think I can simulate that using this particular spring, because for once, this is not even a model of the spring, but only a simulation element, and also because bending the model of a spring in such a fashion would most likely involve some significant deformation and SolidWorks Motion considers all components in the motion study to be rigid. That would be a whole different kind of study!
In the meantime, this is what can be done with what’s available… I modeled the bronco as a single part just to make my life easier. As you can see, my assembly has only two components: the bronco and a square base that represents the ground where the ride will be attached to. The linear spring will be placed between these two parts, but keep in mind that it’s not a real component so the spring itself isn’t enough to guarantee the movement will always go according to plan.
While preparing my assembly for the study, I added a coincident mate between the front planes of both the bronco and the base, another coincident mate between the right planes of the same two components, and a distance mate to position the bottom of the bronco twenty inches above the base. When creating the new motion study, however, I eliminated the distance mate from the study, while still leaving it in the model. This is done easily from the Motion Manager, thanks to the fact that SolidWorks Motion allows you to have what it’s known as local mates. Local mates are mates that are added to or deleted from that motion study exclusively, without affecting the model or any other motion study you may have. To add, delete or suppress a local mate, always do it from the Motion Manager, while in the motion study tab of interest. If you then click on the model tab and look at the mates folder, you’ll see that they haven’t been affected by any local mates you applied in your study.
Now, about that spring… Adding a spring to a motion study is not so hard. Choose the motion study mode to be Motion Analysis and click on the spring icon to add a spring. You will see a property manager appear on the left, where you will have to specify certain parameters for your spring. The first one has to do with the kind of spring you want to add, which in this case is a linear spring. Next, you will have to specify the spring endpoints; you can do this by selecting a point, an edge or a face for each endpoint of the spring. I used a couple of faces. The idea behind applying those two coincident mates was to center the bottom of the bronco above the square base. This is because I used the rectangular face of the bronco’s bottom and the top face of the square base to define the endpoints of the linear spring. Each endpoint was positioned right at the center of each of the faces I chose. By making sure that the faces are centered with respect to each other, I also made sure that the spring would go straight along the Y axis.
As soon as the endpoints are specified, the free length of the spring is calculated as the distance between the two endpoints. If you leave it like that, it means your spring isn’t preloaded. You can change it, however. If you increase the value, then it means your spring is already under compression. If you decrease the value, then your spring is already under tension, because in that position it’s stretched out beyond its free length. This is important to keep in mind because the spring will tend to go back to its original free length and will then exert a force on the components that it connects, bringing them closer or pushing them apart. In my case, I wanted a spring that wasn’t preloaded and had a free length of twenty inches, and that was the purpose of the distance mate I added to the model in the beginning. I deleted this mate from the study, however, because it was simply to position the bronco.
The spring constant is part of a relationship that describes the dependency between force and displacement and in this case is 1, for a linear spring. The spring rate is also part of the same spring relationship between force and displacement and can be described, for simplicity, as the amount of force needed to compress a spring a certain distance, or more specifically, how many pounds of force are required to compress the spring by one inch. Springs that have a low spring rate are said to be soft, while springs that have a higher spring rate are said to be stiffer. This only means that it takes a bigger load to compress a stiffer spring by one inch than it would take to compress a softer spring. Here is the spring relationship for the linear spring:
F = -K(X-Xo) + Fo
Where:
X = Distance between the two locations that define the spring
Xo= Reference length (at preload)
Fo= Reference force of the spring (at preload)
K= spring stiffness coefficient also known as spring rate
F= spring force
Some springs have two values listed for their spring rate. This means that the spring starts at one rate and ends at a different rate throughout compression, like in the case of a step linear spring or a progressive spring. I believe it’s possible to simulate this kind of springs in Motion, but I haven’t tried.
Back to defining the spring for the bronco… Trying to figure out a spring rate for this example was a bit tricky at first. By default, Motion starts with a value of 1, but if you add gravity to this example and run the study, you’ll discover that with that value this spring isn’t even able to bounce back and/or support the weight of the bronco at all. It needs to be much stiffer than that. I ended up with a spring rate close to 10 and it seems pretty decent.
Under Display in the spring property manager you will be able to enter values for the coil diameter, the number of coils and the wire diameter. While these values have real impact on the spring rate in reality, here they are merely for display purposes and won’t affect the result of the simulation.
If you add gravity in the negative Y direction and run the simulation with this spring, you’ll see the bronco bouncing up and down by the effect of its own weight for what seems to be an eternity, but we all know that springs in the real world don’t bounce forever, because they all have some sort of structural damping built in and that’s what that damper field in the spring property manager is for.
For my bronco, I used a linear damper and played with different values between zero and one for the damping constant. By creating a plot of the displacement of the bronco in the Y direction against time (measured with respect to the global coordinate system), I was able to observe the effect of the damper constant in the simulation more clearly. This plot shows the displacement of the bronco when a damper constant of 0.1 is used.
This other plot shows the displacement of the bronco when a damper constant of 0.4 is used. As you can see, the higher the constant, the faster the bronco comes to a stop.
After the bronco had stopped completely, I added an action only force in the negative Y direction to the top of the seat to simulate a small child seating on the ride. This is the new displacement plot after running this simulation. Notice how the second time the bronco comes to a stop it does at an even lower position than before.
These studies are highly simplified, I know, but they still have some educational value. I hope to learn more about Motion and Simulation soon, or at least enough to come up with more complicated examples.
As I mention in my last post, I was encountering a series of issues and strange behavior when running some examples in Basic Motion. While I’m still waiting for what SolidWorks developers may have to say about this, I was very lucky to hear from someone that really knows his stuff when it comes to Animation and SolidWorks Motion. Jim Boland, who does not represent SolidWorks Corp., but has worked as a contractor for SolidWorks for many years in the development of training materials, including the original Animator training manual, took a look at my arbor press example and made a few comments about the issue that I find really interesting and think may be useful to others, as well. As I said before, these are Jim Boland’s thoughts and do not speak for SolidWorks Corp. or the software developers, but you may learn a thing or two from them. Trust me! So, here it goes…
What made me contact you was that the Arbor Press video you made was right along the lines of what I’m doing in many of the case studies in the book in that it shows multiple ways of achieving the desired results. In all the years of teaching SolidWorks, I always get the standard question of “What’s the right way to do this……?” My response has always been the “right way” is whatever way allows you to achieve your design intent and the “wrong way” is what keeps you from meeting the design intent. That said, among the many “right ways” some are better than others because they are easier to solve, more flexible to change, etc.
After just attacking the problem of the contacts in the Arbor Press head on, I finally took a step back and looked at the broader picture, so here are some thoughts.
- Why would you ever want to use Basic Motion instead of Animation for this video? Over the past 9 months, Jindrich and I have had lots of discussions about the three products and the correct use of each. If you look in the SolidWorks Motion book, there is a section on page 225 about Kinematic Systems vs. Dynamic Systems. To help clarify this issue, I’ve spent some time in the new version of the book talking about this difference and the fact that as a general run, you use Animation for Kinematic systems and Basic Motion for Dynamic systems. The Arbor Press is a Kinematic system because for every position of the rotating shaft, there is one, and only one, position for every other part. Always remember that our goal is to create an animation, NOT an analysis. If I use Animation instead of Basic Motion, it can be done in half a dozen different ways in a matter of seconds and I can be off to the next task.
- One confusing comment in the Help and tooltips is that you get a more realistic result with Basic Motion over Animation. I think that’s a simplification in that it is true for Dynamic systems but not for Kinematic systems. Look closely at the case with the linear motor. While motion stops at contact, there is visual penetration, which is unrealistic. In a simulation run, that’s expected because we are using a mesh to define the boundary and material properties are considered, so it is OK. In an animation it’s not OK, but I can easily fix it in an animation by turning off the drive motor at the correct time or drive the motion with a distance mate.
- What do we expect the results to be when using Basic Animation with a motor driving and Contact between the table and rack pad? Besides the two situations you did, where you use the rotary motor and linear motor, I also did two other studies where in one case I used the rotary motor but replace the rack and pinion mate with contact between the two gears. In the other I used a double rack where a linear motor drove the first rack which drove the pinion which drove the second rack. There were three different results.
- Rotary motor and rack and pinion mate. Problem solves but does not stop at contact.
- Linear motor, no mates involved. Problem solves and stops at contact.
- Rotary motor with gear contact. Solution stops (fails) at contact and timeline shows in red.
- Linear motor with double rack and pinion. Solution stops (fails) at contact and timeline shows in red.
The question is which is correct? I would think that the third and fourth cases are correct as we have an over defined system. The motor is told to keep driving but the contact prevents it. Kind of like putting a coincident and a non-zero distance mate between two faces. It cannot solve both cases simultaneously. Then the question becomes, if the third and fourth cases are correct, why does the linear motor case you did solve without error? Simple answer is I don’t know. That’s what the developers will have to tell us.
- When Basic Motion is used with a Dynamic system, contact is normally the result of a component rolling on another, or impact where both components are still free to move. When Basic Motion is used for a Kinematic system, we run into a problem because the parts are not free to move after collision. I think this is what gives us the two types of errors, either contact is ignored or the solution fails.
- If we were doing an analysis, we wouldn’t use a motor unless it had a control to turn it off at contact or at some load. Otherwise either the motor would burn out at contact or the gears would fail. In reality, we would define the analysis with a force rather than a motor. In that case the contact should stop the motion properly.
I guess the bad thing about being a self-learner is that many times you have to make do with whatever materials you may find available, and sometimes they may be a little outdated. For instance, I grabbed this COSMOSWorks Designer 2007 manual on eBay and was going through the lessons using SolidWorks Simulation (that’s the new name for COSMOSWorks in 2009). Except for a few differences here and there, everything was more or less the same, so I was doing great, until I arrived to the lesson about shell elements, that is. It took me a little while to figure out what to do, but it all made sense in the end, and so I decided to put together this little video comparing the way to create a mesh using shell elements in COSMOSWorks and in SolidWorks Simulation. This is for all those that may find it confusing going from one to the other for the first time… and also for those that bought the same manual I did. Hope it helps someone out there!
Just click on the image and it will take you straight to the video. I’m sorry that this video has no audio, but this blogger’s place is just absolutely noisy. Hope you still find it useful, though. It has plenty of notes!


























