Edit: This question was about how to get Openradioss to run on more threads and now I finally noticed that there's a thing in Options in Mecway to do that. Great!
Original text How do we get Openradioss to use more of the computers processing power? I think it needs to run multiple processors/CPUs/threads than it does.
I tried searching online but cannot seem to find a solution. I already have OMP_NUM_THREADS 20, as I have set previously when using CCX and I also set a variable "RADIOSS_ARGS" to the value "-np 10 -nt 2" but nothing changed. When running the crash test "openradioss test.liml" that I uploaded earlier, the CPU percentage is about 5,5 to 6% although the resource monitor say that it uses 4 CPUs and 1 thread, although it said 3 threads at one point.
In the file openradioss_test_0000.out, I read the following:
How do I see which contact types Mecway applies? I get edge-edge penetration of faces that are assigned to contact itself, which in the Altair PDF is stated as being a drawback of type 7 but that type 11 is capable of this, so now I need to find out how to apply type 11 and if it should have both type 11 and type 7 or only one of them in order to be able to fold in on itself.
Currently, I get self-contact by choosing all the faces as both the master and slave in one contact set.
It uses /INTER/TYPE24. To see the input file, click Monitor in the solver panel then Input file in the monitor.
I'm not sure if or how TYPE24 handles edge contact. To use TYPE11, you would have to define the contact manually in OpenRadioss -> Custom model definition.
Here's an example of what to put there for TYPE7:
#
# Contact interface between node group 2 and surface 3.
/INTER/TYPE7/1
1
2 3
#
The 2 and 3 refer to the 2nd and 3rd named selections in the order they appear in the outline tree. Here, 2 is a node selection and 3 is a face selection.
Aweswome! Thanks! I'll use this information to make my model better.
I'm also working on tuning a material model as I have found that the predefined aluminum model AA6082-T6 deviates a lot from our tensile test data. By entering a custom model, I have gotten the simulated data to agree with the experimental data. In the graph below, the predefined model is blue, the experimental data is green and the custom model is red.
In the appended files, I have applied the /FAIL/JOHNSON/1 failure card and it seems to work well to remove the elements as soon as they reach the failure criterion. In the graphical interface in Mecway, the elements are however still present but just wildly distorted, which I can see being a bit distracting. I don't know how OpenRadioss exports the information that these elements have been removed, but if it could be possible to omit them from the graphical interface, then that would be nice.
I'm also going to try damage law 27 /PLAS_BRIT, as it seems like it might give a more gradual failure by reducing the stiffness before the element is removed and as it only damages the element in tension, which is the behavior I want.
Here is an implementation of Law 27, which is the Johnson-Cook elastic-plastic model and with a brittle damage model, which linearly decreases the stress and also includes element deletion. It could probably be tuned so the curve would be even more gradual and follow the experimental data, but I suspect that that requires finer mesh and thus I think that this is fine for my needs for now.
EDIT: It does work. The attached file is removed and the working one is attached further down.
Original text: I've tried to mess a bit around with type 11 contact to test it but unfortunately, it doesn't work to use the edge selection tool in Mecway to create a named selection of edges and then assign the contact to that. It seems that Radioss expects a certain format of line segments with each segment having a start and end node. That will be very cumbersome to enter manually. The attached .liml file has the geometry ready for testing the type 11 (edge-edge) contact but the line segments haven't been defined. Perhaps one of you is a scripting wizard that can make a python script for making a line segment card?
The edge selections (edge_1 and edge_2) are working but it's failing because there aren't enough trailing blank lines in the /INTER/TYPE11 card. I found this error from the contact_11_test_0000.out file. Also I increased the displacement by 3000 so they'd make contact.
I'll try to do something about deleted elements. I'm pretty sure that information is in the solution.
Oh.. I hadn't noticed that the deformation scale factor was not 1. I had initially set the movement as scaled by the time (as I usually do when doing static nonlinear analysis with CCX) but then later turned down the simulation time to a small number to reduce the runtime and then they didn't move enough for the parts to come into contact.
I've found some more insights regarding this contact type: - It also works if both of the edges are part of the same named selection. So if we make one named selection called "both_edges", which is the first in the tree, then we can assign the contact to be between named selection 1 and 1. - It doesn't play well with deleted elements as the contact definition is not updated by the "new contour" of the part. The edge node that belongs to the deleted element(s) will be launched away and thus there's suddenly a hole in the edge that we defined the contact with. The contact does also give very concentrated loads, as two lines crossing is a point contact, so material models with damage modeling can be problematic with this contact type. - It seems to also work fine when the faces are assigned to a general type 24 contact.
For others: Here's the file where the contact actually works.
@Victor about deleted elements in OpenRadioss, the new version of CCX has a new damage initiation models with element deletion also, based on plastic strain, so maybe if you implement something to deal with those elements in Mecway, the feature could be used in both solvers.
Element deletion does bring more trouble... This simulation was expected to run for about 8-9 hours but after 41 hours, it still had only simulated a quarter of the wanted displacement. The deleted elements had completely exploded but the issue seems to be beyond graphical. The force result in the bottom of of the screenshot are very irregular and both the internal and kinetic energy has risen to extreme levels. In short: The simulation failed. A thing I need to check is if the contacts are still applied to deleted elements as that could give some insight into when element deletion may be problematic.
To try to remedy this, I am now trying with a different approach where the element damage and not the element deletion is responsible for the drop in load when the simulated tensile test specimen fails. I found this this description of the material law 27 where it stated that the default value of the damage factor was 0,999 and that this was also the value in an example of material parameters for some aluminum. Based on this, I have set the damage factor to this and increased the strain at which elements are deleted by a factor of 10 from ,4 to 4. The simulated tensile test data for this is shown in magenta (pink) in the graph below. This will overestimate the energy absorption relative to the red line, where elements are deleted but hopefully, it will be more stable.
This material law applies damage only in tension, so some elements can still have very high loads if they are loaded mostly in compression or shear. In the case of the tensile test, this results in one element "hanging on" as it is mostly deformed in shear.
The approach of applying 99,9% damage and only deleting elements if the strain is above 400% was successful. As far as I can tell from inspecting the element time steps, it didn't delete any elements but the highly strained elements have been damaged as they carry no load as seen by a very small von mises stress. The load curve is also fairly constant, although there's still more fine-tuning to do to get it within the limits we have set for ourselves. There's some parts where the loads are slightly too high just before a buckling is initiated and then quite a lot lower than my limit while that section deforms but I'm convinced that I can adjust that with holes and plate thicknesses now. I'm sorry for not posting a zoomed-in picture of the load curve so you can see exactly what I mean by this, as I think it is quite exciting to compare the deformed view to the load curve, but the detailed view of the load curve is not something that we want to share online.
I don't expect to post more about this project unless something unexpected comes up or I gain additional new insights in how to use OpenRadioss.
Thank you guys so much for all the info on OR -I am really enjoying using the element damage laws shown here- they will be invaluable for looking at failure mechanism for small metal parts. I am still struggling with the input process but these pages have help a lot. One aspect I would love to introduce is damping -i have read up about it but still have yet to make it work I've been trying something like this (see pic) any help would be great. The other trick I have yet to master is preload, i understand I need to give an section ID to get the preload card to work but again I've failed miserably so far! Any pointers or even better a small example file would be much appreciated.
Mecway 29 can generate /DAMP using Rayleigh damping in Loads & Constraints. You can apply it to elements (which get converted to nodes for OR) or the whole model.
fantastic - thanks for replying so quickly. I did not even think to try - i thought that it would only apply to the calculix analysis. Not only do i get what i was looking for really easily but i now get an insight into how its structured by looking in the .inp file
while looking into using element deletion in solids (which I now get the feeling is not possible with the starter pack -only the full version) I was playing around with some small simple blocks and came across some peculiar results. I was simple displacing one side of the cube while restraining the opposite face. I had three blocks set up identically and applied the same displacements. One had a elastic material property and the others had a PLAS_JOHNS property. While the elastic one behaved as I imagined it would the other two reacted rather oddly. Even more concerning was that when i reduce the poisons ration of the lower block to 0.0001 it appear to have no affect on the out come I now wonder if I have set up the material card for the PLAS_JOHNS correctly. I have attached the file in case someone can spot if I have made other input errors
With the plastic model I've looked at (PLAS_TAB), the Poisson's ratio only applies in the elastic region and it seems to act like nu=0.5 as soon as plasticity kicks in. CCX does that too. Perhaps that's what's happening here?
Applying the constant-volume assumption (nu=0,5) is how the area is obtained for calculating the true stress from the engineering stress, when tensile test data is treated, so it makes sense that that assumption is also applied to the plastic strain in the FEA solver. The paper DOI 10.1177/0309324716668674 attempts to obtain experimental data to validate the constant-volume assumption using digital image correlation and they find that outside of the necking region, the assumption is valid but that it is not valid inside of the necking zone.
With all this fine discussion on OpenRadioss I thought I'd throw in one that is puzzling me, hopefully someone has some input.
The attached model is a pinned hammer and a stop. I apply a torque as shown and accelerate the hammer to impact the stop. The hammer starts back a bit to get the proper acceleration at impact.
I would like to skip right to the "just before impact" position by rotating the hammer closer and using some sort of initialization that I am hoping exists that I don't know about.
Hi john - not sure this is what ur after, but I could not help but take a look. I removed the moment, rotated the hammer arm until it was close to the stop and applied an initial velocity (taken form the original solution at impact (about 3.8m/s) and applied that to the hammer head. This appeared to allow me to isolate the time of impact, but i was surprised at the difference in the two solutions -particularly in the accelerations - see pics Interestingly I got much higher accelerations from the original file provided than u appear to have shown in ur picture. I may have some sort of set up or units issue
@fatmac thanks for taking a swipe at this, unfortunately the "real" problem won't lend itself to a linear velocity. What I think I need is the equivalent of an ANSYS "DOMEGA or OMEGA" command to impose based on the center of rotation. You can ignore the scale on my drawing, not sure where that came from, my accels are the same as yours.
Note that the magnitude of the velocity should also be a function of position. Each node rotational velocity depends on the distance of the point to the axis of rotation. (The shortest distance). That " radio" of each node can be computed with the cross product.
That formula is equivalent to the v=wxr in 2D.
The further the node is to the axis of rotation the faster it travels although the whole body share a common w. Outer nodes must travel faster or the body would deform.
Vt can be assumed as zero if your object rigidly tied to the axis of rotation and the axis is not moving itself. On a Car’s wheel you would have both vt and vr.
I can get the wheel to spin (and not the block) if I specify a node list - 1 74 - but I am in the syntax swamp when I try to create a node set with grnod and use that list. Anyone?
Found the trick- create a node set in Mecway, run for a second and then look at the NUMBER of the node group created - in this case "1" for the wheel. Then use the /2 switch in the command to say "I am specifying a node set number".
@JohnM The numbering is the order that they appear in the tree, so to make sure that that doesn't change as you're adding more named selections, it is a good idea to add the number 1 to the start of the name of the named selection and 2 to the next named selection you're making and so on.
Comments
Original text
How do we get Openradioss to use more of the computers processing power? I think it needs to run multiple processors/CPUs/threads than it does.
I tried searching online but cannot seem to find a solution. I already have OMP_NUM_THREADS 20, as I have set previously when using CCX and I also set a variable "RADIOSS_ARGS" to the value "-np 10 -nt 2" but nothing changed. When running the crash test "openradioss test.liml" that I uploaded earlier, the CPU percentage is about 5,5 to 6% although the resource monitor say that it uses 4 CPUs and 1 thread, although it said 3 threads at one point.
In the file openradioss_test_0000.out, I read the following:
SPEED PARAMETERS
----------------
STARTER RUNNING ON. . . . . . . . . . . . . . . . . . 1 THREAD
NUMBER OF SPMD DOMAINS. . . . . . . . . . . . . . . . 1
NUMBER OF THREADS PER DOMAIN. . . . . . . . . . . . . 1
ARCHITECTURE OPTIMIZATION . . . . . . . . . . . . . . 22, win64
SIZE OF ELEMENT BUFFER. . . . . . . . . . . . . . . . 128
INFO : NUMBER OF SPMD DOMAIN AND THREADS DEFINED IN COMMAND LINE
/SPMD CARD PARAMETER ARE IGNORED
And in the file openradioss_test_0001.out, the start has the following:
NUMBER OF SPMD DOMAINS 1
NUMBER OF THREADS PER DOMAIN 1
NUMBER OF HMPP PROCESSES 1
I get edge-edge penetration of faces that are assigned to contact itself, which in the Altair PDF is stated as being a drawback of type 7 but that type 11 is capable of this, so now I need to find out how to apply type 11 and if it should have both type 11 and type 7 or only one of them in order to be able to fold in on itself.
Currently, I get self-contact by choosing all the faces as both the master and slave in one contact set.
I'm not sure if or how TYPE24 handles edge contact. To use TYPE11, you would have to define the contact manually in OpenRadioss -> Custom model definition.
Here's an example of what to put there for TYPE7: The 2 and 3 refer to the 2nd and 3rd named selections in the order they appear in the outline tree. Here, 2 is a node selection and 3 is a face selection.
I'm also working on tuning a material model as I have found that the predefined aluminum model AA6082-T6 deviates a lot from our tensile test data. By entering a custom model, I have gotten the simulated data to agree with the experimental data. In the graph below, the predefined model is blue, the experimental data is green and the custom model is red.
In the appended files, I have applied the /FAIL/JOHNSON/1 failure card and it seems to work well to remove the elements as soon as they reach the failure criterion. In the graphical interface in Mecway, the elements are however still present but just wildly distorted, which I can see being a bit distracting. I don't know how OpenRadioss exports the information that these elements have been removed, but if it could be possible to omit them from the graphical interface, then that would be nice.
I'm also going to try damage law 27 /PLAS_BRIT, as it seems like it might give a more gradual failure by reducing the stiffness before the element is removed and as it only damages the element in tension, which is the behavior I want.
Original text:
I've tried to mess a bit around with type 11 contact to test it but unfortunately, it doesn't work to use the edge selection tool in Mecway to create a named selection of edges and then assign the contact to that. It seems that Radioss expects a certain format of line segments with each segment having a start and end node. That will be very cumbersome to enter manually.
The attached .liml file has the geometry ready for testing the type 11 (edge-edge) contact but the line segments haven't been defined.
Perhaps one of you is a scripting wizard that can make a python script for making a line segment card?
https://help.altair.com/hwsolvers/rad/topics/solvers/rad/line_seg_starter_r.htm
I'll try to do something about deleted elements. I'm pretty sure that information is in the solution.
I had initially set the movement as scaled by the time (as I usually do when doing static nonlinear analysis with CCX) but then later turned down the simulation time to a small number to reduce the runtime and then they didn't move enough for the parts to come into contact.
I've found some more insights regarding this contact type:
- It also works if both of the edges are part of the same named selection. So if we make one named selection called "both_edges", which is the first in the tree, then we can assign the contact to be between named selection 1 and 1.
- It doesn't play well with deleted elements as the contact definition is not updated by the "new contour" of the part. The edge node that belongs to the deleted element(s) will be launched away and thus there's suddenly a hole in the edge that we defined the contact with. The contact does also give very concentrated loads, as two lines crossing is a point contact, so material models with damage modeling can be problematic with this contact type.
- It seems to also work fine when the faces are assigned to a general type 24 contact.
For others: Here's the file where the contact actually works.
A thing I need to check is if the contacts are still applied to deleted elements as that could give some insight into when element deletion may be problematic.
To try to remedy this, I am now trying with a different approach where the element damage and not the element deletion is responsible for the drop in load when the simulated tensile test specimen fails. I found this this description of the material law 27 where it stated that the default value of the damage factor was 0,999 and that this was also the value in an example of material parameters for some aluminum. Based on this, I have set the damage factor to this and increased the strain at which elements are deleted by a factor of 10 from ,4 to 4.
The simulated tensile test data for this is shown in magenta (pink) in the graph below. This will overestimate the energy absorption relative to the red line, where elements are deleted but hopefully, it will be more stable.
This material law applies damage only in tension, so some elements can still have very high loads if they are loaded mostly in compression or shear. In the case of the tensile test, this results in one element "hanging on" as it is mostly deformed in shear.
The load curve is also fairly constant, although there's still more fine-tuning to do to get it within the limits we have set for ourselves. There's some parts where the loads are slightly too high just before a buckling is initiated and then quite a lot lower than my limit while that section deforms but I'm convinced that I can adjust that with holes and plate thicknesses now.
I don't expect to post more about this project unless something unexpected comes up or I gain additional new insights in how to use OpenRadioss.
The attached model is a pinned hammer and a stop. I apply a torque as shown and accelerate the hammer to impact the stop. The hammer starts back a bit to get the proper acceleration at impact.
I would like to skip right to the "just before impact" position by rotating the hammer closer and using some sort of initialization that I am hoping exists that I don't know about.
Any ideas? Thanks!
You might also need to manually add an initial angular velocity (/INIVEL/ROT) on the rotational DOFs of the beams so everything's rotating together.
OpenRadioss also has /INIVEL/AXIS which looks like a more native way:
Each node rotational velocity depends on the distance of the point to the axis of rotation. (The shortest distance). That " radio" of each node can be computed with the cross product.
That formula is equivalent to the v=wxr in 2D.
The further the node is to the axis of rotation the faster it travels although the whole body share a common w. Outer nodes must travel faster or the body would deform.
Vt can be assumed as zero if your object rigidly tied to the axis of rotation and the axis is not moving itself. On a Car’s wheel you would have both vt and vr.